当前位置: 首页 > wzjs >正文

门户网站开发技术北京大兴网站建设公司咨询

门户网站开发技术,北京大兴网站建设公司咨询,wordpress添加人气博客导航,免费素材大全视频🎧 声动心弦 - 校园音乐分享平台的数字交响-测试报告 项目名称:声动心弦 - 校园音乐分享平台的数字交响 测试人员:LvZi 测试时间:2025年5月20日 - 2025年5月21日 一、项目概述 该项目为基于 Spring Boot 构建的音乐播放系统&…

🎧 声动心弦 - 校园音乐分享平台的数字交响-测试报告

项目名称:声动心弦 - 校园音乐分享平台的数字交响
测试人员:LvZi
测试时间:2025年5月20日 - 2025年5月21日


一、项目概述

该项目为基于 Spring Boot 构建的音乐播放系统,提供用户注册登录、音乐上传/播放、歌曲收藏与管理等功能。后端负责业务逻辑与数据库交互,前端支持用户交互操作。系统功能模块完整,具备良好的实用性。


二、测试目标

  1. 验证各模块功能是否符合需求。
  2. 确保系统在正常、异常及边界条件下均能稳定运行。
  3. 验证系统接口稳定性与响应正确性。
  4. 验证安全性场景(如:登录认证、SQL注入、未授权访问等)。
  5. 检查音乐上传/播放/收藏等核心业务是否流畅、稳定。

三、测试范围

模块名称涵盖功能
用户模块登录、Session验证、加密登录
音乐管理模块上传、查询、播放、删除、批量删除
收藏模块收藏、取消收藏、收藏查询
接口测试所有REST接口状态码与返回结构校验
权限校验Session检查、未登录操作限制

四、测试方法与工具

类型工具或技术栈
功能测试Postman + 手动测试
接口测试Postman
自动化测试Selenium(登录+上传)
安全性测试手动 SQL 注入验证
用例管理Excel、XMind

五、测试环境

环境项配置
操作系统Windows 11 / Ubuntu Server
浏览器Chrome 123.0
数据库MySQL 8.0
Java版本JDK 1.8
应用部署Spring Boot 内嵌 Tomcat,部署于本地和远程服务器
测试工具版本Postman v10、Selenium 4.0

六、测试用例统计

测试类型用例数通过数失败数覆盖率(估算)
功能测试6058295%
接口测试3029196%
自动化测试10100100%
性能测试550-
安全性测试541-
总计110106495%以上

七、缺陷分析(Bug记录)

Bug编号模块严重程度问题描述状态
BUG-001登录模块未处理SQL注入,存在安全风险已修复
BUG-002上传模块上传同名音乐未校验,导致重复上传已修复
BUG-003收藏模块重复收藏未提示“已收藏”已修复
BUG-004接口响应收藏接口部分错误返回 status=-1 但 message=“成功”已修复

八、结论与建议

✅ 测试结论:

系统主要功能基本稳定,常规功能测试通过率高,接口返回一致性好,自动化测试执行正常,具备良好的用户体验。

🔧 建议:

  1. 增加音乐重复校验逻辑,防止多次上传同一文件。
  2. 完善异常处理结构,特别是 message 和 status 的一致性。
  3. 进一步加强安全性处理,如统一防止XSS、CSRF等攻击。
  4. 收藏模块可以优化为幂等接口,用户多次收藏返回一致响应。

九、附录

  • 测试用例Excel文档(部分)
    在这里插入图片描述

  • 相关代码:https://github.com/mylvzi/onlineMusicTest/tree/main


*部分代码展示:

