在线音乐播放器测试报告

文章目录

    • 一、项目背景
    • 二、项目功能
    • 三、测试目的
    • 四、测试环境
    • 五、测试计划
      • 5.1 功能测试
      • 5.2 自动化测试
    • 六、测试结果

一、项目背景

今天,市面上的音乐播放器种类繁多同时功能强大。一个单纯的音乐播放器可能不再单纯只是音乐播放的功能,而是更多地集短视频、直播、小游戏、甚至交友为一体。同时,对于用户喜欢的歌曲和已下载的歌曲,还会不可避免地出现“失效”的问题。不同音乐的版权可能也是散落在各个不同的音乐软件。因此,为了用户能够拥有一个最初单纯简洁的听歌环境,同时方便管理自己喜欢的歌曲,当然也为了可以进一步加深对springboot框架的使用和理解,尝试搭建了一个在线音乐播放器。为用户提供简洁方便的听歌环境。

二、项目功能

用户成功登录该网站后,可以上传任意自己下载好的音乐文件;可以针对自己上传的音乐文件进行管理,包括删除,添加到喜欢列表,在线播放自己上传的音乐文件等基本功能。

三、测试目的

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

四、测试环境

  • Web端
    谷歌浏览器,Windows操作系统,edge浏览器;

  • 移动端
    安卓系统;

五、测试计划

首先编写相关的测试用例:
在这里插入图片描述
根据测试用例进行相关测试;

5.1 功能测试

针对程序实现的功能进行测试,确保程序功能满足需求并正常运行;
在这里插入图片描述

执行测试的操作步骤、测试结果;

1.在地址栏输入对应的网站,回车;
2.在登录页面输入用户名和密码点击登录;

  • 正常登录-用户名密码均正确

在这里插入图片描述
在这里插入图片描述
预期结果:1.登录成功,有相关的弹窗提示;2.点击确定,跳转到音乐列表页;
实际结果:1.登录成功,有相关的弹窗提示;2.点击确定,跳转到音乐列表页;

  • 异常登录-用户名或密码为空
    在这里插入图片描述

预期结果:1.无法登录成功;2.有相关的弹窗提示;3.点击确定按钮页面保持在登录页面;
实际结果:1.无法登录成功;2.有相关的弹窗提示;3.点击确定按钮页面保持在登录页面;

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

在这里插入图片描述
预期结果:1.登录失败;2.有相关的弹窗提示;3.点击确定保持在登录页面;
实际结果:1.登录失败;2.有相关的弹窗提示;3.点击确定保持在登录页面;

  • 添加歌曲
    操作步骤:1.点击"添加歌曲"按钮;
    2.音乐上传页面点击“选择文件”;
    3.选中对应的音乐文件,点击“打开”;
    4.输入歌手名,点击“上传”;

预期结果:1.跳转到音乐上传页面;
2、本地文件资源管理器弹出;
3.文件在上传页面显示;
4.跳转到音乐列表页,上传的文件显示在此处;

实际结果:与预期结果一致;

在这里插入图片描述

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

  • 上传音乐-文件或歌手名为空
    预期结果:1.无法成功上传;2.有相关的文字提示;
    实际结果:1.无法成功上传;2.有相关的文字提示;
    在这里插入图片描述

  • 上传文件-批量上传
    预期结果:批量上传成功;
    实际结果:不能进行批量上传,后添加的文件会覆盖之前的文件;

  • 上传文件-上传非音乐文件的其他文件;
    预期结果:上传失败;
    实际结果:上传成功;
    在这里插入图片描述

  • 上传文件-上传音乐列表中已经存在的文件
    预期结果:上传失败;
    实际结果:上传成功;
    在这里插入图片描述

  • 添加到喜欢-选中一首音乐
    操作步骤:
    1.在音乐列表页选中歌曲,点击“喜欢”按钮;
    2.切换到喜欢列表页;

预期结果:
1.可以正常点击;
2.音乐列表页有刚刚添加喜欢的歌曲;

