基于学习交流社区的自动化测试实现
一 项目介绍
项目名称
项目名称: 学习交流社区
项目介绍
项目介绍: 学习交流社区是一个基于Spring的前后端分离的在线论坛系统。使用了MySQL数据库来存储相关信息,项目完成后使用Xshell将其部署到云服务器上。
前端页面: 前端共由八个页面构成:注册页面,登录页面,首页,编辑帖子页面,帖子列表页面,个人中心页面,修改个人信息页面,帖子详情页面。
项目总结: 该项目可以实现通过发布帖子分享技术,并通过别人发布的帖子学习知识来进行技术交流,所以也可称之为技术交流社区。
项目功能
学习交流社区主要实现了以下功能:
用户注册,用户登录,编辑帖子,删除帖子,查看帖子,点赞帖子,站内信,编辑个人信息等功能。
项目展示
项目展示链接: 学习交流社区
项目源码链接: code论坛源码
二 测试用例设计和功能测试
1.测试用例设计
测试用例会从界面测试,功能测试,性能测试,易用性测试,安全性测试,兼容性测试六个方面进行设计。
①登录页面

②注册页面

③首页

④发布帖子页面

⑤修改个人信息页面

2.功能测试环境
测试环境: win11
项目运行: CentOS,maven,JDK1.8
浏览器: FireFox浏览器,Chrome浏览器
3.实际执行功能测试的部分操作
①登录页面
页面展示
给定一个正确的账号密码:
用户名:锦鲤
密码:123456
操作
| 输入用户名 | 输入密码 | 操作 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 空 | 空 | 点击登录 | 提示用户名不能为空,密码不能为空 | 提示用户名不能为空,密码不能为空 |
| 张三(错误的用户名) | 空 | 点击登录 | 提示用户名或密码错误 | 提示用户名或密码错误 |
| 锦鲤(正确的用户名) | 空 | 点击登录 | 提示密码不能为空 | 提示密码不能为空 |
| 锦鲤(正确的用户名) | 123(错误的密码) | 点击登录 | 提示用户名或密码错误 | 提示用户名或密码错误 |
| 锦鲤(正确的用户名) | 123456(正确的密码) | 点击登录 | 登录成功 | 成功登录 |
②注册页面
页面展示
操作
| 输入用户名 | 输入昵称 | 输入密码 | 输入确认密码 | 勾选同意条款 | 点击注册 | 预期结果 | 实际结果 |
|---|---|---|---|---|---|---|---|
| 空 | 空 | 空 | 空 | 不勾选 | 点击注册 | 提示都不能为空 | 每个输入框下面都提示不能为空 |
| 张三 | 空 | 空 | 空 | 不勾选 | 点击注册 | 提示除用户名外都不能为空 | 其余三个输入框下面提示不能为空 |
| 张三 | 张三 | 111 | 123 | 勾选 | 点击注册 | 提示密码和确认密码不相同 | 提示请检查确认密码 |
| 张三 | 张三 | 111 | 111 | 不勾选 | 点击注册 | 提示请勾选 | 勾选框标红,点击注册按钮无结果 |
| 张三 | 张三 | 111 | 111 | 勾选 | 点击注册 | 注册成功 | 注册成功,跳转到登录页面,弹出是否要保存密码框 |
③首页
页面展示
操作
| 操作 | 预期结果 | 实际结果 |
|---|---|---|
| 点击Java | 跳转至Java版块 | 跳转至Java版块 |
| 点击发布帖子 | 跳转至发布帖子页面 | 跳转至发布帖子页面 |
| 点击“任一帖子标题” | 跳转至帖子详情页 | 跳转至帖子详情页 |
| 点击月亮标志 | 切换为夜晚模式 | 切换为夜晚模式 |
| 点击铃铛标志 | 显示所有私信 | 显示所有私信 |
④发布帖子页面
页面展示
操作
| 输入标题 | 输入内容 | 操作 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 空 | 空 | 点击发布 | 提示请输入帖子标题 | 提示请输入帖子标题 |
| 测试标题 | 空 | 点击发布 | 提示请输入帖子内容 | 提示请输入帖子内容 |
| 测试标题 | 测试内容 | 点击发布 | 发布成功 | 发布成功,跳转至首页 |
⑤修改个人信息页面
页面展示
操作
| 操作 | 预期结果 | 实际结果 |
|---|---|---|
| 点击修改头像,上传头像 | 头像变为刚刚上传的图片 | 图片无变化(上传图片功能还未实现) |
| 输入邮箱地址,点击修改 | 修改成功 | 修改成功 |
| 输入电话号码,点击修改 | 修改成功 | 修改成功 |
| 输入错误原密码,点击提交修改 | 提示密码校验失败 | 提示密码校验失败 |
| 输入正确原密码,点击提交修改 | 修改成功 | 修改成功 |
三 接口测试
接口测试使用了:
- Junit单元测试
- 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
输入内容:你好
过程:

