【测试报告】SoundWave(Java+Selenium+Jmeter自动化测试)
一、项目背景
随着数字音乐内容的爆炸式增长,用户对于便捷、高效的音乐管理与播放需求日益增强。传统的本地音乐管理方式已无法满足多设备同步、在线分享与个性化推荐等现代需求。为此,我们设计并开发了一款基于Spring Boot框架的SoundWave,旨在为用户提供一个轻量级、可扩展的在线音乐管理与播放平台。
二、测试环境
硬件: Dell G15 5511
操作系统: Windows 11 家庭中文版
浏览器: Google Chrome 138.0.7204.169(正式版本) (64 位)测试工具: 自动化测试 Selenium,性能测试 Jmeter
自动化脚本运行环境: IntelliJ IDEA 2025.1.4
三、测试分类
1、功能测试用例与非功能测试用例
功能测试、界面测试、性能测试、兼容性测试、易用性测试、安全测试、网络测试
2.测试内容
(1)登陆页面
测试用例:
测试用例编号 | 操作 | 账号 | 密码 | 预期结果 |
1 | 输入正常的账号密码 | zhangsan | 123456 | 登录成功 |
2 | 输入错误的账号和密码 | tt | 333 | 登录失败,提示错误 |
3 | 输入正确的账号和错误的密码 | zhangsan | 332 | 登录失败,提示错误 |
4 | 输入错误的账号和正确的密码 | tt | 123456 | 登录失败,提示错误 |
5 | 不填写账号和密码 | 登录失败,提示错误 | ||
6 | 填写账号不填写密码 | zhangsan | 登录失败,提示错误 | |
7 | 不填写账号填写密码 | 123456 | 登录失败,提示错误 |
测试结果:
①测试用例:
结果:登录成功
②测试用例:
结果:登录失败,提示错误信息
③测试用例:
结果:登录失败,提示错误信息
④测试用例:
结果:登录失败,提示错误信息
⑤测试用例:
结果:登录失败,提示错误信息
⑥测试用例:
结果:登录失败,提示错误信息
⑦测试用例:
结果:登录失败,提示错误信息
(2)注册页面
测试用例:
测试用例编号 | 操作 | 账号 | 密码 | 预期结果 |
1 | 输入正常的账号密码 | zhangzifeng | 123456 | 注册成功 |
2 | 输入存在的账号 | zhangsan | 123456 | 注册失败,提示错误 |
3 | 输入正确的账号和错误的密码 | admin | 332 | 注册失败,提示错误 |
4 | 输入错误的账号和正确的密码 | 1 | 123456 | 注册失败,提示错误 |
5 | 不填写账号和密码 | 注册失败,提示错误 | ||
6 | 填写账号不填写密码 | zhangsan | 注册失败,提示错误 | |
7 | 不填写账号填写密码 | 123456 | 注册失败,提示错误 |
①测试用例:
结果:注册成功,可登录
②测试用例:
结果:注册失败,提示错误信息
③测试用例:
结果:注册失败,提示错误信息
④测试用例:
预期结果:注册失败
实际结果:注册成功
⑤测试用例:
结果:注册失败,提示错误信息
⑥测试用例:
结果:注册失败,提示错误信息
⑦测试用例:
结果:注册失败,提示错误信息
(3)列表页面
1.删除
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 未登录删除一首歌 | 无法删除 | 无法删除 |
3 | 未登录批量删除>=2首歌 | 无法删除 | 无法删除 |
4 | 删除一首歌 | 删除成功 | 删除成功 |
5 | 批量删除>=2首歌 | 删除成功 | 删除成功 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:无法删除
③测试用例:
结果:无法删除
④测试用例:
结果:成功删除
⑤测试用例:
结果:删除成功
2.搜索
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 未登录进行搜索 | 无法搜索 | 无法搜索 |
3 | 已登录进行模糊搜索歌名 | 正常搜索 | 正常搜索 |
4 | 已登录进行搜索歌手 | 正常搜索 | 无法搜索 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:无法搜索
③测试用例:
结果:搜索成功
④测试用例:
结果:无法搜索
3.收藏
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 未登录进行收藏 | 无法收藏 | 无法收藏 |
3 | 已登录进行收藏 | 成功收藏 | 成功收藏 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:无法收藏
③测试用例:
结果:收藏成功
4.播放
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 未登录进行播放音乐 | 无法播放 | 无法播放 |
3 | 已登录进行播放音乐 | 成功播放 | 正常播放 |
4 | 已登录拖拽音乐进度 | 正常拖拽 | 无法拖拽 |
5 | 已登录切换音乐 | 正常切歌 | 无法切歌 |
6 | 缩小音乐导航栏 | 正常缩放 | 正常缩放 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:无法播放音乐
③测试用例:
结果:成功播放
④测试用例:
结果:只要拖拽就重新播放
⑤测试用例:
结果:无法切歌
⑥测试用例:
结果:缩小成功
(4)收藏页面
1.播放
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 进行播放音乐 | 成功播放 | 正常播放 |
3 | 拖拽音乐进度 | 正常拖拽 | 无法拖拽 |
4 | 切换音乐 | 正常切歌 | 无法切歌 |
5 | 缩小音乐导航栏 | 正常缩放 | 正常缩放 |
6 | 暂定音乐 | 正常暂停 | 正常暂停 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:可以播放音乐
③测试用例:
结果:无法拖拽,只要拖拽就重头播放音乐
④测试用例:
结果:无法切换音乐
⑤测试用例:
结果:正常缩小
⑥测试用例:
结果:可以暂停
2.搜索
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 进行模糊搜索歌名 | 正常搜索 | 正常搜索 |
3 | 进行搜索歌手 | 正常搜索 | 无法搜索 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:正常搜索
③测试用例:
结果:无法搜索
3.移除收藏
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 移除收藏 | 正常移除 | 正常移除 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:移除成功
4.回到首页
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 点返回首页 | 跳转首页 | 跳转首页 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:跳转成功
(5)上传音乐
测试用例编号 | 操作 | 预期结果 | 实际结果 |
1 | 未登录返回登录login.html | 跳转login.html | 未跳转login.html,界面显示空白 |
2 | 上传音乐,输入歌手名 | 上传成功 | 上传成功 |
3 | 上传音乐,不输入歌手名 | 上传失败 | 上传失败 |
4 | 不上传音乐,输入歌手名 | 上传失败 | 上传失败 |
5 | 上传已有音乐,并输入歌手名 | 上传失败 | 上传失败 |
①测试用例:
结果:未跳转,无法进行访问list.html
②测试用例:
结果:上传成功
③测试用例:
结果:上传失败,提示输入歌手名
④测试用例:
结果:无法上传,无法点击上传按钮
⑤测试用例:
结果:上传失败
四、自动化测试(Java)
五、性能测试Jmeter (接口与梯度压力测试)
使用JMeter工具对论坛系统的接口进行简单的性能测试:
(1) 接口测试
1.线程组
2.HTTP请求默认值
3.HTTP Cookie管理器
4.固定定时器
5.CSV 数据文件设置
用户不同用户登录
6.登录
7.查询全部音乐
8.查询音乐
9.播放音乐
10.删除音乐
11.批量删除音乐
12.注册
13.收藏音乐
14.上传音乐
15.查询全部收藏音乐
16.查询指定收藏音乐
17.取消收藏音乐
18.查看结果树
(2)压力梯度测试
1.SoundWave Stepping Thread Group
2.可视化图
3.随之时间推移
4.吞吐量
5.响应时间
5.结论
JMeter 性能测试报告,需从 错误率、响应时间、吞吐量、负载变化 等维度展开,结合图表和统计数据定位系统瓶颈:
一、核心统计数据概览
指标 数值 分析重点 总请求数 832 - 失败请求数 140(错误率 22.15%) 错误率过高,需排查根源 平均响应时间 1545.42 ms 长尾响应明显(最大 37273 ms) 主要错误类型 500 错误(129 次,81.43%)、连接超时(10 次,7.14%) 服务端内部错误 + 网络 / 连接池问题 二、关键图表分析
1. 负载与响应趋势(Over Time 模块)
- Active Threads Over Time:线程数 阶梯式上升(压力逐渐增大),模拟真实场景的负载变化。
- Response Times Over Time:多个接口(如 “上传音乐”“上传音乐 - 0”)的 平均响应时间随负载上升而飙升,说明系统在高并发下性能退化严重。
- Connect Time Over Time:连接时间随负载增加而延长,暗示 服务端连接池饱和或网络瓶颈。
2. 吞吐量变化(Throughput 模块)
- Hits/Codes/Transactions Per Second:随时间推移,成功请求数(200 码)持续下降,失败请求占比上升,表明系统 处理能力随负载增加而衰减。
3. 响应时间分布(Response Times 模块)
- Response Time Percentiles:高百分位(如 99th)响应时间极高(部分接口超 3000 ms),说明 大量请求经历严重延迟(长尾效应)。
- Response Time Overview:超过 500 ms 的请求占比高,且存在错误请求,用户体验差。
4. 错误详情(Dashboard 统计)
- 500 错误:集中在 删除音乐、获取收藏音乐、批量删除音乐 等接口,推测 服务端业务逻辑异常或数据库操作失败。
- 连接超时(Non HTTP ConnectException):提示
Connection timed out
,可能是 服务端连接池已满,无法处理新连接。三、接口级性能分析
接口 失败率 平均响应时间 典型问题 删除音乐 56.36% 1278.27 ms 500 错误占比极高 获取收藏音乐 56.76% 1099.84 ms 500 错误 + 连接超时 批量删除音乐 40.00% 131.32 ms 500 错误为主 上传音乐 6.25% 1918.43 ms 长尾响应(最大 37273 ms) 登录 1.75% 1157.66 ms 偶尔出现超慢响应(21049 ms) 四、性能瓶颈与优化建议
1. 服务端稳定性问题
- 500 错误排查:检查服务端日志,定位接口的业务逻辑异常(如 SQL 错误、参数校验失败)。
- 连接池优化:调整服务端连接池大小(如 Tomcat 线程池),避免高并发下连接超时。
2. 响应时间长尾问题
- 慢操作剖析:对响应时间长的接口(如上传播音乐)进行 代码 Profiling,排查慢 SQL、IO 阻塞或锁竞争。
- 异步化改造:对耗时操作(如上传播)采用异步处理,避免阻塞线程。
3. 高失败率接口修复
- 隔离测试:针对删除、收藏等接口,单独压测并检查依赖(如数据库、缓存)是否正常。
- 重试机制:对非幂等接口增加重试策略,降低瞬时错误对业务的影响。
4. 压测策略优化
- 拐点分析:通过调整线程组,找到系统 吞吐量拐点(如并发多少时性能骤降),明确容量上限。
- 监控补充:压测时增加服务端监控(CPU、内存、数据库负载),辅助定位资源瓶颈。
综上,系统在 高并发下稳定性不足、响应延迟明显,需从 服务端错误排查、连接池优化、慢操作治理 三方面突破,结合监控和压测迭代优化。
六、测试结果评估
1、主线功能测试通过,项目可以上线
2、项目上线后观察线上数据