当前位置: 首页 > news >正文

基于学习交流社区的自动化测试实现

一 项目介绍


项目名称

项目名称: 学习交流社区

项目介绍

项目介绍: 学习交流社区是一个基于Spring的前后端分离的在线论坛系统。使用了MySQL数据库来存储相关信息,项目完成后使用Xshell将其部署到云服务器上。

前端页面: 前端共由八个页面构成:注册页面,登录页面,首页,编辑帖子页面,帖子列表页面,个人中心页面,修改个人信息页面,帖子详情页面。

项目总结: 该项目可以实现通过发布帖子分享技术,并通过别人发布的帖子学习知识来进行技术交流,所以也可称之为技术交流社区。

项目功能

学习交流社区主要实现了以下功能
用户注册,用户登录,编辑帖子,删除帖子,查看帖子,点赞帖子,站内信,编辑个人信息等功能。

项目展示

项目展示链接: 学习交流社区
项目源码链接: code论坛源码


二 测试用例设计和功能测试


1.测试用例设计

测试用例会从界面测试,功能测试,性能测试,易用性测试,安全性测试,兼容性测试六个方面进行设计。

①登录页面

在这里插入图片描述

②注册页面

在这里插入图片描述

③首页

在这里插入图片描述

④发布帖子页面

在这里插入图片描述

⑤修改个人信息页面

在这里插入图片描述

2.功能测试环境

测试环境: win11
项目运行: CentOS,maven,JDK1.8
浏览器: FireFox浏览器,Chrome浏览器

3.实际执行功能测试的部分操作

①登录页面

页面展示
在这里插入图片描述

给定一个正确的账号密码:
用户名:锦鲤
密码:123456

操作

输入用户名输入密码操作预期结果实际结果
点击登录提示用户名不能为空,密码不能为空提示用户名不能为空,密码不能为空
张三(错误的用户名)点击登录提示用户名或密码错误提示用户名或密码错误
锦鲤(正确的用户名)点击登录提示密码不能为空提示密码不能为空
锦鲤(正确的用户名)123(错误的密码)点击登录提示用户名或密码错误提示用户名或密码错误
锦鲤(正确的用户名)123456(正确的密码)点击登录登录成功成功登录

②注册页面

页面展示
在这里插入图片描述

操作

输入用户名输入昵称输入密码输入确认密码勾选同意条款点击注册预期结果实际结果
不勾选点击注册提示都不能为空每个输入框下面都提示不能为空
张三不勾选点击注册提示除用户名外都不能为空其余三个输入框下面提示不能为空
张三张三111123勾选点击注册提示密码和确认密码不相同提示请检查确认密码
张三张三111111不勾选点击注册提示请勾选勾选框标红,点击注册按钮无结果
张三张三111111勾选点击注册注册成功注册成功,跳转到登录页面,弹出是否要保存密码框

③首页

页面展示

在这里插入图片描述

操作

操作预期结果实际结果
点击Java跳转至Java版块跳转至Java版块
点击发布帖子跳转至发布帖子页面跳转至发布帖子页面
点击“任一帖子标题”跳转至帖子详情页跳转至帖子详情页
点击月亮标志切换为夜晚模式切换为夜晚模式
点击铃铛标志显示所有私信显示所有私信

④发布帖子页面

页面展示
在这里插入图片描述

操作

输入标题输入内容操作预期结果实际结果
点击发布提示请输入帖子标题提示请输入帖子标题
测试标题点击发布提示请输入帖子内容提示请输入帖子内容
测试标题测试内容点击发布发布成功发布成功,跳转至首页

⑤修改个人信息页面

页面展示
在这里插入图片描述

操作

操作预期结果实际结果
点击修改头像,上传头像头像变为刚刚上传的图片图片无变化(上传图片功能还未实现)
输入邮箱地址,点击修改修改成功修改成功
输入电话号码,点击修改修改成功修改成功
输入错误原密码,点击提交修改提示密码校验失败提示密码校验失败
输入正确原密码,点击提交修改修改成功修改成功

三 接口测试


接口测试使用了:

  1. Junit单元测试
  2. Springfox Swagger 生成 API,完成 API 单元测试

1.Junit单元测试

单元测试类:

在这里插入图片描述

这里只列举用户接口和帖子接口的单元测试,其余的欢迎参考我的gitee链接:

code论坛

①用户接口

这里列举了注册,登录和修改个人信息的测试代码。