/*** 存储所有测试用例公共部分*/
public class Utils {// 构造方法  每一个页面都要调用这个类  所以必须要把每个页面的url传输过来public Utils() {// 1.调用driver对象driver = creatDriver();}// 公用driver对象public static WebDriver driver = null;/*** 1.创建驱动对象* 写成一个单例模式  此处采用饿汉模式*/public static WebDriver creatDriver() {if(driver == null) {WebDriverManager.chromedriver().setup();ChromeOptions options = new ChromeOptions();// 允许访问所有的链接options.addArguments("--remote-allow-origins=*");Map<String, Object> prefs = new HashMap<>();// 禁用 Chrome 的密码保存提示prefs.put("credentials_enable_service", false);prefs.put("profile.password_manager_enabled", false);// 禁用密码泄露检测(这是关键)prefs.put("profile.password_manager_leak_detection", false);options.setExperimentalOption("prefs", prefs);// 尝试添加其他禁用安全特性的参数,但主要依赖上面的 prefsoptions.addArguments("--disable-features=PasswordLeakDetection,AutofillServerCommunication,SafeBrowseEnhancedProtection,SafeBrowse");options.addArguments("--disable-sync"); // 有时候同步设置也会影响options.addArguments("--no-default-browser-check"); // 禁用默认浏览器检查driver = new ChromeDriver(options);// 设置全局的隐式等待driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));}// System.out.println("驱动对象创建成功!");return driver;}/*** 2.屏幕截图*/public static void getScreenShot(String str) throws IOException {System.out.println("开始截图");// 设置文件格式// ./src/test/img/2025-5-25/test01-HHmmmss.pngSimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sim2 = new SimpleDateFormat("HH-mm-ss-SS");// 精确到毫秒// 使用时间戳格式化String dirTime = sim1.format(System.currentTimeMillis());String fileTime = sim2.format(System.currentTimeMillis());// 设置保存文件格式String fileName = "./src/test/img/" + dirTime + "/" + str + "-" + fileTime + ".png";// 截图File srcPng = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(srcPng, new File(fileName));System.out.println("截图结束");}}public class LovemusicTest extends Utils {public static String url = "http://60.205.7.136:8080/loveMusic.html";public LovemusicTest() {super();}/*** 收藏音乐界面测试*/public void lovemusicTestUI() {driver.get(url);driver.findElement(By.cssSelector("#info > tr > td:nth-child(4) > button"));String expectedText = driver.findElement(By.cssSelector("body > div.container > h3")).getText();assert expectedText.equals("我喜欢的音乐列表");System.out.println("收藏音乐界面UI测试成功");}/*** 收藏音乐界面--功能测试**/public void lovemusicFunTest() throws IOException, InterruptedException {// 1.判断搜索功能是否正确driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys("无能为力");driver.findElement(By.cssSelector("#submit1")).click();System.out.println("收藏页面--搜索功能正常");getScreenShot("lovemusicFunTest");// 2.判断能否回到首页driver.findElement(By.cssSelector("body > div.container > div:nth-child(3) > a")).click();String expectedTitle = driver.getTitle();assert expectedTitle.equals("在线音乐服务器");Thread.sleep(2000);getScreenShot("lovemusicFunTest");System.out.println("收藏页面--回到首页功能正常");driver.quit();}
}public class LoginTest extends Utils {public static String url = "http://60.205.7.136:8080/login.html";public LoginTest() {super();}// 检查是否加载成功public void LoginRight() {driver.get(url);// 检查是否有 user和 passworddriver.findElement(By.cssSelector("#user"));driver.findElement(By.cssSelector("#password"));}// 正常登录public void LoginSubmitRight() {driver.get(url);// 1.输入账号密码driver.findElement(By.cssSelector("#user")).sendKeys("bit");driver.findElement(By.cssSelector("#password")).sendKeys("123456");driver.findElement(By.cssSelector("#submit")).click();// 由于设置的有弹窗需要解决一下  alert只能通过显示等待获取WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));Alert alert = wait.until(ExpectedConditions.alertIsPresent());alert.accept();// 2.检查url是否是/listString expectedTitle = driver.getTitle();System.out.println(expectedTitle);assert expectedTitle.equals("在线音乐服务器");// 3.检查url是否是/listString currentUrl = driver.getCurrentUrl();System.out.println(currentUrl);assert currentUrl.equals("http://60.205.7.136:8080/list.html");// 4.检查是否含有list页面的“查询按钮”元素driver.findElement(By.cssSelector("#submit1"));// 如果找不到就会报异常// driver.quit();}/*** 登录失败测试--用户名/密码输入错误*/public void LoginSubmitError1() throws InterruptedException {// 返回上一界面  因为上一个测试是“登录成功”,成功之后跳转到list界面了driver.navigate().back();driver.navigate().refresh();// Thread.sleep(3000);driver.findElement(By.cssSelector("#user")).sendKeys("bit1");driver.findElement(By.cssSelector("#password")).sendKeys("123456");driver.findElement(By.cssSelector("#submit")).click();// 由于设置的有弹窗需要解决一下  alert只能通过显示等待获取WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));Alert alert = wait.until(ExpectedConditions.alertIsPresent());String text = alert.getText();assert text.equals("登录失败,密码或者用户名错误!");alert.accept();System.out.println("登录失败验证成功");// driver.quit();}/*** 登录失败测试--用户名 || 密码为空*/public void LoginSubmitError2() throws InterruptedException {// 刷新  重新输入driver.navigate().refresh();// Thread.sleep(3000);driver.findElement(By.cssSelector("#user")).sendKeys("");driver.findElement(By.cssSelector("#password")).sendKeys("123456");driver.findElement(By.cssSelector("#submit")).click();// 由于设置的有弹窗需要解决一下  alert只能通过显示等待获取WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));Alert alert = wait.until(ExpectedConditions.alertIsPresent());String text = alert.getText();assert text.equals("用户名或者密码不能为空!");alert.accept();System.out.println("登录失败验证成功");// driver.quit();}/*** 登录失败测试--检查是否存在sql注入问题  弹出"登录失败,密码或者用户名错误!"*/public void LoginSubmitError3() throws InterruptedException {// 刷新  重新输入driver.navigate().refresh();// Thread.sleep(3000);driver.findElement(By.cssSelector("#user")).sendKeys("admin' -- ");driver.findElement(By.cssSelector("#password")).sendKeys("123456");driver.findElement(By.cssSelector("#submit")).click();// 由于设置的有弹窗需要解决一下  alert只能通过显示等待获取WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));Alert alert = wait.until(ExpectedConditions.alertIsPresent());String text = alert.getText();assert text.equals("登录失败,密码或者用户名错误!");alert.accept();System.out.println("sql注入验证成功");// driver.quit();}
}

