在线音乐服务器测试报告

2024-02-07 23:28

本文主要是介绍在线音乐服务器测试报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、项目背景

       在线音乐服务器采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据,同时将其部署到云服务器上。前端主要有个页面构成:登录页、音乐列表页、收藏音乐页等,以上模拟实现了最简单的在线音乐服务器。其结合后端实现了以下的主要功能:登录、上传音乐、播放音乐、查询音乐、删除音乐、收藏音乐、取消收藏音乐等功能。该音乐服务器可以实现用户简单的听音乐,收藏音乐等需求。

二、项目功能

       在线音乐服务器主要实现了以下几个功能:登录、上传音乐、播放音乐、查询音乐、删除音乐、收藏音乐、取消收藏音乐等功能。

  1. 登录功能:用户输入用户名和密码,如果输入正确的用户名和密码则登录成功并跳转到个人博客列表页面;如果输入错误的用户名和密码则提示用户输入的信息有误,登录失败。

  2. 上传音乐功能:用户上传格式正确的音乐文件,以及填写音乐所属的歌手名,最终能成功上传到服务器保存。

  3. 播放音乐功能:用户点击播放音乐,音乐能够正常播放。

  4. 查询音乐功能:用户可以通过模糊查询和精确查询所要想搜索的音乐。

  5. 删除音乐功能:用户可以单个删除音乐,也可以通过勾选批量删除多个音乐。

  6. 收藏音乐功能:用户选择喜欢的音乐可进行收藏,成功收藏后可保存在个人收藏列表页。

  7. 展示收藏音乐功能:展示用户收藏的喜欢的音乐,并且能够进行正常的播放等操作。

  8. 取消收藏音乐功能:用户在收藏音乐的列表中可以选择删除取消收藏的音乐。

三、Web自动化测试

一)测试用例设计
在这里插入图片描述

二)代码编写

  1. 登录功能测试
    ① 创建驱动,并打开页面;
    ② 测试页面是否正常打开;
    ③ 测试正常登录:使用正确的用户名和密码进行等;
    ④ 测试异常登录:用户名/密码不正确,登录失败,多参数测试;
    ⑤ 注意测试的顺序,使用Order注解指定,否则可能会因为执行顺序不对导致测试失败;
    ⑥ 注意清空内容后才能再次输入用户名、密码。
package com.musicAutoTest.Tests;import com.musicAutoTest.common.AutotestUtils;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;import java.time.Duration;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class LoginTest extends AutotestUtils {private static ChromeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://localhost:8888/login.html");}/*** 页面可以正常显示*/@Test@Order(1)void LoginLoadRight() {driver.findElement(By.cssSelector("#body > div > div:nth-child(3) > label"));driver.findElement(By.cssSelector("#body > div > div.alert.alert-warning.alert-dismissible"));}/*** 正常登录*/@Test@Order(3)void LoginSuc() throws InterruptedException {driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#user")).sendKeys("shuai");driver.findElement(By.cssSelector("#password")).sendKeys("123456");driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(5);Alert alert = driver.switchTo().alert();alert.accept();//检查是否登录成功driver.findElement(By.cssSelector("#body > div.container > h3"));driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a:nth-child(1)"));driver.navigate().back();}/*** 异常登录*/@ParameterizedTest@Order(2)@CsvSource({"'',''","'',123","'',123","123,123"})void LoginFail(String name, String password) throws InterruptedException {driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#user")).clear();driver.findElement(By.cssSelector("#password")).clear();driver.findElement(By.cssSelector("#user")).sendKeys(name);driver.findElement(By.cssSelector("#password")).sendKeys(password);driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(5);Alert alert = driver.switchTo().alert();alert.accept();//检查是否登录没成功driver.findElement(By.cssSelector("#body > div > div:nth-child(3) > label"));driver.findElement(By.cssSelector("#body > div > div.alert.alert-warning.alert-dismissible"));}
}
  1. 上传音乐功能测试
    ① 如若驱动已经创建好则不需再次创建驱动,打开页面;
    ② 测试页面是否正常打开;
    ③ 正常的上传,上传正确格式的音乐文件;
    ④ 测试异常上传:上传非音乐格式的文件。