注册方法测试:

    @Test@Transactionalvoid createNormalUser() {// 构造User对象User user = new User();user.setUsername("boy1");user.setNickname("boy");// 定义一个原始的密码String password = "123456";// 生成盐String salt = UUIDUtil.UUID_32();// 生成密码的密文String ciphertext = MD5Util.md5Salt(password, salt);// 设置加密后的密码user.setPassword(ciphertext);// 设置盐user.setSalt(salt);// 调用Service层的方法userService.createNormalUser(user);// 打印结果System.out.println(user);}

修改个人信息测试:

    @Test@Transactionalvoid modifyInfo() {User user = new User();user.setId(3l); // 用户Iduser.setUsername("testUser"); // 登录名user.setNickname("testUser1"); // 昵称user.setGender(null); // 性别user.setEmail("qqq@qq.com");// 邮箱user.setPhoneNum("15366668888"); // 电话user.setRemark("测试"); // 个人简介// 调用ServiceuserService.modifyInfo(user);}

登录测试:

    @Testvoid login() {User user = userService.login("bitboy", "123456");System.out.println(user);}

②帖子接口

这里列举了发布帖子,查询所有帖子列表,删除帖子,点赞帖子的测试代码。

发布帖子测试:

    @Test@Transactionalvoid create() {Article article = new Article();article.setUserId(2L); // boyarticle.setBoardId(1L); // java版块article.setTitle("单元测试");article.setContent("测试内容");articleService.create(article);System.out.println("发贴成功");}

查询所有帖子列表:

    @Testvoid selectAll() throws JsonProcessingException {// 调用ServiceList<Article> articles = articleService.selectAll();// 转换成JSON字符串并且打印System.out.println(objectMapper.writeValueAsString(articles));}

点赞帖子和删除帖子方法测试:

    @Test@Transactionalvoid thumbsUpById() {articleService.thumbsUpById(1L);System.out.println("点赞成功");}@Test@Transactionalvoid deleteById() {articleService.deleteById(11l);System.out.println("删除成功");}

2.Swagger API测试

测试链接:code论坛系统API

接口测试版块总览

在这里插入图片描述

回复接口:

在这里插入图片描述

帖子接口:

在这里插入图片描述

版块接口:

在这里插入图片描述

用户接口:

在这里插入图片描述

站内信接口:

在这里插入图片描述

⭐⭐⭐这里每个接口展示一个功能的测试过程。

①用户接口

功能:用户登录

账号:锦鲤
密码:123456

测试过程:
666666666666666666666
在这里插入图片描述

结果:登录成功
在这里插入图片描述

①帖子接口

功能:获取用户列子列表

输入用户id:1

测试过程:

在这里插入图片描述

结果:获取成功,用户id为1的用户共发布一篇文章

在这里插入图片描述

①回复接口

功能:发布回复

输入发布回复的帖子id:19
输入回复内容:支持好文!!!

过程:

在这里插入图片描述

结果:回复成功

在这里插入图片描述

①版块接口

功能:获取首页版块列表

过程:直接点击Execute

在这里插入图片描述

结果:操作成功

在这里插入图片描述

①站内信接口

功能:发送站内信

输入接收用户id:2
输入内容:你好

过程:

在这里插入图片描述

结果:操作成功

在这里插入图片描述


相关文章:

基于学习交流社区的自动化测试实现

一 项目介绍 项目名称 项目名称&#xff1a; 学习交流社区 项目介绍 项目介绍&#xff1a; 学习交流社区是一个基于Spring的前后端分离的在线论坛系统。使用了MySQL数据库来存储相关信息&#xff0c;项目完成后使用Xshell将其部署到云服务器上。 前端页面&#xff1a; 前端共由…...

2023-08-21力扣每日一题

链接&#xff1a; 2337. 移动片段得到字符串 题意&#xff1a; L可以和左边的_交换&#xff0c;R可以和右边的_交换&#xff0c;求判断A是否能通过交换&#xff08;不限次数&#xff09;变成B 解&#xff1a; 观察可知&#xff0c;如果存在RL,一定不能交换出LR&#xff0c…...

对象存储服务-MinIO基本集成

是什么 MinIO 是一个高性能的分布式对象存储服务&#xff0c;适合存储非结构化数据&#xff0c;如图片&#xff0c;音频&#xff0c;视频&#xff0c;日志等。对象文件最大可以达到5TB。 安装启动 mkdir -p /usr/local/minio cd /usr/local/minio# 下载安装包 wget https:/…...

Yarn介绍及快速安装 - Debian/Ubuntu Linux

1.Yarn介绍 Yarn 是一个用于管理 JavaScript 包的快速、可靠和安全的包管理器。它是由 Facebook、Google、Exponent 和 Tilde 团队共同开发的&#xff0c;旨在提供比 npm 更快速、可靠的包管理体验。 以下是 Yarn 的一些主要特点和优势&#xff1a; 快速安装&#xff1a;Yarn…...

【新日语(2)】第10課 中国の生活に慣れるかどうか少し心配です

第10課 中国の生活に慣れるかどうか少し心配です 注释&#xff1a; &#xff5e;かどうか&#xff1a;“是否”。 练习A 一、例句 田中さんは鈴木さんに、30分ぐらい遅れると言いました。 田中先生告诉铃木先生&#xff0c;他会迟到大约30分钟。 注释&#xff1a; &…...

Python 网页解析初级篇:BeautifulSoup库的入门使用

在Python的网络爬虫中&#xff0c;网页解析是一项重要的技术。而在众多的网页解析库中&#xff0c;BeautifulSoup库凭借其简单易用而广受欢迎。在本篇文章中&#xff0c;我们将学习BeautifulSoup库的基本用法。 一、BeautifulSoup的安装与基本使用 首先&#xff0c;我们需要使…...

Spring Schedular 定时任务

大家好 , 我是苏麟 , 今天带来定时任务的实现 . Spring网站 : 入门 |计划任务 (spring.io) 什么是定时任务 通过时间表达式来进行调度和执行的一类任务被称为定时任务 定时任务实现 1.Spring Schedule (Spring boot 默认整合了) 2.Quartz(独立于Spring 存在的定时任务框架…...

营业额统计

营业额统计 # 题目描述 Tiger 最近被公司升任为营业部经理&#xff0c;他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本&#xff0c;账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日&…...

使用lodash的throttle函数会触发两次

当使用lodash的throttle函数时会触发两次&#xff0c;分别在最开始和最后。 严格来说不算是bug&#xff0c;因为官方文档写的很清楚。throttle函数其实有三个参数&#xff1a; _.throttle(func, [wait0], [options]) func: 要节流的函数 wait: 等待时间 options: 选项 op…...

如何使用CSS实现一个瀑布流布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现瀑布流布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚…...

dfs之有重复字符串的排列组合

https://leetcode.cn/problems/permutation-ii-lcci/description/ ■ 题目描述 考古问题&#xff0c;假设以前的石碑被打碎成了很多块&#xff0c;每块上面都有一个或若干个字符&#xff0c;请你写个程序来把之前石碑上文字可能的组合全部写出来&#xff0c;按升序进行排列。…...

Java之抽象类

Java之抽象类 抽象类概念抽象类如何使用抽象类的特性 作者简介&#xff1a; zoro-1&#xff0c;目前大一&#xff0c;正在学习Java&#xff0c;数据结构等 作者主页&#xff1a;zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f49…...

“无Internet连接但是可以上网” 解决全流程

先说我的最后解决方法&#xff1a; 修改注册表下\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet下 的 EnableActiveProbing 项&#xff1a;将 1 改成 0 为什么要解决“无Internet连接但是可以上网”这个问题&#xff1f; 因为虽然可以上百…...

VS2022 CMake报错解决小结

目录 一、问题背景 二、问题分析 三、问题解决 一、问题背景 VS2022中能够跨平台的工程类型就是CMake项目&#xff0c;一套代码能跨windows/Linux/Mac多种操作系统。而实际使用时&#xff0c;发现相关资料比较少&#xff0c;需要摸索一下。 碰到的问题简述&#xff1a; 1、C…...

java之webservice_aegis.xml学习

开门见山,直奔主题,让我们先来看一个接口: public interface UserInfo {public Collection findRoleInfosByUserID(String userUniqueID);public User findUserInfosByUserID(String userUniqueID);public String test();} 观察此接口,首先我们看findRoleInfosByUserID方法…...

总结 TCP 协议的相关特性

TCP协议段格式: 如图, 端口号: 是其中一个重要的部分,知道端口号才能确认数据交给哪个应用程序(端口号属于传输层的概念). 4位首部长度:4bit表示的范围是0->15,在此处,单位是"4字节",因此,将这里的数值 * 4&#xff0c;才是真正的报头长度,即TCP 报头最大长度,60…...

不负众望~历时4年修炼,这本册子终于成书了(文末赠书)

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、C/C 主页链接&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 精进Spring Boot首选读物 “小册”变“大书”&#xff0c;彻底弄懂Spring Boot 全方位配套资源…...

【校招VIP】java语言考点之垃圾回收算法

考点介绍&#xff1a; 垃圾回收算法是必考题。GC中的垃圾指的是存在于内存中的、不会再被使用的对象。而垃圾回收就是把那些不再被使用的对象进行清除&#xff0c;收回占用的内存空间...... 『java语言考点之垃圾回收算法』相关题目及解析内容可点击文章末尾链接查看&#xff…...

juc概述和Lock接口

目录 一、什么是JUC 1、JUC概述 2、进程与线程 3、线程的状态 4、wait/sleep 的区别 5、并发与并行 6、管程 7、用户线程和守护线程 二、Lock接口 1、Synchronized 使用synchronized实现售票案例 使用synchronized实现增减变量操作 2、什么是 Lock 买票例子使用lo…...

图像降采样的计算原理:F.interpolate INTER_AREA

一、F.interpolate——数组采样操作 torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode=nearest, align_corners=None, recompute_scale_factor=None) 功能:利用插值方法,对输入的张量数组进行上\下采样操作,换句话说就是科学合理地改变数组的尺…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...