【Java项目测试报告】:在线音乐平台(Online-Music)
项目已部署:
在线音乐服务器http://123.249.78.82:9090/list.html
一、项目背景
1.1 测试目标
验证音乐播放器功能完整性,确保用户管理、音乐管理、播放控制、收藏功能等核心模块符合需求。
1.2 项目技术栈
后端:Spring Boot/Spring MVC
数据库:MySQL
前端:原生 HTML/CSS/AJAX
1.3 文档引用
需求文档:
在线音乐平台需求文档https://blog.csdn.net/qq_75234423/article/details/148196809?spm=1001.2014.3001.5501
接口文档:
在线音乐平台接口设计文档https://blog.csdn.net/qq_75234423/article/details/148201033?spm=1001.2014.3001.5502
1.4 项目源码
GitHub 仓库:
在线音乐平台源码https://gitee.com/LGY-beats/java-learning-code/tree/master/Online-Music
1.5 测试环境
类别 | 配置/版本 |
---|---|
硬件 | Lenovo Y9000P 2022 |
手动测试浏览器 | Microsoft Edge 125.0.2535.85 |
开发工具 | IntelliJ IDEA 2023.3.1 |
自动化测试工具 | Selenium 4.21.0 |
操作系统 | Windows 11 家庭中文版 |
自动化测试浏览器 | Google Chrome 137.0.7151.41 |
二、测试分类
2.1 需求分析测试
用户管理模块
需求覆盖
注册/登录功能已实现,密码使用 BCrypt 加密存储(代码验证通过)。
缺陷:
密码复杂度未校验(如长度、特殊字符)。
缺少重复密码输入和验证码功能。
改进建议:
增加密码强度规则(如至少 8 位,含字母和数字)。
注册页添加“确认密码”输入框及验证码校验。
音乐管理模块
需求覆盖性
支持单曲删除、批量删除。
上传功能限制为 MP3 格式,校验文件大小(限制 30MB)。
喜欢列表模块
需求覆盖性
收藏功能已实现
移除收藏支持单次操作
搜索模块
需求覆盖性
支持模糊查询
缺陷:未优化大量数据下的查询性能。
改进建议:
后端实现分页查询
2.2 接口测试:
Postman 在线音乐平台全接口测试https://lgy-576434.postman.co/workspace/lgy's-Workspace~3c22ce88-cfe3-4359-8d22-8ff145ef9ba5/collection/44003634-05e3f0d5-386c-4860-8674-1059a4110032?action=share&creator=44003634
接口测试总结:
接口测试数量:11
接口覆盖率:100%
接口通过率:100%,无明显缺陷,主要功能全部符合预期
接口测试工具:postman 11.40.5 win64
测试时间:2025.5.10~2025.5.12
测试方式:设计每个接口,点击测试
2.3 功能测试
测试用例:
登录注册模块
主界面:
个人收藏界面:
音乐上传界面:
手动测试系统:
游客模式:

登录模式:
注册页面
登陆失败
登录成功:
模糊查询:
收藏成功:
删除歌曲:
喜欢列表:
下载正常
移除歌曲:
上传页面:
重复上传提示:
上传成功:
功能测试总结:
测试用例:55
功能覆盖率:95%
测试时间:2025.5.24.15:00 ~ 2025.5.24.16:08
测试方式:手动测试
通过率:100%,没有明显功能性错误
2.4 UI自动化测试
自动化测试覆盖模块:
注册页面,登录页面,游客模式,播放主页面,个人收藏页面,音乐上传页面
2.3.2 自动化测试源码链接:
Online-Music 自动测试源码
部分自动化代码展示:
工具类:
public class Utils {public static WebDriver driver = null;public WebDriverWait wait = null;//调用driver对象public Utils(String url){driver = createDriver();driver.get(url);wait = new WebDriverWait(driver, Duration.ofSeconds(3));}private WebDriver createDriver() {//获取驱动对象if(driver==null){//下载驱动//WebDriverManager.chromedriver().setup();//使用本地驱动System.setProperty("webdriver.chrome.driver", "D:/chromedriver-win64 (4)/chromedriver-win64/chromedriver.exe"); // 替换为你的实际路径//添加配置,允许访问所有网站ChromeOptions options = new ChromeOptions();options.addArguments("--remote-allow-origins=*");//创建驱动对象driver = new ChromeDriver(options);}//显示等待wait = new WebDriverWait(driver, Duration.ofSeconds(5));return driver;}/*** 屏幕截图* 屏幕截图文件目录* ./src/test/java/images/* /2025-04-29/* /test01-20123010.png* /test02-20133510.png* /2025-04-30/* /test01-20123010.png* * /test02-20133510.png**str:方法名/类名*/public void ScreenShot(String str) throws IOException {//年月日SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");//时分秒SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");String dirTime = sim1.format(System.currentTimeMillis());String fileTime = sim2.format(System.currentTimeMillis());//图片文件名:路径+图片名称// ./src/test/java/images/2025-04-29/test01-20123010.pngString filename = "./src/test/java/images/" + dirTime + "/" + str + "-" + fileTime + ".png";//获取WebDriver实例的截图并保存为文件File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);//将截图文件复制到目标文件路径FileUtils.copyFile(srcFile,new File(filename));}/*** 销毁driver对象——关闭浏览器*/public static void quit(){if(driver != null)driver.quit();}}
播放器主页面:
public class MainPage extends Utils {public static String url = "http://123.249.78.82:9090/list.html";public MainPage() {super(url);}public void Search() throws IOException {driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("一");driver.findElement(By.cssSelector("#submit1")).click();wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(2)")));ScreenShot("主页面模糊搜索结果");}public void ListenMusic() throws IOException, InterruptedException {wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(4)")));driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(4) > button")).click();Thread.sleep(15000);ScreenShot("主页面播放音乐");}public void SearchNull() throws IOException {driver.findElement(By.cssSelector("#exampleInputName2")).clear();driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("");driver.findElement(By.cssSelector("#submit1")).click();wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(2)")));ScreenShot("主页面空搜索结果");}public void AddLoveMusic() throws IOException {driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(2)")).click();ScreenShot("主页面收藏音乐");// 切换到警告弹窗并接受它——这表示确认弹窗并继续执行后续操作Alert alert = driver.switchTo().alert();alert.accept();}public void ToLoveMusic() throws IOException {driver.findElement(By.cssSelector("#body > nav > ul > li:nth-child(1) > a")).click();wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(1)")));ScreenShot("收藏音乐列表");}
}
UI自动化测试总结:
测试用例:20
功能覆盖率:80%
框架:Selenium 4.21.0 + Maven
通过率:100%,没有发现功能性bug
测试时间:2025.5.25 15:00 ~ 2025.5.25. 23:10
自动化屏幕关键截图:(通过截图与预期效果比较) 完全一致
2.5 Jmeter 梯度压力测试
线程组设计:
测试结果:
Jmeter 梯度压力测试总结:
测试用例:4
高频接口覆盖率:90%
软件:Apache Jmeter 5.5
通过率:100%,没有发现功能性bug
测试时间:2025.5.26 9:00 ~ 2025.5.25. 12:00
结果分析: 系统在测试过程中表现稳定,未出现异常错误。TPS 在高负载下维持在较高水平,系统具有较好的并发处理能力。
性能瓶颈:
登录接口的响应时间在某些时刻显著增加,可能是性能瓶颈所在
三、测试结论与建议
3.1 测试结果汇总
测试汇总:
接口测试:
接口测试数量:11
接口覆盖率:100%
接口通过率:100%,无明显缺陷,主要功能全部符合预期
接口测试工具:postman 11.40.5 win64
测试时间:2025.5.10~2025.5.12
测试方式:设计每个接口,点击测试
功能测试:
测试用例:55
功能覆盖率:95%
测试时间:2025.5.24.15:00 ~ 2025.5.24.16:08
测试方式:手动测试
通过率:100%,没有明显功能性错误
UI自动化测试:
测试用例:20
功能覆盖率:80%
框架:Selenium 4.21.0 + Maven
通过率:100%,没有发现功能性bug
测试时间:2025.5.25 15:00 ~ 2025.5.25. 23:10
自动化屏幕关键截图:已归档至源码代码包
Jmeter 梯度压力测试:
测试用例:4
高频接口覆盖率:90%
软件:Apache Jmeter 5.5
通过率:100%,没有发现功能性bug
测试时间:2025.5.26 9:00 ~ 2025.5.25. 12:00
结论:
需求覆盖性:
核心功能(用户管理、音乐管理、播放控制、收藏功能)已基本实现,但部分需求细节(如密码复杂度校验、分页查询)未完全覆盖。
接口覆盖率与功能覆盖率分别达到 100% 和 95%,满足核心场景需求。
测试通过率:
接口测试、功能测试、自动化测试、性能测试通过率均为 100%,未发现功能性缺陷。
性能表现:
高并发下系统稳定性良好,TPS 表现优异,但登录接口存在潜在性能瓶颈(响应时间波动)。
主要缺陷:
安全性:用户注册缺乏密码复杂度校验与验证码功能。
用户体验:音乐搜索未支持分页查询,批量操作交互未优化。
3.2 通过项
功能实现:
用户注册/登录(BCrypt 加密)、音乐上传(格式与大小校验)、收藏/移除、模糊搜索等功能均符合预期。
接口质量:
11 个接口全部通过测试,逻辑正确且数据交互稳定。
自动化与性能基准:
自动化测试用例执行结果与预期一致,性能测试 TPS 满足高负载场景需求。
3.3 风险项
安全风险:
高优先级:密码未强制复杂度规则(如长度、特殊字符),易导致弱密码漏洞。
中优先级:注册流程无验证码,存在暴力破解或自动化注册风险。
性能风险:
登录接口响应时间波动可能影响高并发场景用户体验。
用户体验风险:
音乐搜索未分页,数据量大时页面加载缓慢。
批量删除操作缺乏二次确认,易误删数据。
3.4 上线建议
优化项:
音乐管理模块批量操作增加二次确认弹窗,防止误操作。
性能调优:
对登录接口进行性能分析(如 SQL 查询优化、缓存机制)。
上线评估:
核心功能稳定且通过全量测试,主功能测试通过,风险可控,建议按计划上线