【项目】音乐播放器测试报告

一、项目背景

本项目是一个基于SSM框架实现的音乐播放器系统。用户可以通过简洁直观的界面浏览、搜索和播放音乐。系统具备完善的音乐管理功能,可对音乐文件进行收藏。SSM 框架确保了系统的稳定性和高效性,为用户带来流畅的使用体验。无论是音乐爱好者还是普通用户,都能在这个音乐播放器系统中享受美妙的音乐之旅

二、项目功能

1、登录功能:用户可按正常的用户名和密码进行登录,进入到音乐列表页面
2、音乐列表页面:用户可实时查看当前网站所有上传的音乐,提供音乐播放、音乐收藏和音乐删除或者批量删除功能,此外该页面还提供了音乐搜索(关键字搜索)的功能。
3、音乐收藏页面:用户可查看当前自己所收藏的所有上传音乐,并进行音乐的播放。
4、音乐上传:用户可上传本地音乐到服务器,同时系统会将该音乐相关信息存储到对应数据库中
5、音乐播放:借助SewisePlayer播放插件实现对用户上传音乐的播放

三、测试目的

尽可能地发现程序中存在的问题,保证该项目网站的基本功能正常使用,满足用户的基本需求,提供良好的用户体验。

四、测试

在这里插入图片描述

功能测试

在这里插入图片描述

登录界面

在这里插入图片描述

正常登录 -用户名密码都正确

在这里插入图片描述
在这里插入图片描述

异常登录 -用户名或密码错误

在这里插入图片描述

查询音乐

在这里插入图片描述
在这里插入图片描述

模糊查询

在这里插入图片描述

这里查询一颗

在这里插入图片描述

也是可以查到的

上传文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

喜欢功能

在这里插入图片描述

当音乐已经喜欢将不能再次收藏

在这里插入图片描述

删除功能

点击删除键

在这里插入图片描述

批量删除

在这里插入图片描述
在这里插入图片描述

音乐播放

在这里插入图片描述

自动化测试

一共四个类
在这里插入图片描述

一个公共类
两个功能类
一个启动类

公共类:创建了驱动对象以及自动化过程中的截图

package common;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;

/**
 * @author:niuniu
 * @create:2024-10-04 20:15
 */
public class Utils {
    public static WebDriver driver;
    public static WebDriver createDriver() {
        if (driver == null) {
            WebDriverManager.chromedriver().setup();
            ChromeOptions options = new ChromeOptions();
            //允许访问所有的连接
            options.addArguments("--remote-allow-origins=*");
            driver = new ChromeDriver(options);
            //等待
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
        }
        return driver;
    }
    public Utils(String url) {
        //调用driver对象
        driver = createDriver();
        //访问Url
        driver.get(url);
    }
    public void getScreenShot(String str) throws IOException {
        // ./src/test/image/
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");
        String dirTime = sim1.format(System.currentTimeMillis());
        String fileTime = sim2.format(System.currentTimeMillis());
        String filename = "./src/test/image/"+dirTime + "/" + str + "-" + fileTime+".png";
        //System.out.println(filename);
        File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(srcFile,new File(filename));
    }
}

音乐的登陆页面 测试了正常登录和异常登录

package tests;
import common.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;

import java.io.IOException;

/**
 * @author:niuniu
 * @create:2024-10-04 21:53
 */
public class LoginPage extends Utils {
    public static String url = "http://localhost:8080/login.html";
    public LoginPage() {
        super(url);
    }

    /**
     * 检查页面是否加载成功
     * @throws InterruptedException
     */
    public void loginPageRight() throws InterruptedException {
        //通过查看页面元素是否存在来检查页面成功与否
        driver.findElement(By.cssSelector("body > div > div > h3"));
        Thread.sleep(3000);
    }
    //检查登录功能
    public void LoginSuc() throws InterruptedException, IOException {
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        driver.findElement(By.cssSelector("#username")).sendKeys("gb");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
        driver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(100);
        Alert alert = driver.switchTo().alert();
        alert.accept();
        //检查登录结果
        //driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.desc"));
        String expect = driver.getTitle();
        //Thread.sleep(3000);
        System.out.println(expect);
        getScreenShot(getClass().getName());
        assert expect.equals("在线音乐服务器");
        driver.navigate().back();

        //driver.quit();
    }
    //测试登录失败
    public void LoginFail() throws InterruptedException {
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
        driver.navigate().refresh();
        driver.findElement(By.cssSelector("#username")).sendKeys("gb");
        driver.findElement(By.cssSelector("#password")).sendKeys("12345");
        driver.findElement(By.cssSelector("#submit")).click();
        Thread.sleep(100);
        driver.switchTo().alert().accept();
        //Thread.sleep(3000);

        //driver.quit();
    }
}