实际结果:
1.可以正常点击;
2.音乐列表页有刚刚添加喜欢的歌曲;
在这里插入图片描述

  • 添加到喜欢-选中多首音乐
    操作步骤:
    1.选择2-3首音乐,点击任意一条的喜欢按钮;
    2.切换到喜欢列表页;
    预期结果:
    1.可以选中多首音乐 ,喜欢按钮可以点击;
    2.喜欢列表页只有点击了喜欢按钮的对应音乐;
    实际结果:
    1.可以选中多首音乐 ,喜欢按钮可以点击;
    2.喜欢列表页只有点击了喜欢按钮的对应音乐;
    在这里插入图片描述
    在这里插入图片描述

  • 添加到喜欢-重复添加到喜欢
    操作步骤:
    1.选中一首已经在喜欢列表页的歌曲,点击对应的喜欢按钮;
    2.观察页面现象;

预期结果:
1.点击正常;
2.弹窗提示“收藏失败”;

实际结果:
1.点击正常;
2.对应弹窗弹出;
在这里插入图片描述

  • 删除音乐-单首删除

操作步骤:
1.在音乐列表页选中一首歌曲,点击删除;
2.查看页面现象;

预期结果:
1.可以正常点击;
2.弹窗提示删除成功;

实际结果:
1.可以正常点击;
2.弹窗提示删除成功;
在这里插入图片描述

  • 删除音乐-批量删除

操作步骤:1.选中多首歌曲,点击列表上方的“删除选中”;
预期结果:1.删除成功;
实际结果:删除成功;
在这里插入图片描述

删除音乐-删除喜欢列表的音乐;

操作步骤:
1.点击进入“喜欢列表”页;
2.选择一首歌曲,点击“移除”;

预期结果:移除成功,有弹窗提示;
实际结果:移除成功,有弹窗提示;在这里插入图片描述

  • 播放音乐-音乐列表页的音乐播放

操作步骤:在音乐列表页选择一首 歌曲,点击“播放歌曲”
预期结果:当前页面右下角出现音乐播放的相关进度条、按钮等;
实际结果:当前页面右下角出现音乐播放的相关进度条、按钮等;
在这里插入图片描述

  • 播放按钮-播放喜欢列表的歌曲

操作步骤:在喜欢列表页,点击对应歌曲的播放按钮;
预期结果:歌曲开始播放,有暂停按钮和进度条、音量等显示;
实际结果:歌曲开始播放,有暂停按钮和进度条、音量等显示;
在这里插入图片描述

  • 回到首页

操作步骤:在喜欢列表页,点击“回到首页”;
预期结果:页面跳转到音乐列表页;
实际结果:页面跳转到音乐列表页;

5.2 自动化测试

对程序编写自动化测试用例,编写自动化测试脚本,使用selenium进行Web自动化测试;

  • 登录页面
package com.autotest0828;import org.junit.jupiter.api.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;/*** Created with IntelliJ IDEA.* Description:* User: 晨曦* Date: 2023-08-28* Time: 22:16*/
public class loginTest {@Testpublic void autoTest() throws InterruptedException {//1.创建驱动,用来打开浏览器EdgeOptions edgeOptions=new EdgeOptions();edgeOptions.addArguments("--remote-allow-origins=*");EdgeDriver driver = new EdgeDriver(edgeOptions);//2.输入需要访问的网址:driver.get("http://127.0.0.1:8080/login.html");Thread.sleep(3000);//3.找到页面的输入框,输入用户名和密码WebElement elementUser=driver.findElement(By.cssSelector("#user"));elementUser.sendKeys("lisi");WebElement elementPassword=driver.findElement(By.cssSelector("#password"));elementPassword.sendKeys("123456");//4.点击登录按钮driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(5000);//5.切换对象为弹窗进行操作Alert alert=driver.switchTo().alert();alert.accept();driver.quit();}
}

在这里插入图片描述

