一、项目背景
1.1 测试目标
验证音乐播放器功能完整性,确保用户管理、音乐管理、播放控制、收藏功能等核心模块符合需求。
1.2 项目技术栈
后端:Spring Boot/Spring MVC
数据库:MySQL
前端:原生 HTML/CSS/AJAX
1.3 项目源码
gitee链接:
1.4 项目使用链接
1.5 测试文档
类别 | 配置/版本 |
硬件 | Lenovo Y7000 2021 |
手动测试浏览器 | Microsoft Edge 136.0.3240.76 |
开发工具 | IntelliJ IDEA 2023.3.1 |
自动化测试工具 | Selenium 4.21.0 |
操作系统 | Windows 11 家庭中文版 |
自动化测试浏览器 | Microsoft Edge 136.0.3240.76 |
二、测试分类
1、测试功能
测试用例:
1.1 登录模块
1.2 注册模块
1.3 音乐播放器主界面模块
1.4 个人喜欢模块
1.5 上传音乐模块
2、手动测试系统
1.1 登录界面
1.2 注册页面
1.3 主界面
1.4 上传页面
1.5 喜欢列表
1.6 增加喜欢
1.7 删除歌曲
功能测试总结:
测试用例:55
功能覆盖率:97%
测试时间:2025-05-31 10.20 ~ 2025-05-31 12.20
测试方式:手动测试
通过率:100%,没有明显功能性错误
3、自动化测试
自动化测试覆盖模块:
注册页面,登录页面,游客模式,播放主页面,个人收藏页面,音乐上传页面
自动化测试源码链接:
部分自动化代码展示:
工具类:
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.png
String 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("收藏音乐列表");
}
}
自动化测试总结:
测试用例:20
功能覆盖率:80%
框架:Selenium 4.21.0 + Maven
通过率:100%,没有发现功能性bug
测试时间:2025.05.31 15:00 ~ 2025.05.31 23:10
自动化屏幕关键截图:(通过截图与预期效果比较) 完全一致
4、Jmeter梯度压力测试
线程组设计:
测试结果:
Jmeter性能压力测试报告总结:
测试用例:4
高频接口覆盖率:90%
软件:Apache Jmeter 5.5
通过率:100%,没有发现功能性bug
测试时间:2025.06.01 7:35 ~ 2025.06.01 10:55
结果分析: 系统在测试过程中表现稳定,未出现异常错误。TPS 在高负载下维持在较高水平,系统具有较好的并发处理能力。
性能瓶颈:
登录接口的响应时间在某些时刻显著增加,可能是性能瓶颈所在
三、测试结果评价
1、主功能测试通过,项目可以上线。
2、项目上线后高优观察线上数据,查看线上用户操作日志,及时跟进用户反馈。