这里表示音乐播放等页面的各种功能测试

package tests;

import common.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;

import java.io.IOException;

/**
 * @author:niuniu
 * @create:2024-10-04 21:54
 */
public class ListPage extends Utils {
    public static String url = "http://localhost:8080/list.html";
    public ListPage() {
        super(url);
    }

    /**
     * 上传文件测试
     * @throws IOException
     */
    public void addSong() throws IOException {
        driver.findElement(By.cssSelector("body > div.container > div:nth-child(3) > a:nth-child(2)")).click();
        driver.findElement(By.cssSelector("body > form > input[type=file]:nth-child(1)")).sendKeys("D:\\桌面\\使一颗心脏免于哀伤.mp3");
        driver.findElement(By.cssSelector("body > form > label > input[type=text]")).sendKeys("知更鸟");
        driver.findElement(By.cssSelector("body > form > input[type=submit]:nth-child(3)")).click();
        String expect = driver.getTitle();
        //Thread.sleep(3000);
        System.out.println(expect);
        getScreenShot(getClass().getName());
        assert expect.equals("在线音乐服务器");
        //driver.quit();
    }

    /**
     * 删除文件测试
     * @throws InterruptedException
     * @throws IOException
     */
    public void deleteSong() throws InterruptedException, IOException {
        driver.findElement(By.cssSelector("#info > tr:nth-child(2) > td:nth-child(5) > button:nth-child(1)")).click();
        Thread.sleep(100);
        driver.switchTo().alert().accept();
        String expect = driver.getTitle();
        //Thread.sleep(3000);
        System.out.println(expect);
        getScreenShot(getClass().getName());
        assert expect.equals("在线音乐服务器");
        //driver.quit();

    }

    /**
     * 批量删除
     */
    public void batchRemove() throws InterruptedException, IOException {
        driver.findElement(By.cssSelector("#info > tr:nth-child(1) > th > input")).click();
        driver.findElement(By.cssSelector("#info > tr:nth-child(2) > th > input")).click();
        driver.findElement(By.cssSelector("#delete")).click();
        Thread.sleep(100);
        driver.switchTo().alert().accept();
        String expect = driver.getTitle();
        //Thread.sleep(3000);
        System.out.println(expect);
        getScreenShot(getClass().getName());
        assert expect.equals("在线音乐服务器");
        driver.quit();
    }

    /**
     * 添加喜欢
     * @throws InterruptedException
     */
    public void loveMusic() throws InterruptedException {
        //添加喜欢
        driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(2)")).click();
        Thread.sleep(100);
        driver.switchTo().alert().accept();
        Thread.sleep(3000);
        //再次添加
        driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(2)")).click();
        Thread.sleep(100);
        driver.switchTo().alert().accept();
        //喜欢列表
        driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a:nth-child(1)")).click();
        //验证页面
        driver.findElement(By.cssSelector("body > div.container > h3"));
        //移除操作
        driver.findElement(By.cssSelector("#info > tr > td:nth-child(4) > button")).click();
        Thread.sleep(100);
        driver.switchTo().alert().accept();
        //driver.quit();
    }
    /**
     * 查询测试
     */
    public void queryMusic() {
        //查询
        driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("偏向");
        driver.findElement(By.cssSelector("#submit1")).click();
        driver.findElement(By.cssSelector("#info > tr > td:nth-child(2)"));
        driver.navigate().back();
        driver.navigate().forward();
        driver.findElement(By.cssSelector("#exampleInputName2")).clear();

        driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("偏");
        driver.findElement(By.cssSelector("#submit1")).click();
        driver.findElement(By.cssSelector("#info > tr > td:nth-child(2)"));

        driver.findElement(By.cssSelector("#exampleInputName2")).clear();
        driver.findElement(By.cssSelector("#submit1")).click();


        //driver.quit();

    }
}

这个类表示启动

import tests.ListPage;
import tests.LoginPage;

import java.io.IOException;

/**
 * @author:niuniu
 * @create:2024-10-04 22:04
 */
public class RunTests {
    public static void main(String[] args) throws InterruptedException, IOException {
        LoginPage loginPage = new LoginPage();
        loginPage.loginPageRight();
        loginPage.LoginSuc();
        loginPage.LoginFail();
        ListPage listPage = new ListPage();
        listPage.queryMusic();
        listPage.loveMusic();
        listPage.addSong();
        listPage.deleteSong();
        listPage.batchRemove();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值