  • 登录页面到列表页的跳转;
package com.autotest0828.Tests;import com.autotest0828.common.AutoTestUtils;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.edge.EdgeDriver;import java.util.Set;/*** Created with IntelliJ IDEA.* Description:* User: 晨曦* Date: 2023-08-29* Time: 7:24*/
public class musicTest extends AutoTestUtils {public static EdgeDriver driver=createDriver();//1.有驱动对象 2.访问页面的URL@BeforeAllstatic void baseControl(){driver.get("http://127.0.0.1:8080/login.html");}@Test@Order(1)void loginRight(){//3.检查用户登录的输入框是否存在driver.findElement(By.cssSelector("#user"));driver.findElement(By.cssSelector("#password"));}@Test@Order(2)void loginingNormal() throws InterruptedException {//4.输入正确的用户名和密码;driver.findElement(By.cssSelector("#user")).sendKeys("lisi");driver.findElement(By.cssSelector("#password")).sendKeys("123456");//5.点击登录按钮driver.findElement(By.cssSelector("#submit")).click();//添加强制等待页面渲染Thread.sleep(5000);//6.切换对象为弹窗进行操作Alert alert=driver.switchTo().alert();alert.accept();Thread.sleep(3000);}//用来释放驱动@Test@AfterAllstatic void driverQuit(){driver.quit();}
}

在这里插入图片描述

六、测试结果

程序的基本功能全部实现,不存在明显缺陷;页面展示无错别字,易用性良好,满足简单易上手的基本要求;程序功能简洁但单一,有可以继续优化的部分,性能一般,安全性良好;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/66847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对战ChatGPT,创邻科技的Graph+AI会更胜一筹吗?

大模型(大规模语言模型,即Large Language Model)的应用已经成为千行百业发展的必然。特定领域或行业中经过训练和优化的企业级垂直大模型则成为大模型走下神坛、真正深入场景的关键之路。 但是,企业级垂直大模型在正式落地应用前…

机器人中的数值优化(十一)——高斯牛顿法、LMF方法、Dogleg方法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

【FPGA零基础学习之旅#11】数码管动态扫描

🎉欢迎来到FPGA专栏~数码管动态扫描 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正…

HarmonyOS—UI开发性能提升的推荐方法

注:本文转载自HarmonyOS官网文档 开发者若使用低性能的代码实现功能场景可能不会影响应用的正常运行,但却会对应用的性能造成负面影响。本章节列举出了一些可提升性能的场景供开发者参考,以避免应用实现上带来的性能劣化。 使用数据懒加载 开…

如何熟练使用vector?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

Blender 围绕自身的原点旋转与游标旋转

默认情况下的旋转是,R后旋转是物体自身的原点旋转 可以修改为围绕游标旋转,通过旋转R时 局部与全局坐标 全局的坐标不会变 局部的会随着物体的旋转变化 如果平稳时GZZ会在全局到局部坐标之间切换 或在局部到全局之间的切换 学习视频:【基础…

PaddleNLP使用Vicuna

LLaMA 模型 LLaMa 是一个大型语言模型,由 Meta 开源。它的全称是 Large Language Model Meta AI,参数量从 70 亿到 650 亿不等。例如,130 亿参数的 LLaMA 模型在大多数基准上可以胜过参数量达 1750 亿的 GPT-3,而且可以在单块 V1…

go语言-channel

环形缓存可以降低GC得开销 channel使用得是mutex锁 互斥锁并不是排队发送/接收数据 互斥锁保护的hchan结构体本身 Channel并不是无锁的 底层发送原理 c<- 关键字是一个语法糖 编译阶段&#xff0c;会把 c<- 转化为 runtime.chansend10 chansend10会调用 charsend0 方法…

使用 FastChat 运行 CodeLlama-7b-Instruct-hf

使用 FastChat 运行 CodeLlama-7b-Instruct-hf 1. 确认 FactChat 支持的 Model2. 升级依赖3. 启动 controller4. 启动 CodeLlama5. 启动 api server6. VSCode 中使用 CodeLlama 1. 确认 FactChat 支持的 Model 访问 model_support.md&#xff0c;确认 codellama/CodeLlama-7b-…

【100天精通Python】Day53:Python 数据分析_NumPy数据操作和分析进阶

目录 1. 广播 2 文件输入和输出 3 随机数生成 4 线性代数操作 5 进阶操作 6 数据分析示例 1. 广播 广播是NumPy中的一种机制&#xff0c;用于在不同形状的数组之间执行元素级操作&#xff0c;使它们具有兼容的形状。广播允许你在不显式复制数据的情况下&#xff0c;对不同…

小程序数据导出文件

小程序josn数据生成excel文件 先从下载传送门将xlsx.mini.min.js拷贝下来&#xff0c;新建xlsx.js文件放入小程序项目文件夹下。 const XLSX require(./xlsx)//在需要用的页面中引入// 定义导出 Excel 报表的方法exportData() {const that thislet newData [{time:2021,val…

用XSIBackup为VMware ESXi打造完美备份方案

文章目录 VMware ESXi 备份方案引言XSIBackup安装步骤1. XSIBackup软件安装2. SSH连接3. 定位到xsibackup目录4. 修改文件权限5. 安装cron查看crontab列表6. 配置备份任务结论VMware ESXi 备份方案 引言 数据就像是我们的生命线,一旦丢失,可能会带来无法挽回的损失。对于那…

AI绘画:StableDiffusion实操教程-斗罗大陆2-江楠楠-常服(附高清图下载)

前段时间我分享了StableDiffusion的非常完整的教程&#xff1a;“AI绘画&#xff1a;Stable Diffusion 终极宝典&#xff1a;从入门到精通 ” 尽管如此&#xff0c;还有读者反馈说&#xff0c;尽管已经成功安装&#xff0c;但生成的图片与我展示的结果相去甚远。真实感和质感之…

uniapp微信小程序用户隐私保护

使用wx.requirePrivacyAuthorize实现微信小程序用户隐私保护。 一、前言 微信小程序官方出了一个公告《关于小程序隐私保护指引设置的公告》。不整的话&#xff0c;后果很多授权无法使用&#xff0c;详见《小程序用户隐私保护指引内容介绍》 。 二、隐私相关设置 1、在 微信…

关于大模型参数微调的不同方法

Adapter Tuning 适配器模块&#xff08;Adapter Moudle&#xff09;可以生成一个紧凑且可扩展的模型&#xff1b;每个任务只需要添加少量可训练参数&#xff0c;并且可以在不重新访问之前任务的情况下添加新任务。原始网络的参数保持不变&#xff0c;实现了高度的参数共享 Pa…

CSS中如何隐藏元素但保留其占位空间(display:nonevsvisibility:hidden)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 隐藏元素但保留占位空间⭐ display: none;⭐ visibility: hidden;⭐ 总结⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&a…

基于Django的博客管理系统

1、克隆仓库https://gitee.com/lylinux/DjangoBlog.git 若失效&#xff1a;https://gitee.com/usutdzxy/DjangoBlog.git 2、环境安装 pip install -Ur requirements.txt3、修改djangoblog/setting.py 修改数据库配置&#xff0c;其他的步骤就按照官方文档。 DATABASES {def…

dubbo服务管控

我们已经介绍了Dubbo在服务治理方面提供的特性&#xff0c;今天我们一起来看看Dubbo在其它方面提供的特性。同服务治理篇一样&#xff0c;本文的目的在于学会使用Dubbo在服务管控方面提供的特性&#xff0c;依旧不涉及任何实现原理。 工程结构 嗯~~ 是这样的&#xff0c;因为…

登录校验的相关知识点

登录校验的相关知识点 【1】会话技术1)会话:2)会话跟踪:3)常见的几种会话跟踪&#xff1a; 【2】JWT令牌1)定义解释2&#xff09;测试生成Jwt令牌并解析3&#xff09;注意事项 【3】过滤器Filter1)过滤器工作原理如下&#xff1a;2)简单使用示例3)自定义拦截路径4)疑问5)过滤器…

【Linux】简单的小程序:进度条

在学习进度条之前&#xff0c;需要学一点预备知识。 1. 预备知识 回车换行 现在的换行符&#xff08;\n&#xff09;其实就是回车式换行符&#xff0c;另起一行&#xff0c;光标指向最新一行的开头。回车符&#xff08;\r&#xff09;是光标指向这一行的开头。 缓冲区 &a…