截图测试
在这里插入图片描述


文章转载自:

http://jLYSz5Wq.mhybs.cn
http://n3avfKp5.mhybs.cn
http://1vrwGuAv.mhybs.cn
http://JmCX5TEY.mhybs.cn
http://7weQQFY2.mhybs.cn
http://HHThV2hh.mhybs.cn
http://VsAgnNZD.mhybs.cn
http://zbGAj8EE.mhybs.cn
http://BKSTrFO3.mhybs.cn
http://5ayApmRW.mhybs.cn
http://tXOIIDIt.mhybs.cn
http://sTCY5abY.mhybs.cn
http://B0cACGI2.mhybs.cn
http://PV7UazhS.mhybs.cn
http://6DRxbq4l.mhybs.cn
http://N3gbk5zL.mhybs.cn
http://IIfPp4Ui.mhybs.cn
http://vU9e0eEB.mhybs.cn
http://pKredzPS.mhybs.cn
http://dGbg69Eo.mhybs.cn
http://k5lj8Le5.mhybs.cn
http://o1ygQOSp.mhybs.cn
http://BQn072oS.mhybs.cn
http://PV5jOZdV.mhybs.cn
http://yX1OMYsv.mhybs.cn
http://3NtcuSSl.mhybs.cn
http://XDasU5A0.mhybs.cn
http://WkBgwpog.mhybs.cn
http://7zXul1j8.mhybs.cn
http://tnoyrCSr.mhybs.cn
http://www.dtcms.com/wzjs/660679.html

相关文章:

  • asp网站会员管理模板手机网站移动应用
  • 做平面设计必看的网站建设网站免费模板下载
  • DW网站建设出现哪些问题wordpress对接小程序
  • 好的建筑设计网站广州网站建设设计公司
  • 网站建设大全四川监理协会建设网站
  • 吉林电商网站建设公司哪家好移动端网站建设重点有哪些
  • 宜春网站设计公司网站开发的公司属于什么行业
  • 网站界面设计实训总结商标设计费用一般是多少
  • 建设公司的网站天津网站建设公司电扬
  • 网站开发验收确认书google搜索引擎入口2022
  • 公司网站代码湖南兼职网站建设
  • 温岭市住房和城乡建设局网站建企业网站教程
  • 南昌网站建设服务html网页设计期末大作业
  • 男朋友抱着我在教室做网站响应式企业网站设计与实现
  • 制作完整网站需要掌握哪些知识手机兼职的正规平台有哪些
  • seo网站推广有哪些音乐制作网站
  • h5免费制作网站有哪些室内展厅设计公司
  • 做滋补品销售有什么网站成都电脑培训班零基础
  • 中国贸易网是什么网站淘宝网络营销方案
  • 网站开发涉及内容如何免费创建自己的平台
  • 苏州模板建站平台广告宣传页怎么制作
  • 社区网站建设方案ppt创建网站的流程有哪些
  • 机票网站建设公司好公司部门解散调岗不同意有赔偿吗
  • 沈阳住房建设局网站哪些企业需要网络推广
  • 加快政务公开网站建设做网站对外贸有什么用
  • 垂直网站建设的关键因素网站建设公司软jian湖南岚鸿
  • 免费做网站页头图做引流去那些网站好
  • 给个营销型网站齐齐哈尔市住房城乡建设门户网站
  • 代理公司注册机构seo综合诊断工具
  • 网站301是什么意思网站开发入门教程