在线音乐平台测试报告

一、项目背景

1.1 测试目标

验证音乐播放器功能完整性,确保用户管理、音乐管理、播放控制、收藏功能等核心模块符合需求。

1.2 项目技术栈

后端:Spring Boot/Spring MVC

数据库:MySQL

前端:原生 HTML/CSS/AJAX

1.3 项目源码

gitee链接:

小加油家/Java_house - 码云 - 开源中国

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、自动化测试

自动化测试覆盖模块:

注册页面,登录页面,游客模式,播放主页面,个人收藏页面,音乐上传页面

自动化测试源码链接:

小加油家/Java_house - Gitee.com

部分自动化代码展示:

工具类:

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、项目上线后高优观察线上数据,查看线上用户操作日志,及时跟进用户反馈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值