结果:操作成功

相关文章:
基于学习交流社区的自动化测试实现
一 项目介绍 项目名称 项目名称: 学习交流社区 项目介绍 项目介绍: 学习交流社区是一个基于Spring的前后端分离的在线论坛系统。使用了MySQL数据库来存储相关信息,项目完成后使用Xshell将其部署到云服务器上。 前端页面: 前端共由…...
2023-08-21力扣每日一题
链接: 2337. 移动片段得到字符串 题意: L可以和左边的_交换,R可以和右边的_交换,求判断A是否能通过交换(不限次数)变成B 解: 观察可知,如果存在RL,一定不能交换出LR,…...
对象存储服务-MinIO基本集成
是什么 MinIO 是一个高性能的分布式对象存储服务,适合存储非结构化数据,如图片,音频,视频,日志等。对象文件最大可以达到5TB。 安装启动 mkdir -p /usr/local/minio cd /usr/local/minio# 下载安装包 wget https:/…...
Yarn介绍及快速安装 - Debian/Ubuntu Linux
1.Yarn介绍 Yarn 是一个用于管理 JavaScript 包的快速、可靠和安全的包管理器。它是由 Facebook、Google、Exponent 和 Tilde 团队共同开发的,旨在提供比 npm 更快速、可靠的包管理体验。 以下是 Yarn 的一些主要特点和优势: 快速安装:Yarn…...
【新日语(2)】第10課 中国の生活に慣れるかどうか少し心配です
第10課 中国の生活に慣れるかどうか少し心配です 注释: ~かどうか:“是否”。 练习A 一、例句 田中さんは鈴木さんに、30分ぐらい遅れると言いました。 田中先生告诉铃木先生,他会迟到大约30分钟。 注释: &…...
Python 网页解析初级篇:BeautifulSoup库的入门使用
在Python的网络爬虫中,网页解析是一项重要的技术。而在众多的网页解析库中,BeautifulSoup库凭借其简单易用而广受欢迎。在本篇文章中,我们将学习BeautifulSoup库的基本用法。 一、BeautifulSoup的安装与基本使用 首先,我们需要使…...
Spring Schedular 定时任务
大家好 , 我是苏麟 , 今天带来定时任务的实现 . Spring网站 : 入门 |计划任务 (spring.io) 什么是定时任务 通过时间表达式来进行调度和执行的一类任务被称为定时任务 定时任务实现 1.Spring Schedule (Spring boot 默认整合了) 2.Quartz(独立于Spring 存在的定时任务框架…...
营业额统计
营业额统计 # 题目描述 Tiger 最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日&…...
使用lodash的throttle函数会触发两次
当使用lodash的throttle函数时会触发两次,分别在最开始和最后。 严格来说不算是bug,因为官方文档写的很清楚。throttle函数其实有三个参数: _.throttle(func, [wait0], [options]) func: 要节流的函数 wait: 等待时间 options: 选项 op…...
如何使用CSS实现一个瀑布流布局?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现瀑布流布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚…...
dfs之有重复字符串的排列组合
https://leetcode.cn/problems/permutation-ii-lcci/description/ ■ 题目描述 考古问题,假设以前的石碑被打碎成了很多块,每块上面都有一个或若干个字符,请你写个程序来把之前石碑上文字可能的组合全部写出来,按升序进行排列。…...
Java之抽象类
Java之抽象类 抽象类概念抽象类如何使用抽象类的特性 作者简介: zoro-1,目前大一,正在学习Java,数据结构等 作者主页:zoro-1的主页 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖Ὁ…...
“无Internet连接但是可以上网” 解决全流程
先说我的最后解决方法: 修改注册表下\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet下 的 EnableActiveProbing 项:将 1 改成 0 为什么要解决“无Internet连接但是可以上网”这个问题? 因为虽然可以上百…...
VS2022 CMake报错解决小结
目录 一、问题背景 二、问题分析 三、问题解决 一、问题背景 VS2022中能够跨平台的工程类型就是CMake项目,一套代码能跨windows/Linux/Mac多种操作系统。而实际使用时,发现相关资料比较少,需要摸索一下。 碰到的问题简述: 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,才是真正的报头长度,即TCP 报头最大长度,60…...
不负众望~历时4年修炼,这本册子终于成书了(文末赠书)
名字:阿玥的小东东 学习:Python、C/C 主页链接:阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 精进Spring Boot首选读物 “小册”变“大书”,彻底弄懂Spring Boot 全方位配套资源…...
【校招VIP】java语言考点之垃圾回收算法
考点介绍: 垃圾回收算法是必考题。GC中的垃圾指的是存在于内存中的、不会再被使用的对象。而垃圾回收就是把那些不再被使用的对象进行清除,收回占用的内存空间...... 『java语言考点之垃圾回收算法』相关题目及解析内容可点击文章末尾链接查看ÿ…...
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) 功能:利用插值方法,对输入的张量数组进行上\下采样操作,换句话说就是科学合理地改变数组的尺…...
Windows驱动签名实战:从证书获取到安装包封装的完整指南
1. 项目概述:为什么驱动签名是硬件开发者的“必修课” 如果你做过硬件开发,尤其是涉及USB、串口这类需要与Windows系统深度交互的设备,那你一定对那个黄色的“Windows安全”警告弹窗不陌生。用户插上你的设备,系统提示“正在安装…...
怎样快速抠图?2026实测5种方法对比与工具推荐
如果你还在用Photoshop钢笔工具一像素一像素地磨图片,那你可能错过了太多新方法。从AI智能识别到手机一键处理,抠图这件事在2026年早已改头换面。这篇文章会带你盘点最实用的5种抠图方法,从快速出图到专业级精修,总有一款适合你。…...
本周 GitHub 最热项目全解析!Star History 2026年第20周(5月8日-14日)排行榜深度盘点
统计周期:2026年5月8日 – 5月14日 数据来源:star-history.com 前言 每周的 GitHub Trending 就像开发者世界的晴雨表——什么技术方向最火、哪些工具最受追捧、哪个生态最具活力,都能从这份排行榜上一目了然。本周(2026年5月8日…...
SIM800C模块硬件连接避坑指南:从USB-TTL调试到STM32F407实战接线
SIM800C模块硬件连接避坑指南:从USB-TTL调试到STM32F407实战接线 在嵌入式开发中,GSM模块的硬件连接往往是项目成功的第一步,也是最容易踩坑的环节。SIM800C作为一款经典的工业级GSM/GPRS模块,其稳定性和性价比备受开发者青睐&…...
用STM32F103和电位器给你的无刷电机做个“油门”:手把手实现ADC调速(附完整代码)
用STM32F103和电位器打造无刷电机调速系统:从硬件连接到代码实战 旋转电位器旋钮就能精准控制无刷电机转速,这种直观的交互方式在机器人、无人机和工业控制领域有着广泛应用。本文将带您从零开始,基于STM32F103微控制器构建完整的电位器调速…...
PowerPoint插件latex-ptt安装踩坑全记录:从‘无法下载’到‘点击报错’的保姆级排雷指南
LaTeX公式输入神器latex-ppt插件安装与排雷全攻略 在学术报告、技术分享或教学演示中,数学公式的呈现质量直接影响专业形象。虽然PowerPoint作为主流演示工具广受欢迎,但其原生公式编辑器功能有限,无法满足科研工作者对LaTeX公式排版的需求。…...
AI写作检测规避:原理、工具与实践指南
1. 项目概述:为什么我们需要“AI写作检测规避”工具?在内容创作领域,尤其是技术博客、学术写作和日常办公文档中,AI辅助写作工具已经变得无处不在。它们能快速生成草稿、润色语言、甚至构建复杂的技术方案。然而,随之而…...
Denoiser项目快速入门:5分钟完成语音降噪环境搭建
Denoiser项目快速入门:5分钟完成语音降噪环境搭建 【免费下载链接】denoiser Real Time Speech Enhancement in the Waveform Domain (Interspeech 2020)We provide a PyTorch implementation of the paper Real Time Speech Enhancement in the Waveform Domain. I…...
网盘直链解析工具终极指南:如何3分钟实现9大网盘下载加速
网盘直链解析工具终极指南:如何3分钟实现9大网盘下载加速 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...
FPGA开发板GT远端环回测试:原理、配置与调试实战指南
1. 项目概述:为什么我们需要在开发板上做GT远端环回测试?如果你是一位硬件工程师或者FPGA开发者,最近正在调试一块带有高速串行收发器(比如Xilinx的GTX/GTH/GTY,或者Intel的Transceiver)的开发板࿰…...












