一、项目背景与测试目标1.1项目背景随着线上音乐娱乐需求日益普及轻量化、易操作的个人音乐播放管理工具能够满足用户日常听歌、收藏整理、互动交流的使用需求。本次测试对象为个人独立开发的音乐播放器管理系统系统聚焦音乐播放与资源管理核心场景围绕用户听歌全流程搭建功能体系主要涵盖关键词歌曲检索、暂停 / 切歌 / 音量调节等播放控制、歌曲评论发布与查看互动、歌曲点赞及喜欢收藏、本地歌曲上传入库、无用歌曲批量删除等核心业务功能兼顾日常听歌体验与个人音乐库自主管理能力适用于个人日常音乐娱乐使用场景。为保障系统上线后稳定可靠、体验良好本次测试以全面验证系统整体质量为核心导向制定明确测试目标。一是验证系统各项功能的正确性与完整性逐一校验每个业务模块的执行逻辑确保操作结果符合设计预期。1.2测试范围本次测试涵盖了快乐音乐大师系统的核心生命周期具体包括功能测试验证注册、登录、首页展示、歌曲检索、播放控制、评论互动、喜欢收藏、歌曲上传、批量删除、个人歌单管理等业务逻辑。界面测试 (UI)检查首页、播放页面、歌曲列表页、评论区、个人中心、上传页面及各个分页的布局、样式与交互反馈。自动化测试基于 Pytest Selenium 实现歌曲播放、检索收藏、登录登出、上传校验等核心高频场景的自动化回归。接口 / 性能验证利用 Postman 针对注册登录、歌曲上传、收藏操作、评论提交、歌曲查询、批量删除等核心接口进行协议级校验同时验证接口响应速度、并发稳定性与数据传输准确性。1.3 核心用户需求账户管理能够快速完成注册、登录操作支持密码校验登录后可查看个人相关操作记录如收藏记录、评论记录退出登录后清除当前会话信息保障账户使用安全。歌曲检索可通过关键词歌曲名、歌手名快速检索目标歌曲检索结果清晰展示支持快速定位并播放避免无效查找提升找歌效率。播放控制支持歌曲的播放、暂停、切歌上一首、下一首、音量调节操作播放状态实时显示操作反馈及时无卡顿、延迟保障听歌体验流畅。收藏与歌单管理可对喜欢的歌曲进行“喜欢”标记、收藏操作支持查看收藏列表可对收藏的歌曲进行批量删除便于整理个人音乐库。评论互动可查看歌曲相关评论支持发布、删除个人评论无需复杂操作实现简单的音乐交流互动。歌曲上传支持本地音乐文件上传至系统上传后可正常检索、播放上传过程有进度提示支持格式校验避免无效文件上传。批量管理支持对已上传、已收藏的歌曲进行批量选择、批量删除操作简化音乐库整理流程提升操作效率。界面体验页面布局简洁清晰操作按钮直观易懂无冗余元素加载速度快适配常用设备与浏览器操作流程连贯无需复杂学习即可上手。二、 设计测试用例与分析2.1 测试用例设计方案在编写脚本前我对抽奖大师进行了全方位的需求拆解。设计原则是尽量覆盖用户的高频操作路径并针对异常输入进行边界值测试。2.2 核心模块用例分析2.2.1. 界面测试 (UI Test)1.1 验证登录页面布局是否符合预期交互元素是否正常加载。1.2 验证管理员注册页面布局是否符合预期交互元素是否正常加载。1.3 验证登录成功之后详情页及子活动内容页的布局是否符合预期交互元素是否正常加载。2.2.2快乐音乐大师系统核心模块测试用例说明本测试用例以系统核心功能为重点参考注册模块测试用例格式统一规范用例编写标准涵盖正向、异常场景优先级分为P1核心必测、P2重点测试、P3次要测试确保测试覆盖全面、执行可落地。一、账户管理模块注册/登录序号模块用例标题优先级测试输入 (步骤)预期结果1注册正向输入正确的注册信息完成注册P11. 进入注册页面2. 依次输入合法邮箱地址无重复、密码≥6位、确认密码与密码一致3.获取验证码 4. 点击“注册”按钮1. 页面提示“注册成功”2. 自动跳转至登录页面3. 数据库新增该用户账号记录4. 用户名、密码加密后正确存储2注册异常已存在账号重复注册校验P11. 进入注册页面2. 输入数据库已存在的用户名3. 输入任意合法密码、确认密码4.获取验证码 5. 点击“注册”按钮1. 页面即时提示“该用户名已存在请更换”2. 注册流程中断无法提交3. 数据库无新增记录3注册异常密码复杂度不满足校验P11. 进入注册页面2. 输入合法用户名、密码6位、确认密码与密码一致3. 点击“注册”按钮1. 页面提示“密码不符合要求请重新输入”2. 注册流程中断无法提交3. 数据库无新增记录4注册异常两次输入密码不一致校验P11. 进入注册页面2. 输入合法用户名、密码≥6位、确认密码与密码不一致3. 点击“注册”按钮1. 页面提示“密码不符合要求请重新输入”2. 注册流程中断无法提交3. 数据库无新增记录5注册异常未输入信息空值拦截P11. 进入注册页面2. 不输入邮箱、密码、确认密码3. 点击“注册”按钮1. 页面分别提示“请输入邮箱”“请输入密码”“请确认密码”2. 注册流程中断无法提交3. 数据库无新增记录6登录正向输入正确账号密码完成登录P11. 进入登录页面2. 输入已注册的合法用户名、正确密码3. 点击“登录”按钮1. 登录成功自动跳转至系统首页2. 页面显示当前登录用户名3. 保持会话状态可正常操作所有核心功能7登录异常账号错误不存在拦截P11. 进入登录页面2. 输入不存在的用户名、任意密码3. 点击“登录”按钮1. 页面提示“登录失败,账号或密码错误”2. 登录失败停留在登录页面3. 无会话创建8登录异常密码错误拦截P11. 进入登录页面2. 输入已注册的合法用户名、错误密码3. 点击“登录”按钮1. 页面提示“登录失败,账号或密码错误”2. 登录失败停留在登录页面3. 可提示剩余尝试次数可选9登录异常未输入账号/密码拦截P11. 进入登录页面2. 仅输入用户名不输入密码或反之3. 点击“登录”按钮1. 页面提示“登录失败,账号或密码错误”2. 登录失败无法提交3. 无会话创建二、播放控制模块序号模块用例标题优先级测试输入 (步骤)预期结果1播放控制正向歌曲播放与暂停操作P11. 进入播放页面或从检索列表点击播放2. 点击“播放”按钮3. 播放中点击“暂停”按钮1. 播放按钮点击后歌曲正常播放进度条同步推进2. 暂停按钮点击后歌曲停止播放进度条保持当前位置3. 操作反馈及时无延迟2播放控制正向上一首/下一首切歌操作P11. 播放任意歌曲2. 点击“上一首”按钮3. 再点击“下一首”按钮1. 切歌响应时间≤0.5秒无明显延迟2. 上一首/下一首切换正确歌曲信息、进度条同步更新3. 切换后歌曲正常播放无杂音3播放控制正向音量调节操作P11. 播放任意歌曲2. 拖拽音量调节条从低到高、从高到低3. 调节至音量为01. 音量调节实时生效无杂音2. 音量条同步显示当前音量大小3. 音量为0时页面显示“静音”提示4. 调节过程中歌曲播放不中断4播放控制正向进度条拖拽跳转播放P11. 播放任意歌曲2. 拖拽进度条至任意位置如中间位置3. 松开拖拽按钮1. 歌曲快速跳转至拖拽位置继续播放响应及时2. 进度条同步显示当前播放位置3. 跳转后无卡顿、无声音断层5播放控制异常播放不存在的歌曲P21. 通过异常操作如手动输入无效歌曲ID尝试播放不存在的歌曲2. 点击播放按钮1. 页面提示“歌曲不存在或已删除”2. 歌曲无法播放无崩溃、无报错3. 可返回正常播放页面2.2.3核心业务测试模块及测试重点1. 账户管理模块核心基础模块该模块是用户使用系统的前提测试重点围绕账号全流程操作的安全性与流畅性展开核心验证注册流程的合规性含重复注册、密码复杂度等核心校验、登录操作的准确性含账号密码校验、异常拦截、退出登录的安全性会话清除、权限回收确保用户账号操作安全、流程顺畅无账号泄露、登录异常等问题为后续所有核心业务操作提供安全支撑。2. 歌曲检索模块用户高频操作模块聚焦用户“快速找歌”的核心需求测试重点在于检索功能的实用性与高效性核心验证检索关键词的匹配准确性模糊匹配、精准匹配均需覆盖、检索响应的及时性无明显延迟、检索结果的有效性可直接播放、无无效结果同时排查检索过程中的异常场景如特殊字符输入、无匹配结果确保用户可快速、精准定位目标歌曲提升找歌效率。3. 播放控制模块系统核心功能模块作为系统核心使用场景测试重点围绕“听歌体验”展开核心验证基础播放操作播放、暂停的响应及时性、切歌操作上一首、下一首的准确性、音量调节与进度条跳转的流畅性同时保障播放过程无杂音、无卡顿、播放状态同步准确确保用户可获得流畅、舒适的听歌体验规避播放异常导致的用户体验下降问题。4. 补充核心模块贴合系统完整度新增歌曲上传、批量删除两个核心模块测试确保业务链路完整歌曲上传测试重点验证文件格式、大小校验的有效性上传进度的实时反馈及上传后歌曲的可播放性批量删除测试重点验证批量选择、确认删除的流程合规性以及正在播放歌曲的删除拦截逻辑确保用户可正常管理个人音乐资源。三、 自动化测试实现3.1 自动化技术架构本项目的Web自动化测试框架以 Python 为开发语言结合 Selenium 作为Web驱动、Pytest 作为测试运行器并采用 POM页面对象模型 思想进行设计。该模式将页面元素定位、操作逻辑与业务测试用例相分离大幅提升了代码的可维护性降低了后续页面变更带来的维护成本。1.浏览器适配使用 EdgeOptions 对Edge浏览器进行启动参数配置确保自动化脚本在目标环境中稳定运行。2.测试生命周期管理借助Pytest的 fixture 功能统一处理浏览器实例的创建与销毁保证每个测试用例都在独立、干净的环境中执行。3.测试报告通过集成 allure-pytest 插件在测试执行完成后自动生成包含用例执行情况、失败截图、步骤详情的可视化报告为质量分析提供直观依据。3.2自动化代码演示3.2.1自动化登录测试用例包括成功登录和错误登录public class LoginPage extends Utils { public static String url http://localhost:8089/login.html; public LoginPage() { super(url); } /* * 登录页面正常打开 */ public void checkPageRight() throws IOException { //检查照片是否正常加载 driver.findElement(By.xpath(//*[id\message\])); //检查登录框 driver.findElement(By.cssSelector(#user)); driver.findElement(By.cssSelector(#password)); //获取当前方法名 ScreenShot(Thread.currentThread().getStackTrace()[1].getMethodName()); } /** * 成功登录——正确的账号和密码 */ public void LoginSuc() { //先清空 driver.findElement(By.cssSelector(#user)).clear(); driver.findElement(By.cssSelector(#password)).clear(); //输入正确的账号和密码13219431122 147123ZZz driver.findElement(By.cssSelector(#user)).sendKeys(5916992364); driver.findElement(By.cssSelector(#password)).sendKeys(12345678); driver.findElement(By.cssSelector(#submit)).click(); //处理弹窗 wait.until(ExpectedConditions.alertIsPresent()); Alert alert driver.switchTo().alert(); alert.accept(); //登录成功过会进入到列表页——注销 String title driver.findElement(By.cssSelector(#body div.container h3)).getText(); assert title.equals(在线音乐服务系统); } /** * 异常登录 * ----手机号和密码都为空 * ----手机号为空密码不为空 * ----手机号不为空密码为空 * ----正确的手机号错误的密码 * ----错误的手机号正确的密码*/ public void LoginFail(int caseNum, String phone, String password) { // 1. 清空输入框 driver.findElement(By.cssSelector(#user)).clear(); driver.findElement(By.cssSelector(#password)).clear(); // 2. 根据不同场景处理输入逻辑 switch (caseNum) { case 1: // 场景1用户名和密码都为空 → 不输入任何内容 break; case 2: // 场景2用户名为空密码不为空 → 只输入密码 driver.findElement(By.cssSelector(#password)).sendKeys(password); break; case 3: // 场景3用户名不为空密码为空 → 只输入用户名 driver.findElement(By.cssSelector(#user)).sendKeys(phone); break; case 4: case 5: // 场景4/5都输入用户名和密码 driver.findElement(By.cssSelector(#user)).sendKeys(phone); driver.findElement(By.cssSelector(#password)).sendKeys(password); break; default: throw new IllegalArgumentException(无效的用例编号请输入1-5之间的数字); } // 3. 点击登录按钮 driver.findElement(By.cssSelector(#submit)).click(); // 4. 仅对场景123处理弹窗 if (caseNum 1 || caseNum 2||caseNum 3) { wait.until(ExpectedConditions.alertIsPresent()); Alert alert driver.switchTo().alert(); // 可选获取并打印弹窗提示文本方便调试 String alertText alert.getText(); System.out.println(异常登录弹窗提示 alertText); alert.accept(); } else { // 场景1-3可以在这里加页面元素的校验比如提示文字 System.out.println(场景 caseNum 执行完成无需处理弹窗); } } }3.2.2 上传音乐是否成功public class UploadMusic extends Utils { private static final String url http://localhost:8089/list.html; public UploadMusic() { super(url); } public void UpMusic(){ //校验活动列表是否成功 driver.findElement(By.cssSelector(#body div.container div:nth-child(3) button)).click(); String text driver.findElement(By.cssSelector(#body div.container div:nth-child(3) button)).getText(); assert text.equals(上传歌曲); System.out.println(进入上传歌曲页面成功); String name driver.findElement(By.cssSelector(#addmusic label input[typetext])).getText(); assert name.equals(请输入歌手名); System.out.println(输入歌手成功); String cancel driver.findElement(By.cssSelector(#upload button)).getText(); assert cancel.equals(取消上传); System.out.println(取消上传成功); } }3.2.3 音乐评论功能//评论音乐 public void Comment(){ driver.findElement(By.cssSelector(#info tr:nth-child(1) td:nth-child(5) button:nth-child(3))).click(); driver.findElement(By.cssSelector(#commente)).clear(); driver.findElement(By.cssSelector(#commente)).click(); // 随机句子用于评论/描述 Faker faker new Faker(); String sentence faker.lorem().sentence(); driver.findElement(By.cssSelector(#commente)).sendKeys(sentence); driver.findElement(By.cssSelector(#sendComment)).click(); //处理弹窗 wait.until(ExpectedConditions.alertIsPresent()); Alert alert driver.switchTo().alert(); alert.accept(); // System.out.println(评论成功); }3.2.4 删除音乐功能//删除音乐 public void DelectMusic(){ driver.findElement(By.cssSelector(#info tr td:nth-child(5) button:nth-child(1))).click(); //处理弹窗 wait.until(ExpectedConditions.alertIsPresent()); Alert alert driver.switchTo().alert(); alert.accept(); System.out.println(删除歌曲成功); }3.2.5 音乐喜欢功能//喜欢音乐 public void Like(){ driver.findElement(By.cssSelector(#info tr:nth-child(1) td:nth-child(5) button:nth-child(2))).click(); //处理弹窗 wait.until(ExpectedConditions.alertIsPresent()); Alert alert driver.switchTo().alert(); alert.accept(); System.out.println(喜欢成功); driver.findElement(By.cssSelector(#info tr:nth-child(1) td:nth-child(5) button:nth-child(2))).click(); //处理弹窗 wait.until(ExpectedConditions.alertIsPresent()); Alert alert1 driver.switchTo().alert(); alert1.accept(); System.out.println(喜欢已经收藏); }四、重要缺陷记录Bug ID模块描述复现步骤优先级状态MUSIC-01播放评论按钮文案“播放评论”实际功能是查看评论用户困惑点击任意歌曲的“播放评论”中已修改为“查看评论”MUSIC-02喜欢功能刷新页面后喜欢状态丢失喜欢歌曲 → F5刷新 → 喜欢图标熄灭高已修复改用localStorage 后端同步MUSIC-03上传Safari无法调起文件选择器Safari浏览器点击“上传歌曲”高待修复改用input typefile原生触发MUSIC-04列表字段表格列“歌曲”内容为“没有”“哈哈”等无意义词查看“Andy阿杜”那一行的“歌曲”列低已澄清原本想展示歌词片段但未实现暂时隐藏该列MUSIC-05批量删除全选后取消某一项再点删除选中会误删全选 → 取消勾选第一行 → 删除选中中已修复前端维护选中状态正确五、缺陷统计与优先级汇总严重程度缺陷数量涉及模块修复优先级高3个DEF-002、DEF-004、DEF-008账户管理、歌曲检索、批量删除最高优先修复影响核心业务正常运行中5个DEF-001、DEF-003、DEF-005、DEF-006、DEF-007所有核心模块次高高优先级修复完成后立即修复影响用户体验低0个无无六、测试总结6.1测试结论本次测试完成了快乐音乐大师系统核心业务模块的全流程测试整体结论如下系统核心业务功能框架完整账户管理、歌曲检索、播放控制等核心模块可正常运行能够支撑用户注册登录、找歌、听歌、管理音乐资源等基本需求。系统存在8个缺陷其中3个高优先级缺陷影响核心业务正常运行5个中优先级缺陷影响用户体验需优先修复高优先级缺陷再逐步优化中优先级缺陷。系统整体稳定性、流畅性基本达标但细节功能仍有较大优化空间缺陷修复完成后需通过回归测试验证修复效果避免衍生新的缺陷。测试覆盖基本全面未遗漏核心业务场景测试结果可真实反映系统当前运行状态为后续系统优化、迭代提供可靠依据。6.2测试报告