package com.musicAutoTest.Tests;import com.musicAutoTest.common.AutotestUtils;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;import java.time.Duration;
import java.util.List;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class UploadMusicTest extends AutotestUtils {private static ChromeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://localhost:8888/list.html");}/*** 检查页面能否正常打开*/@Test@Order(1)void pageLoadRight() {driver.findElement(By.cssSelector("#body > div.container > h3"));driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3)"));}/*** 上传音乐*/@Test@Order(2)void uploadSuc() {driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));List<WebElement> list1 = driver.findElements(By.name("tr"));int count1 = list1.size();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("C:/music.mp3");driver.findElement(By.cssSelector("body > form > label > input[type=text]")).sendKeys("user");driver.findElement(By.cssSelector("body > form > input[type=submit]:nth-child(3)")).click();List<WebElement> list2 = driver.findElements(By.name("tr"));int count2 = list2.size();int suc = count2 - count1;Assertions.assertEquals("1",suc+"");}}
  1. 播放音乐功能测试
    ① 如若驱动已经创建好则不需再次创建驱动,打开页面;
    ② 测试页面是否正常打开;
    ③ 点击播放音乐按钮;
    ④ 测试音乐是否播放,检查点为属性值。
package com.musicAutoTest.Tests;import com.musicAutoTest.common.AutotestUtils;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class RunMusicTest extends AutotestUtils {private static ChromeDriver driver = createDriver();//打开页面@BeforeAllstatic void baseControl() {driver.get("http://localhost:8888/list.html");}//页面能否正常显示@Test@Order(1)void pageLoadRight() {driver.findElement(By.cssSelector("#body > div.container > h3"));driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3)"));}//能否正常播放音乐@Test@Order(2)void runMusicSuc() {driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(4) > button")).click();//检查点,属性值String text = driver.findElement(By.cssSelector("#body > div:nth-child(2) > div > div > div.controlbar > ul > li:nth-child(1) > a")).getAttribute("style");System.out.println(text);Assertions.assertEquals("display: none;",text);}}
  1. 查询音乐功能
    ① 如若驱动已经创建好则不需再次创建驱动,打开页面;
    ② 测试页面是否正常打开;
    ③ 输入空字符进行查询;
    ④ 分别进行模糊查询和精确查询测试是否能查询到。
package com.musicAutoTest.Tests;import com.musicAutoTest.common.AutotestUtils;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;import java.time.Duration;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class SelectMusicTest extends AutotestUtils {private static ChromeDriver driver = createDriver();//打开页面@BeforeAllstatic void baseControl() {driver.get("http://localhost:8888/list.html");}//页面能否正常显示@Test@Order(1)void pageLoadRight() {driver.findElement(By.cssSelector("#body > div.container > h3"));driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3)"));}//精确查询@Test@Order(2)void searchOne() {driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#exampleInputName2")).clear();driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("music");driver.findElement(By.cssSelector("#submit1")).click();String text = driver.findElement(By.cssSelector("#info > tr > td:nth-child(2)")).getText();Assertions.assertEquals("music",text);}//模糊查询@Test@Order(3)void searchMore() {driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.findElement(By.cssSelector("#exampleInputName2")).clear();driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("mu");driver.findElement(By.cssSelector("#submit1")).click();String text = driver.findElement(By.cssSelector("#info > tr > td:nth-child(2)")).getText();Assertions.assertEquals("music",text);}
}
  1. 收藏音乐功能
    ① 如若驱动已经创建好则不需再次创建驱动,打开页面;
    ② 测试页面是否正常打开;
    ③ 点击收藏音乐,测试是否被收藏。
package com.musicAutoTest.Tests;import com.musicAutoTest.common.AutotestUtils;
import org.junit.jupiter.api.*;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class LoveMusicTest extends AutotestUtils {private static ChromeDriver driver = createDriver();//打开页面@BeforeAllstatic void baseControl() {driver.get("http://localhost:8888/list.html");}//页面能否正常显示@Test@Order(1)void pageLoadRight() {driver.findElement(By.cssSelector("#body > div.container > h3"));driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3)"));}//点击喜欢@Test@Order(2)void loveMusicSuc() throws InterruptedException {driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(2)")).click();Thread.sleep(5);Alert alert = driver.switchTo().alert();String text = alert.getText();alert.accept();Assertions.assertEquals("加入喜欢的列表成功",text);}//重复点击@Test@Order(3)void loveMusicFail() throws InterruptedException {driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(2)")).click();Thread.sleep(8);Alert alert = driver.switchTo().alert();String text = alert.getText();alert.accept();Assertions.assertNotEquals("加入喜欢的列表成功",text);}}
  1. 展示收藏音乐列表功能
    ① 如若驱动已经创建好则不需再次创建驱动,打开页面;
    ② 测试页面是否正常打开;
    ③ 测试刚收藏的音乐是否再列表中展示。
package com.musicAutoTest.Tests;import com.musicAutoTest.common.AutotestUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;public class ShowLoveMusicTest extends AutotestUtils {private static ChromeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://localhost:8888/loveMusic.html");}/*** 展示收藏的音乐列表*/@Testvoid showSuc() {String text = driver.findElement(By.cssSelector("#info > tr > td:nth-child(2)")).getText();Assertions.assertEquals("music",text);}}
  1. 取消收藏音乐功能
    ① 如若驱动已经创建好则不需再次创建驱动,打开页面;
    ② 测试页面是否正常打开;
    ③ 点击取消收藏音乐,检查音乐是否已经被移除收藏列表。
package com.musicAutoTest.Tests;import com.musicAutoTest.common.AutotestUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;import java.util.List;public class DeleteLoveMusicTest extends AutotestUtils {private static ChromeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://localhost:8888/loveMusic.html");}/*** 取消收藏的音乐*/@Testvoid deleteLoveMusic() {List<WebElement> list = driver.findElements(By.name("#tr"));int count1 = list.size();driver.findElement(By.cssSelector("#info > tr > td:nth-child(5) > button")).click();//统计数量List<WebElement> list2 = driver.findElements(By.name("tr"));int count2 = list2.size();//再统计数量int suc = count1 - count2;Assertions.assertEquals("1",suc+"");}}
  1. 删除音乐功能
    ① 如若驱动已经创建好则不需再次创建驱动,打开页面;
    ② 测试页面是否正常打开;
    ③ 点击删除音乐,检查音乐是否被删除。
package com.musicAutoTest.Tests;import com.musicAutoTest.common.AutotestUtils;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;import java.util.List;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class DeleteMusicTest extends AutotestUtils {private static ChromeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://localhost:8888/loveMusic.html");}/*** 删除音乐*/@Testvoid deleteMusic() {List<WebElement> list = driver.findElements(By.name("#tr"));int count1 = list.size();driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(5) > button:nth-child(1)")).click();//统计数量List<WebElement> list2 = driver.findElements(By.name("tr"));int count2 = list2.size();//再统计数量int suc = count1 - count2;Assertions.assertEquals("1",suc+"");}
}
  1. 屏幕截图
    /*** 动态生成时间*/public List<String> getTime() {//文件夹按照天的维度进行保存//文件格式 20240109-123030SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd-HHmmssSS");SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyyMMdd");String filename = simpleDateFormat1.format(System.currentTimeMillis());String dirname = simpleDateFormat2.format(System.currentTimeMillis());List<String> list = new ArrayList<>();list.add(dirname);list.add(filename);return list;}/*** 获取屏幕截图,把所有的测试用例执行的结果保存下来*/public void getScreenShor(String str) throws IOException {List<String> list = getTime();//dir+filename// ./src/test/java/com/blogWebAutoTest/dirname/filenameString fileName = "./src/test/java/com/blogWebAutoTest/"+list.get(0) + "/" + str + "-" + list.get(1) + ".png";File srcfile = driver.getScreenshotAs(OutputType.FILE);//把屏幕截图生成的文件放到指定的路径FileUtils.copyFile(srcfile,new File(fileName));String filename = "my";}

三)代码测试
在这里插入图片描述

四、总结

  1. 使用了Junit5中提供的注解:避免生成过多的对象,造成资源和时间的浪费,提高了自动化的执行效率。
  2. 只创建一次驱动对象,避免每个用例重复创建驱动对象造成时间和资源的浪费。
  3. 使用参数化:保持用例的简洁,提高代码的可读性。
  4. 使用测试套件:降低了测试人员的工作量,通过套件一次执行所有要运行的测试用例。
  5. 使用了等待:提高了自动化的运行效率,提高了自动化的稳定性,减小误报的可能性。
  6. 使用了屏幕截图:方便问题的追溯以及问题的解决。
  7. 使用了无头模式:只注重结果,可以留出屏幕。

这篇关于在线音乐服务器测试报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/689237

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

速盾:直播 cdn 服务器带宽?

在当今数字化时代,直播已经成为了一种非常流行的娱乐和商业活动形式。为了确保直播的流畅性和高质量,直播平台通常会使用 CDN(Content Delivery Network,内容分发网络)服务器来分发直播流。而 CDN 服务器的带宽则是影响直播质量的一个重要因素。下面我们就来探讨一下速盾视角下的直播 CDN 服务器带宽问题。 一、直播对带宽的需求 高清视频流 直播通常需要传输高清视频

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

RTMP流媒体服务器 crtmpserver

http://www.oschina.net/p/crtmpserver crtmpserver又称rtmpd是Evostream Media Server(www.evostream.com)的社区版本采用GPLV3授权 其主要作用为一个高性能的RTMP流媒体服务器,可以实现直播与点播功能多终端支持功能,在特定情况下是FMS的良好替代品。 支持RTMP的一堆协议(RT

云原生之高性能web服务器学习(持续更新中)

高性能web服务器 1 Web服务器的基础介绍1.1 Web服务介绍1.1.1 Apache介绍1.1.2 Nginx-高性能的 Web 服务端 2 Nginx架构与安装2.1 Nginx概述2.1.1 Nginx 功能介绍2.1.2 基础特性2.1.3 Web 服务相关的功能 2.2 Nginx 架构和进程2.2.1 架构2.2.2 Ngnix进程结构 2.3 Nginx 模块介绍2.4

阿里云服务器ces

允许公网通过 HTTP、HTTPS 等服务访问实例 https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.0.0.3ca96b0b3KGTPq#allowHttp

常见的服务器

常见的Web服务器 1、Tomcat:Tomcat和Java结合得最好,是Oracle官方推荐的JSP服务器。Tomcat是开源的Web服务器,经过长时间的发展,性能、稳定性等方面都非常优秀。 2、Jetty:另一个优秀的Web服务器。Jetty有个更大的优点是,Jetty可作为一个嵌入式服务器,即:如果在应用中加入Jetty的JAR文件,应用可在代码中对外提供Web服务。 3、Resin:

Exchange 服务器地址列表的配置方法与注意事项

Exchange Server 是微软推出的一款企业级邮件服务器软件,广泛应用于企业内部邮件系统的搭建与管理。配置 Exchange 服务器地址列表是其中一个关键环节。本文将详细介绍 Exchange 服务器地址列表的配置方法与注意事项,帮助系统管理员顺利完成这一任务。 内容目录 1. 引言 2. 准备工作 3. 配置地址列表 3.1 创建地址列表 3.2 使用 Exchange

本地如何快速启动静态服务器

本地快速启动静态服务器 有许多第三方库可以帮助你快速启动一个静态服务器,甚至无需编写代码。通过命令行运行这些库后,它们会自动启动一个服务器并打开指定端口,展示当前目录下的文件内容: 电脑得提前安装NodeJS 1、http-server http-server 是一个轻量级的命令行工具,允许你快速启动一个静态文件服务器。 安装 npm install -g http-server