基于音乐网站的Web自动化测试用例编写

项目介绍

  1. 项目概述:该音乐网站为用户打造共享音乐的服务,用户可上传自己的音乐、或者上传自己创作的歌曲,也可收藏别人的音乐,为用户提供简单便利就实现听音乐的环境。

  2. 主要功能:注册账号/登陆账号/上传音乐/播放音乐/收藏音乐/批量收藏音乐/模糊查询音乐/移除喜欢音乐/批量移除喜欢音乐/删除上传音乐/批量删除上传音乐/我的喜欢和我的上传页面需登陆才可访问/分页功能/退出登陆

注册页面---register.html

功能测试:

(1)用户名不为空

  1. 密码和确认密码一致,注册成功
  2. 密码和确认密码不一致,注册失败
  3. 密码含特殊字符(@,#,_,+,汉字等),注册失败
  4. 密码和确认密码中含有空格,注册失败
  5. 密码长度超过18位,输入19位,注册失败
  6. 密码长度低于6位,输入5位,注册失败
  7. 密码只含数字,输入位数为7位的全数字密码,注册失败
  8. 密码只含英文,输入位数为17位的全英文密码,注册失败
  9. 用户名含空格,密码和确认密码一致,注册失败
  10. 密码为空,确认密码不为空,注册失败
  11. 密码不为空,确认密码为空,注册失败

(2)用户名为空

  1. 密码和确认密码一致,注册失败
  2. 密码为空,确认密码不为空,注册失败
  3. 密码不为空,确认密码为空,注册失败
  4. 密码为空,确认密码为空,注册失败

(3)导航栏

  1. 点击首页,能否正确跳转到首页(index.html)
  2. 点击主页,能否正确跳转到主页(list.html)
  3. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  4. 在未登录状态下,点击我的喜欢,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  5. 在登陆状态下,点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  6. 在未登录状态下,点击我的上传,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  7. 在登陆状态下,点击我的上传,能否正确跳转到我的上传页面(myupload.html)
  8. 点击登陆,能否正确跳转到登陆页面(login.html)

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 三个输入框的大小、位置、对齐方式是否符合要求
  4. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  5. 输入框提示文字的大小,颜色是否符合要求
  6. 输入错误时的光标定位是否正确

易用性测试

  1. 输入错误时是否有正确的提示引导
  2. Tab快捷键是否可以切换
  3. Enter快捷键是否会直接触发注册
  4. 密码是否有遮掩或展开显示选择

安全测试

  1. 密码后台是否存储加密
  2. 输入密码时,输入框是否有密码隐藏功能
  3. 用户点击注册时,通过抓包工具查看密码是否做了加密处理
  4. 输入框输入 or 1=1,验证输入框是否存在对SQL注入做处理
  5. 密码输入框是否不支持复制和粘贴
  6. 是否允许用户名相同的两个账号注册
  7. 输入框是否对脚本做了处理(XSS攻击)
  8. 输入框输入的密码是否在页面源码模式下被查看

性能测试

  1. 不同网速下,打开注册页面需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户注册后跳转到登陆页面的响应时间是否符合要求

兼容性测试

  1. 不同浏览器下,注册页面能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,注册页面能否正确显示并且功能正确

登陆页面---login.html

功能测试

(1)用户名不为空

  1. 用户名存在且正确,密码正确,登陆成功
  2. 用户名存在且正确,密码错误,登陆失败
  3. 用户名存在且正确,密码为空,登陆失败
  4. 用户名不存在(输入含特殊字符的超长字符),密码正确,登陆失败
  5. 用户名不存在(输入含特殊字符的超长字符),密码错误(输入长度为5位或19位长度的密码),登陆失败
  6. 在用户名处先输入空格,再输入存在且正确的用户名,输入正确的密码,验证系统是否会自动去掉空格,登陆成功
  7. 在浏览器填写好用户名和密码后,点击刷新后,用户名和密码处是否被清空
  8. 在浏览器填写好用户名和密码后,关闭登录界面,再重新打开登录界面,用户名和密码处是否被清空

(2)用户名为空

  1. 密码正确,登陆失败
  2. 密码错误(输入长度为7位或17位含英文和数字组合的合法密码),登陆失败
  3. 密码错误(输入长度为6位纯数字或19位纯英文的密码),登陆失败
  4. 密码错误 (输入含特殊字符的超长字符的密码),登陆失败
  5. 密码为空,登陆失败

(3)导航栏

  1. 点击注册账号,能否正确跳转注册页面(register.html)
  2. 点击首页,能否正确跳转到首页(index.html)
  3. 点击主页,能否正确跳转到主页(list.html)
  4. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  5. 在未登录状态下,点击我的喜欢,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  6. 在登陆状态下,点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  7. 在未登录状态下,点击我的上传,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  8. 在登陆状态下,点击我的上传,能否正确跳转到我的上传页面(myupload.html)

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 三个输入框的大小、位置、对齐方式是否符合要求
  4. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  5. 输入错误时的光标定位是否正确
  6. 输入框提示文字的大小,颜色是否符合要求

易用性测试

  1. 输入错误时是否有正确的提示引导
  2. Tab快捷键是否可以切换
  3. Enter快捷键是否会直接触发注册
  4. 密码是否有遮掩或展开显示选择

安全测试

  1. 输入框输入 or 1=1,验证输入框是否存在对SQL注入做处理
  2. 输入密码时,输入框是否有密码隐藏功能
  3. 密码输入框是否不支持复制和粘贴
  4. 输入框是否对脚本做了处理(XSS攻击)
  5. 在未登录的情况下,在浏览器中直接输入登陆之后的URL网址(lovemusic.html),验证是否会重定向到用户登陆界面
  6. 登陆多次后,是否会提示登陆次数达到上限
  7. 登陆成功后生成的Cookie是否为httponly
  8. 用户点击注册时,通过抓包工具查看密码是否做了加密处理
  9. 同一台电脑上,是否允许对同一个用户登陆两次
  10. 在不同的电脑上,是否允许同一个用户进行登陆,第二台电脑登录后,会不会挤掉第一台电脑登陆的用户

性能测试

  1. 不同网速下,打开登陆页面需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户登陆后跳转到登陆页面的响应时间是否符合要求

兼容性测试

  1. 不同浏览器下,登陆页面能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,登陆页面能否正确显示并且功能正确

首页---index.html

功能测试

(1)导航栏

  1. 点击主页,能否正确跳转到主页(list.html)
  2. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  3. 在未登录状态下,点击我的喜欢,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  4. 在登陆状态下,点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  5. 在未登录状态下,点击我的上传,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  6. 在登陆状态下,点击我的上传,能否正确跳转到我的上传页面(myupload.html)
  7. 点击登陆,能否正确跳转到登陆页面(login.html)
  8. 点击注册,能否正确跳转到注册页面(register.html)

(2)歌曲列表

  1. 用户未登录,点击歌曲列表处的登陆账号,能否正确跳转到登陆页面(login.html)
  2. 用户已登录,点击歌曲列表处的登陆账号,能否正确给出“用户已登陆”的弹窗提示语句
  3. 若数据库音乐表为空,验证歌曲列表展示的歌曲是否为空
  4. 若数据库音乐表存在四首歌以上,验证歌曲列表展示的歌曲是否是数据库音乐表的前四首
  5. 歌曲列表展示的歌曲信息是否和数据库以及服务器存储的该歌曲信息相匹配(歌手,歌曲名,上传用户名是否一致)
  6. 用户未登录,点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)
  7. 用户已登录,点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)
  8. 点击“点击了解更多歌曲”,能否正确跳转到主页(list.html)

(3)播放功能

  1. 在网络通畅的情况下,播放歌曲的声音是否清晰
  2. 在网络通畅的情况下,是否可以完整播放完该歌曲
  3. 在网络通畅的情况下,播放的歌曲是否可以暂停播放
  4. 在网络通畅的情况下,暂停后是否可以点击按钮后继续播放
  5. 在网络通畅的情况下,播放歌曲的进度是否可以通过拉动进度条来调节
  6. 在网络通畅的情况下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

(4)底部网页介绍

  1. 点击底部网页介绍处的注册账号,能否正确跳转到注册页面(login.html)
  2. 点击底部网页介绍处的上传音乐,能否正确跳转到上传音乐页面(upload.html)

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  4. 页面所有文字的样式是否符合要求,是否美观,工整、不含糊
  5. 弹窗的提示文字的大小,颜色是否符合要求

易用性测试

  1. 鼠标点击时,光标是否定位正确
  2. 点击跳转其他页面的入口标题是否清晰表达

性能测试

  1. 不同网速下,点击来到首页(index.html)需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 用户点击跳转其他页面的响应时间是否符合要求
  4. 单用户登陆后跳转到首页(index.html)的响应时间是否符合要求
  5. 不同网速下,播放器播放歌曲的声音是否清晰、不卡顿
  6. 不同网速下,是否可以完整播放完该歌曲
  7. 不同网速下,播放器的暂停按钮、继续播放按钮、拉动进度条等操作是否顺畅且有效
  8. 不同网速下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

兼容性测试

  1. 不同浏览器下,主页首页(index.html)能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,首页(index.html)能否正确显示并且功能正确
  3. 不同浏览器下,播放器能否正确显示并且功能正常使用
  4. 同一个浏览器的不同版本,播放器能否正确显示并且功能正常使用

主页页面---list.html

功能测试

(1)导航栏

  1. 点击首页,能否正确跳转到主页(index.html)
  2. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  3. 在未登录状态下,点击我的喜欢,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  4. 在登陆状态下,点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  5. 在未登录状态下,点击我的上传,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  6. 在登陆状态下,点击我的上传,能否正确跳转到我的上传页面(myupload.html)
  7. 点击登陆,能否正确跳转到登陆页面(login.html)
  8. 点击注册,能否正确跳转到注册页面(register.html)

(2)搜索功能

  1. 输入框不输入任何内容,点击“搜索歌曲”,是否携带空参数且正常跳转搜索列表页(searchbylist.html)页面
  2. 输入框输入搜索内容,点击“搜索歌曲”,是否携带参数且正常跳转搜索列表页(searchbylist.html)页面
  3. 其他搜索测试用例参考搜索列表页(searchbylist.html)页面

(3)展示歌曲列表

  1. 在用户已登录的状态下,点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  2. 在用户未登录的状态下,点击我的喜欢,能否弹窗提醒用户“用户未登录,请先登陆”,并跳转登陆界面 (login.html)
  3. 在用户已登录的状态下,点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  4. 在用户未登录的状态下,点击上传音乐,能否弹窗提醒用户“用户未登录,请先登陆后上传”,并跳转登陆界面 (login.html)
  5. 歌曲列表的歌曲,选择框是否可以被选中,选中后是否可以被取消
  6. 在用户未登录的状态下且未选中歌曲,点击批量喜欢,能否弹窗提醒用户“用户未登录,请先登陆后收藏”,并跳转登陆界面 (login.html)
  7. 在用户未登录的状态下且选中歌曲,点击批量喜欢,能否弹窗提醒用户“用户未登录,请先登陆后收藏”,并跳转登陆界面 (login.html),如选中三首歌
  8. 在用户已登录的状态下,未选中歌曲时,点击批量喜欢,能否弹窗提醒用户“请先选择要收藏的音乐”
  9. 在用户已登录的状态下且选中歌曲时,点击批量喜欢,验证数据库的喜欢音乐表是否成功添加了选中歌曲的记录且我的喜欢列表中成功展示,若成功添加,能否弹窗提醒用户“收藏成功”,若添加失败,能否弹窗提醒用户“收藏失败,请重试”,(我的喜欢列表页的展示参考我的喜欢列表页的测试用例)
  10. 歌曲列表展示的歌曲信息是否和数据库以及服务器存储的该歌曲信息相匹配(歌手,歌曲名,上传用户名是否一致)
  11. 在用户已登录的状态下,点击喜欢,验证数据库的喜欢音乐表是否成功添加了该条歌曲的记录且我的喜欢列表中成功展示,若成功添加,能否弹窗提醒用户“收藏成功”,若添加失败,能否弹窗提醒用户“收藏失败,请重试”,(我的喜欢列表页的展示参考我的喜欢列表页的测试用例)
  12. 在用户未登录的状态下,点击喜欢,能否弹窗提醒用户“用户未登录,请先登陆”,并跳转登陆界面 (login.html)
  13. 在用户未登录的状态下,点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)
  14. 在用户已登录的状态下,点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)

(4)播放功能

  1. 在网络通畅的情况下,播放歌曲的声音是否清晰
  2. 在网络通畅的情况下,是否可以完整播放完该歌曲
  3. 在网络通畅的情况下,播放的歌曲是否可以暂停播放
  4. 在网络通畅的情况下,暂停后是否可以点击按钮后继续播放
  5. 在网络通畅的情况下,播放歌曲的进度是否可以通过拉动进度条来调节
  6. 在网络通畅的情况下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

(5)分页功能

  1. 如果当前已经是首页,点击首页是否弹窗提醒当前已在首页
  2. 验证首页的歌曲是否显示正确,显示的歌曲是否是数据库音乐表中的第一条歌曲和第二条歌曲,以此类推,验证其他页面的歌曲是否显示正确
  3. 如果当前不在首页,点击首页时,是否成功跳转首页,并且正确显示属于首页的音乐曲目
  4. 如果当前在首页,点击上一页,是否弹窗提醒当前已在首页
  5. 如果当前不在首页,点击上一页,是否成功跳转上一页,并且正确显示上一页的音乐曲目
  6. 如果当前在末页,点击下一页,是否弹窗提醒当前已在末页
  7. 如果当前在末页,点击末页,是否弹窗提醒当前已在末页
  8. 如果当前不在末页,点击下一页,是否成功跳转下一页,并且正确显示下一页的音乐曲目
  9. 如果当前不在末页,点击末页,是否成功跳转末页,并且正确显示末页的音乐曲目

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  4. 页面所有文字的样式是否符合要求,是否美观,工整、不含糊
  5. 弹窗的提示文字的大小,颜色是否符合要求
  6. 搜索输入框的提示文字是否显示正确,且大小、颜色是否符合要求
  7. 歌曲列表每页显示的歌曲数目是否符合要求
  8. 歌曲列表显示详细的歌曲信息,显示顺序是否符合要求

易用性测试

  1. 鼠标点击时,光标是否定位正确
  2. 点击跳转其他页面的入口标题是否清晰表达

安全测试

  1. 搜索输入框输入 or 1=1,验证输入框是否存在对SQL注入做处理
  2. 搜索输入框是否对脚本做了处理(XSS攻击)

性能测试

  1. 不同网速下,点击来到主页(list.html)需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户登陆后跳转到主页(list.html)的响应时间是否符合要求
  4. 用户点击跳转其他页面的响应时间是否符合要求
  5. 不同网速下,播放器播放歌曲的声音是否清晰、不卡顿
  6. 不同网速下,是否可以完整播放完该歌曲
  7. 不同网速下,播放器的暂停按钮、继续播放按钮、拉动进度条等操作是否顺畅且有效
  8. 不同网速下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

兼容性测试

  1. 不同浏览器下,主页(list.html)能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,主页(list.html)能否正确显示并且功能正确
  3. 不同浏览器下,播放器能否正确显示并且功能正常使用
  4. 同一个浏览器的不同版本,播放器能否正确显示并且功能正常使用

搜索列表页---searchbylist.html

功能测试

(1)导航栏

  1. 点击首页,能否正确跳转到首页(index.html)
  2. 点击主页,能否正确跳转到主页(list.html)
  3. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  4. 在未登录状态下,点击我的喜欢,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  5. 在登陆状态下,点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  6. 在未登录状态下,点击我的上传,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  7. 在登陆状态下,点击我的上传,能否正确跳转到我的上传页面(myupload.html)
  8. 点击登陆,能否正确跳转到登陆页面(login.html)
  9. 点击注册,能否正确跳转到注册页面(register.html)

(2)搜索结果

  1. 在未登录状态下,点击我的喜欢,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  2. 在登陆状态下,点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  3. 在用户已登录的状态下,点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  4. 在用户未登录的状态下,点击上传音乐,能否弹窗提醒用户“用户未登录,请先登陆后上传”,并跳转登陆界面 (login.html)
  5. 主页输入完整的歌曲名,点击搜索歌曲,验证能否成功搜索出与歌曲名相匹配的所有歌曲,并且与数据库音乐表根据该歌曲名查询出的歌曲信息一致(音乐标题、歌手、上传用户名),具体数据:输入“大象”
  6. 主页输入完整的歌手名,点击搜索歌曲,验证能否成功搜索出与该歌手名相匹配的所有歌曲,并且与数据库音乐表根据该歌手名查询出的歌曲信息一致(音乐标题、歌手、上传用户名),具体数据:输入“周杰伦”
  7. 主页输入不完整的歌曲名,点击搜索歌曲,能否根据模糊查询成功搜索出与歌曲名相匹配的所有歌曲,并且与数据库音乐表根据该歌曲名查询出的歌曲信息一致(音乐标题、歌手、上传用户名),具体数据:输入“的”
  8. 主页输入不完整的歌手名,点击搜索歌曲,能否根据模糊查询成功搜索出与该歌手相匹配的所有歌曲,并且与数据库音乐表根据该歌手名查询出的歌曲信息一致(音乐标题、歌手、上传用户名),具体数据:输入“周”
  9. 主页不输入任何信息,点击搜索歌曲,搜索结果是否是全部歌曲信息
  10. 主页输入不存在歌曲名,点击搜索歌曲,搜索结果是否为空
  11. 主页输入不存在歌手名,点击搜索歌曲,搜索结果是否为空
  12. 歌曲列表的歌曲,选择框是否可以被选中,选中后是否可以被取消
  13. 在用户未登录的状态下且未选中歌曲,点击批量喜欢,能否弹窗提醒用户“用户未登录,请先登陆后收藏”,并跳转登陆界面 (login.html)
  14. 在用户未登录的状态下且选中歌曲,点击批量喜欢,能否弹窗提醒用户“用户未登录,请先登陆后收藏”,并跳转登陆界面 (login.html),如选中三首歌
  15. 在用户已登录的状态下,未选中歌曲时,点击批量喜欢,能否弹窗提醒用户“请先选择要收藏的音乐”
  16. 在用户已登录的状态下且选中歌曲时,点击批量喜欢,若数据库的喜欢音乐表成功添加了选中歌曲的记录且我的喜欢列表中成功展示,能否弹窗提醒用户“收藏成功”,若失败,能否弹窗提醒用户“收藏失败,请重试”,(我的喜欢列表页的展示参考我的喜欢列表页的测试用例)
  17. 在用户已登录的状态下,点击喜欢,若数据库的喜欢音乐表成功添加了该条歌曲的记录且我的喜欢列表中成功展示,能否弹窗提醒用户“收藏成功”,若失败,能否弹窗提醒用户“收藏失败,请重试”,(我的喜欢列表页的展示参考我的喜欢列表页的测试用例)
  18. 在用户未登录的状态下,点击喜欢,能否弹窗提醒用户“用户未登录,请先登陆”,并跳转登陆界面 (login.html)
  19. 在用户未登录的状态下,点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)
  20. 在用户已登录的状态下,点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)
  21. 在未登录的情况下,在浏览器中直接输入搜索列表页(searchbylist.html)的URL网址,验证是否会重定向主页(list.html)

(3)播放功能

  1. 在网络通畅的情况下,播放歌曲的声音是否清晰
  2. 在网络通畅的情况下,是否可以完整播放完该歌曲
  3. 在网络通畅的情况下,播放的歌曲是否可以暂停播放
  4. 在网络通畅的情况下,暂停后是否可以点击按钮后继续播放
  5. 在网络通畅的情况下,播放歌曲的进度是否可以通过拉动进度条来调节
  6. 在网络通畅的情况下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

(4)分页功能

  1. 如果当前已经是首页,点击首页是否弹窗提醒当前已在首页
  2. 验证首页的歌曲是否显示正确,显示的歌曲是否是数据库音乐表中符合搜索结果的第一条歌曲和第二条歌曲,以此类推,验证其他页面的歌曲是否显示正确
  3. 如果当前不在首页,点击首页时,是否成功跳转首页,并且正确显示属于首页的音乐曲目
  4. 如果当前在首页,点击上一页,是否弹窗提醒当前已在首页
  5. 如果当前不在首页,点击上一页,是否成功跳转上一页,并且正确显示上一页的音乐曲目
  6. 如果当前在末页,点击下一页,是否弹窗提醒当前已在末页
  7. 如果当前在末页,点击末页,是否弹窗提醒当前已在末页
  8. 如果当前不在末页,点击下一页,是否成功跳转下一页,并且正确显示下一页的音乐曲目
  9. 如果当前不在末页,点击末页,是否成功跳转末页,并且正确显示末页的音乐曲目

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  4. 页面所有文字的样式是否符合要求,是否美观,工整、不含糊
  5. 弹窗的提示文字的大小,颜色是否符合要求
  6. 歌曲列表每页显示的歌曲数目是否符合要求
  7. 歌曲列表显示详细的歌曲信息,显示顺序是否符合要求

易用性测试

  1. 鼠标点击时,光标是否定位正确
  2. 点击跳转其他页面的入口标题是否清晰表达

性能测试

  1. 不同网速下,点击搜索歌曲来到搜索列表页(searchbylist.html)需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户登陆后,点击搜索歌曲来到搜索列表页(searchbylist.html)的响应时间是否符合要求
  4. 用户点击跳转其他页面的响应时间是否符合要求
  5. 不同网速下,播放器播放歌曲的声音是否清晰、不卡顿
  6. 不同网速下,是否可以完整播放完该歌曲
  7. 不同网速下,播放器的暂停按钮、继续播放按钮、拉动进度条等操作是否顺畅且有效
  8. 不同网速下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

兼容性测试

  1. 不同浏览器下,搜索列表页(searchbylist.html)能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,搜索列表页(searchbylist.html)能否正确显示并且功能正确
  3. 不同浏览器下,播放器能否正确显示并且功能正常使用
  4. 同一个浏览器的不同版本,播放器能否正确显示并且功能正常使用

上传音乐---upload.html

功能测试

(1)导航栏

  1. 点击首页,能否正确跳转到首页(index.html)
  2. 点击主页,能否正确跳转到主页(list.html)
  3. 在未登录状态下,点击我的喜欢,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  4. 在登陆状态下,点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  5. 在未登录状态下,点击我的上传,能否弹窗提醒“用户未登录,请先登陆”,且重定向到登陆页面(login.html)
  6. 在登陆状态下,点击我的上传,能否正确跳转到我的上传页面(myupload.html)
  7. 点击登陆,能否正确跳转到登陆页面(login.html)
  8. 点击注册,能否正确跳转到注册页面(register.html)

(2)上传功能

  1. 在未登录状态下,完整填写音乐标题,歌手名,上传mp3格式文件后点击确认上传,验证是否弹窗提醒“用户未登陆,请先登陆后上传”,且重定向到登陆页面(login.html)
  2. 在未登录状态下,不填写任何信息,直接点击确认上传,验证是否弹窗提醒“用户未登陆,请先登陆后上传”,且重定向到登陆页面(login.html)
  3. 在登陆状态下,不填写任何信息,直接点击确认上传,验证是否弹窗提醒“信息填写不完整,请填写完整后上传”
  4. 在登陆状态下,不完整填写信息,直接点击确认上传,验证是否弹窗提醒“信息填写不完整,请填写完整后上传”(如上传mp3格式文件,填写音乐标题,不填写歌手名)
  5. 在登陆状态下,完整填写音乐标题,歌手名,且上传mp3格式文件,直接点击确认上传,验证服务器和数据库的音乐表中是否成功添加此条音乐信息,并且弹窗提醒“上传成功”,若添加失败,是否弹窗提醒“上传失败,请重试”
  6. 在登陆状态下,完整填写音乐标题,歌手名,上传非mp3格式文件,直接点击确认上传,是否弹窗提醒“请上传mp3格式文件”,且验证服务器和数据库的音乐表中是否不存在此条音乐信息(如上传mp4格式音乐文件)
  7. 在登陆状态下,完整填写音乐标题,歌手名,上传非mp3格式,但后缀名是mp3的音乐文件,直接点击确认上传,是否弹窗提醒“请上传mp3格式文件”,且验证服务器和数据库的音乐表中是否不存在此条音乐信息(如将.txt文件的后缀名改成.mp3格式后上传)
  8. 在登陆状态下,验证上传成功的音乐是否在主页成功展示,若上传成功的音乐是数据库音乐表的前四首之一,需验证是否在主页成功展示

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  4. 页面所有文字的样式是否符合要求,是否美观,工整、不含糊
  5. 弹窗的提示文字的大小,颜色是否符合要求
  6. 两个输入框的提示文字是否显示正确,且大小、颜色是否符合要求

易用性测试

  1. 鼠标点击时,光标是否定位正确
  2. 点击跳转其他页面的入口标题是否清晰表达
  3. Tab快捷键是否可以切换
  4. Enter快捷键是否会直接触犯确认上传

安全测试

  1. 两个输入框输入 or 1=1,验证输入框是否存在对SQL注入做处理
  2. 两个索输入框是否对脚本做了处理(XSS攻击)
  3. 上传一个不合法的文件,验证系统是否会进行相应的错误处理,并且不会将文件保存到服务器上和数据库表中(构造一个恶意文件,将其后缀名该成为mp3文件后上传)

性能测试

  1. 不同网速下,点击上传音乐来到上传音乐页面upload.html)需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户登陆后,点击确认上传后,收到服务器返回的信息并弹窗的响应时间是否符合要求
  4. 用户点击跳转其他页面的响应时间是否符合要求

兼容性测试

  1. 不同浏览器下,上传音乐页面upload.html)能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,上传音乐页面upload.html)能否正确显示并且功能正确

我的喜欢---lovemusic.html

功能测试

(1)导航栏

  1. 点击首页,能否正确跳转到首页(index.html)
  2. 点击主页,能否正确跳转到主页(list.html)
  3. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  4. 点击我的上传,能否正确跳转到我的上传页面(myupload.html)
  5. 点击登陆,能否正确跳转到登陆页面(login.html)
  6. 登陆状态时,点击退出,是否成功跳转登陆界面,并且清除session存的用户信息,在redis中查看退出后,是否还存在该用户的session信息

(2)搜索功能

  1. 输入框不输入任何内容,点击“搜索歌曲”,是否携带空参数且正常跳转搜索喜欢页(searchbylove.html)页面
  2. 输入框输入搜索内容,点击“搜索歌曲”,是否携带参数且正常跳转搜索喜欢页(searchbylove.html)页面
  3. 其他搜索测试用例参考搜索喜欢页(searchbylove.html)页面

(3)展示歌曲列表

  1. 点击主页,能否正确跳转到主页(list.html)
  2. 点击上传歌曲,能否正确跳转到上传音乐页面(upload.html)
  3. 歌曲列表中展示的所有歌曲数目和歌曲信息,是否和数据库音乐喜欢表属于该登录用户id的歌曲数目一致,是否和音乐表中歌曲信息相匹配(音乐标题、歌手名、上传用户名是否一致)
  4. 歌曲列表的歌曲,选择框是否可以被选中,选中后是否可以被取消
  5. 未选中歌曲时,点击批量移除,能否弹窗提醒用户“请先选择要移除收藏的音乐”
  6. 选中歌曲时,点击批量移除,若数据库的喜欢音乐表成功删除了属于该登陆用户id同时是选中歌曲的记录,且我的喜欢列表展示中已无选中的歌曲,能否弹窗提醒用户“移除成功”,若失败,能否弹窗提醒用户“移除失败,请重试”
  7. 点击移除喜欢,若数据库的喜欢音乐表成功删除了属于该登陆用户id的该条歌曲的记录,且我的喜欢列表中已无此歌曲,能否弹窗提醒用户“移除喜欢成功”,若失败,能否弹窗提醒用户“移除喜欢失败,请重试”
  8. 点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)

(4)播放功能

  1. 在网络通畅的情况下,播放歌曲的声音是否清晰
  2. 在网络通畅的情况下,是否可以完整播放完该歌曲
  3. 在网络通畅的情况下,播放的歌曲是否可以暂停播放
  4. 在网络通畅的情况下,暂停后是否可以点击按钮后继续播放
  5. 在网络通畅的情况下,播放歌曲的进度是否可以通过拉动进度条来调节
  6. 在网络通畅的情况下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

(5)分页功能

  1. 如果当前已经是首页,点击首页是否弹窗提醒当前已在首页
  2. 验证首页的歌曲是否显示正确,显示的歌曲是否是数据库喜欢音乐表中属于该登陆用户id的第一条歌曲和第二条歌曲,以此类推,验证其他页面的歌曲是否显示正确
  3. 如果当前不在首页,点击首页时,是否成功跳转首页,并且正确显示属于首页的音乐曲目
  4. 如果当前在首页,点击上一页,是否弹窗提醒当前已在首页
  5. 如果当前不在首页,点击上一页,是否成功跳转上一页,并且正确显示上一页的音乐曲目
  6. 如果当前在末页,点击下一页,是否弹窗提醒当前已在末页
  7. 如果当前在末页,点击末页,是否弹窗提醒当前已在末页
  8. 如果当前不在末页,点击下一页,是否成功跳转下一页,并且正确显示下一页的音乐曲目
  9. 如果当前不在末页,点击末页,是否成功跳转末页,并且正确显示末页的音乐曲目

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  4. 页面所有文字的样式是否符合要求,是否美观,工整、不含糊
  5. 弹窗的提示文字的大小,颜色是否符合要求
  6. 搜索输入框的提示文字是否显示正确,且大小、颜色是否符合要求
  7. 歌曲列表每页显示的歌曲数目是否符合要求
  8. 歌曲列表显示详细的歌曲信息,显示顺序是否符合要求

易用性测试

  1. 鼠标点击时,光标是否定位正确
  2. 点击跳转其他页面的入口标题是否清晰表达
  3. 点击移除删除时,是否有弹窗提醒,防止用户误触

安全测试

  1. 搜索输入框输入 or 1=1,验证输入框是否存在对SQL注入做处理
  2. 搜索输入框是否对脚本做了处理(XSS攻击)
  3. 在未登陆的情况下,在浏览器中直接输入我的喜欢页面(lovemusic.html)的网址,验证是否会重定向到用户登陆界面(login.html)
  4. 同一台电脑上,是否允许对同一个用户登陆两次
  5. 在不同的电脑上,是否允许同一个用户进行登陆,第二台电脑登录后,会不会挤掉第一台电脑登陆的用户

性能测试

  1. 不同网速下,我的喜欢页面(lovemusic.html)需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户登陆后跳转我的喜欢页面(lovemusic.html)的响应时间是否符合要求
  4. 用户点击跳转其他页面的响应时间是否符合要求
  5. 不同网速下,播放器播放歌曲的声音是否清晰、不卡顿
  6. 不同网速下,是否可以完整播放完该歌曲
  7. 不同网速下,播放器的暂停按钮、继续播放按钮、拉动进度条等操作是否顺畅且有效
  8. 不同网速下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

兼容性测试

  1. 不同浏览器下,我的喜欢页面(lovemusic.html)能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,我的喜欢页面(lovemusic.html)能否正确显示并且功能正确
  3. 不同浏览器下,播放器能否正确显示并且功能正常使用
  4. 同一个浏览器的不同版本,播放器能否正确显示并且功能正常使用

搜索喜欢页---searchbylove.html

功能测试

(1)导航栏

  1. 点击首页,能否正确跳转到首页(index.html)
  2. 点击主页,能否正确跳转到主页(list.html)
  3. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  4. 点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  5. 点击我的上传,能否正确跳转到我的上传页面(myupload.html)
  6. 点击登陆,能否正确跳转到登陆页面(login.html)
  7. 登陆状态时,点击退出,是否成功跳转登陆界面,并且清除session存的用户信息,在redis中查看退出后,是否还存在该用户的session信息

(2)搜索结果

  1. 点击主页,能否正确跳转到主页(list.html)
  2. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  3. 我的喜欢页面中输入完整的歌曲名,点击搜索歌曲,能否成功在数据库喜欢音乐表中属于该登陆用户的所有歌曲中搜索出与歌曲名相匹配的所有歌曲,并且与数据库音乐表中根据该歌曲名查询出的歌曲信息一致(音乐标题、歌手、上传用户名),具体数据:输入“大象”
  4. 我的喜欢页面输入完整的歌手名,点击搜索歌曲,能否成功在数据库喜欢音乐表中属于该登陆用户的所有歌曲中搜索出与该歌手相匹配的所有歌曲,并且与数据库音乐表中根据该歌手名查询出的歌曲信息一致(音乐标题、歌手、上传用户名),具体数据:输入“周杰伦”
  5. 我的喜欢页面输入不完整的歌曲名,点击搜索歌曲,能否根据模糊查询在数据库喜欢音乐表中属于该登陆用户的所有歌曲中成功搜索出与歌曲名相匹配的所有歌曲,并且与数据库音乐表中根据该歌曲名查询出的歌曲信息一致(音乐标题、歌手、上传用户名),具体数据:输入“的”
  6. 我的喜欢页面输入不完整的歌手名,点击搜索歌曲,能否根据模糊查询在数据库喜欢音乐表中属于该登陆用户的所有歌曲中成功搜索出与该歌手相匹配的所有歌曲,并且与数据库音乐表中根据该歌手名查询出的歌曲信息一致(音乐标题、歌手、上传用户名),具体数据:输入“周”
  7. 我的喜欢页面不输入任何信息,点击搜索歌曲,搜索结果是否为数据库喜欢音乐表中属于该登陆用户的所有歌曲
  8. 我的喜欢页面输入不存在歌曲名,点击搜索歌曲,搜索结果是否为空
  9. 我的喜欢页面输入不存在歌手名,点击搜索歌曲,搜索结果是否为空
  10. 歌曲列表的歌曲,选择框是否可以被选中,选中后是否可以被取消
  11. 未选中歌曲时,点击批量移除,能否弹窗提醒用户“请先选择要移除收藏的音乐”
  12. 选中歌曲时,点击批量移除,若数据库的喜欢音乐表成功删除了属于该登陆用户id同时是选中歌曲的记录,且我的喜欢列表展示中已无选中的歌曲,能否弹窗提醒用户“移除成功”,若失败,能否弹窗提醒用户“移除失败,请重试”
  13. 点击移除喜欢,若数据库的喜欢音乐表成功删除了属于该登陆用户id的该条歌曲的记录,且我的喜欢列表中已无此歌曲,能否弹窗提醒用户“移除喜欢成功”,若失败,能否弹窗提醒用户“移除喜欢失败,请重试”
  14. 点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)
  15. 在未登录的情况下,在浏览器中直接输入搜索喜欢页(searchbylove.html)的URL网址,验证是否会重定向我的喜欢页面(lovemusic.html)

(3)播放功能

  1. 在网络通畅的情况下,播放歌曲的声音是否清晰
  2. 在网络通畅的情况下,是否可以完整播放完该歌曲
  3. 在网络通畅的情况下,播放的歌曲是否可以暂停播放
  4. 在网络通畅的情况下,暂停后是否可以点击按钮后继续播放
  5. 在网络通畅的情况下,播放歌曲的进度是否可以通过拉动进度条来调节
  6. 在网络通畅的情况下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

(4)分页功能

  1. 如果当前已经是首页,点击首页是否弹窗提醒当前已在首页
  2. 验证首页的歌曲是否显示正确,显示的歌曲是否是数据库音乐表中符合搜索结果且属于该登陆用户id的第一条歌曲和第二条歌曲,以此类推,验证其他页面的歌曲是否显示正确
  3. 如果当前不在首页,点击首页时,是否成功跳转首页,并且正确显示属于首页的音乐曲目
  4. 如果当前在首页,点击上一页,是否弹窗提醒当前已在首页
  5. 如果当前不在首页,点击上一页,是否成功跳转上一页,并且正确显示上一页的音乐曲目
  6. 如果当前在末页,点击下一页,是否弹窗提醒当前已在末页
  7. 如果当前在末页,点击末页,是否弹窗提醒当前已在末页
  8. 如果当前不在末页,点击下一页,是否成功跳转下一页,并且正确显示下一页的音乐曲目
  9. 如果当前不在末页,点击末页,是否成功跳转末页,并且正确显示末页的音乐曲目

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  4. 页面所有文字的样式是否符合要求,是否美观,工整、不含糊
  5. 弹窗的提示文字的大小,颜色是否符合要求
  6. 歌曲列表每页显示的歌曲数目是否符合要求
  7. 歌曲列表显示详细的歌曲信息,显示顺序是否符合要求

易用性测试

  1. 鼠标点击时,光标是否定位正确
  2. 点击跳转其他页面的入口标题是否清晰表达
  3. 点击移除删除时,是否有弹窗提醒,防止用户误触

性能测试

  1. 不同网速下,点击搜索歌曲来到搜索喜欢页(searchbylove.html)需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户登陆后,点击搜索歌曲来到搜索喜欢页(searchbylove.html)的响应时间是否符合要求
  4. 用户点击跳转其他页面的响应时间是否符合要求
  5. 不同网速下,播放器播放歌曲的声音是否清晰、不卡顿
  6. 不同网速下,是否可以完整播放完该歌曲
  7. 不同网速下,播放器的暂停按钮、继续播放按钮、拉动进度条等操作是否顺畅且有效
  8. 不同网速下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

兼容性测试

  1. 不同浏览器下,搜索列表页(searchbylist.html)能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,搜索列表页(searchbylist.html)能否正确显示并且功能正确
  3. 不同浏览器下,播放器能否正确显示并且功能正常使用
  4. 同一个浏览器的不同版本,播放器能否正确显示并且功能正常使用

我的上传---myupload.html

功能测试

(1)导航栏

  1. 点击首页,能否正确跳转到首页(index.html)
  2. 点击主页,能否正确跳转到主页(list.html)
  3. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  4. 点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  5. 点击登陆,能否正确跳转到登陆页面(login.html)
  6. 登陆状态时,点击退出,是否成功跳转登陆界面,并且清除session存的用户信息,在redis中查看退出后,是否还存在该用户的session信息

(2)搜索功能

  1. 输入框不输入任何内容,点击“搜索歌曲”,是否携带空参数且正常跳转搜索上传页(searchbyupload.html)页面
  2. 输入框输入搜索内容,点击“搜索歌曲”,是否携带参数且正常跳转搜索上传页(searchbyupload.html)页面
  3. 其他搜索测试用例参考搜索上传页(searchbyupload.html)页面

(3)展示歌曲列表

  1. 点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  2. 点击上传歌曲,能否正确跳转到上传音乐页面(upload.html)
  3. 歌曲列表中展示的所有歌曲数目和歌曲信息,是否和数据库音乐表属于该登录用户id的歌曲数目一致,且和歌曲信息相匹配(音乐标题、歌手名、上传时间是否一致)
  4. 点击喜欢,若数据库的喜欢音乐表成功添加了该条歌曲的记录且我的喜欢页面中成功展示,能否弹窗提醒用户“收藏成功”,若失败,能否弹窗提醒用户“收藏失败,请重试”
  5. 歌曲列表的歌曲,选择框是否可以被选中,选中后是否可以被取消
  6. 未选中歌曲时,点击批量删除,能否弹窗提醒用户“请先选择要删除上传的音乐”
  7. 选中歌曲时,点击批量删除,验证数据库的音乐表是否成功删除了属于该登陆用户id同时是选中歌曲的记录,且是否成功删除喜欢音乐表中和选择歌曲相匹配的所有记录,若成功删除,验证是否弹窗提醒用户“移除成功”,若批量删除失败,验证能否弹窗提醒用户“移除失败,请重试”
  8. 点击删除上传,验证数据库的音乐表是否成功删除了属于该登陆用户id的该条歌曲的记录,且是否成功删除喜欢音乐表中和该歌曲相匹配的所有记录,若成功删除,验证是否弹窗提醒用户“移除成功”,若批量删除失败,验证能否弹窗提醒用户“移除失败,请重试”
  9. 点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)

(4)播放功能

  1. 在网络通畅的情况下,播放歌曲的声音是否清晰
  2. 在网络通畅的情况下,是否可以完整播放完该歌曲
  3. 在网络通畅的情况下,播放的歌曲是否可以暂停播放
  4. 在网络通畅的情况下,暂停后是否可以点击按钮后继续播放
  5. 在网络通畅的情况下,播放歌曲的进度是否可以通过拉动进度条来调节
  6. 在网络通畅的情况下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

(5)分页功能

  1. 如果当前已经是首页,点击首页是否弹窗提醒当前已在首页
  2. 验证首页的歌曲是否显示正确,显示的歌曲是否是数据库音乐表中属于该登陆用户id上传的第一条歌曲和第二条歌曲,以此类推,验证其他页面的歌曲是否显示正确
  3. 如果当前不在首页,点击首页时,是否成功跳转首页,并且正确显示属于首页的音乐曲目
  4. 如果当前在首页,点击上一页,是否弹窗提醒当前已在首页
  5. 如果当前不在首页,点击上一页,是否成功跳转上一页,并且正确显示上一页的音乐曲目
  6. 如果当前在末页,点击下一页,是否弹窗提醒当前已在末页
  7. 如果当前在末页,点击末页,是否弹窗提醒当前已在末页
  8. 如果当前不在末页,点击下一页,是否成功跳转下一页,并且正确显示下一页的音乐曲目
  9. 如果当前不在末页,点击末页,是否成功跳转末页,并且正确显示末页的音乐曲目

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  4. 页面所有文字的样式是否符合要求,是否美观,工整、不含糊
  5. 弹窗的提示文字的大小,颜色是否符合要求
  6. 搜索输入框的提示文字是否显示正确,且大小、颜色是否符合要求
  7. 歌曲列表每页显示的歌曲数目是否符合要求
  8. 歌曲列表显示详细的歌曲信息,显示顺序是否符合要求

易用性测试

  1. 鼠标点击时,光标是否定位正确
  2. 点击跳转其他页面的入口标题是否清晰表达
  3. 点击删除上传时,是否有弹窗提醒,防止用户误触

安全测试

  1. 搜索输入框输入 or 1=1,验证输入框是否存在对SQL注入做处理
  2. 搜索输入框是否对脚本做了处理(XSS攻击)
  3. 在未登陆的情况下,在浏览器中直接输入我的上传页面(myupload.html)的网址,验证是否会重定向到用户登陆界面(login.html)
  4. 同一台电脑上,是否允许对同一个用户登陆两次
  5. 在不同的电脑上,是否允许同一个用户进行登陆,第二台电脑登录后,会不会挤掉第一台电脑登陆的用户

性能测试

  1. 不同网速下,我的上传页面(myupload.html)需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户登陆后跳转我的上传页面(myupload.html)的响应时间是否符合要求
  4. 用户点击跳转其他页面的响应时间是否符合要求
  5. 不同网速下,播放器播放歌曲的声音是否清晰、不卡顿
  6. 不同网速下,是否可以完整播放完该歌曲
  7. 不同网速下,播放器的暂停按钮、继续播放按钮、拉动进度条等操作是否顺畅且有效
  8. 不同网速下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

兼容性测试

  1. 不同浏览器下,我的上传页面(myupload.html)能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,我的上传页面(myupload.html)能否正确显示并且功能正确
  3. 不同浏览器下,播放器能否正确显示并且功能正常使用
  4. 同一个浏览器的不同版本,播放器能否正确显示并且功能正常使用

搜索上传页---searchbyupload.html

功能测试

(1)导航栏

  1. 点击首页,能否正确跳转到首页(index.html)
  2. 点击主页,能否正确跳转到主页(list.html)
  3. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  4. 点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  5. 点击我的上传,能否正确跳转到我的上传页面(myupload.html)
  6. 点击登陆,能否正确跳转到登陆页面(login.html)
  7. 登陆状态时,点击退出,是否成功跳转登陆界面,并且清除session存的用户信息,在redis中查看退出后,是否还存在该用户的session信息

(2)搜索结果

  1. 点击我的喜欢,能否正确跳转到我的喜欢页面(lovemusic.html)
  2. 点击上传音乐,能否正确跳转到上传音乐页面(upload.html)
  3. 我的上传页面中输入完整的歌曲名,点击搜索歌曲,能否成功在数据库音乐表中属于该登陆用户上传的所有歌曲中搜索出与歌曲名相匹配的所有歌曲,并且与数据库音乐表中根据该歌曲名查询出的歌曲信息一致(音乐标题、歌手、上传时间),具体数据:输入“大象”
  4. 我的上传页面中输入完整的歌手名,点击搜索歌曲,能否成功在数据库音乐表中属于该登陆用户上传的所有歌曲中搜索出与该歌手相匹配的所有歌曲,并且与数据库音乐表中根据该歌手名查询出的歌曲信息一致(音乐标题、歌手、上传时间),具体数据:输入“周杰伦”
  5. 我的上传页面中输入不完整的歌曲名,点击搜索歌曲,能否根据模糊查询在数据库音乐表中属于该登陆用户上传的所有歌曲中成功搜索出与歌曲名相匹配的所有歌曲,并且与数据库音乐表中根据该歌曲名查询出的歌曲信息一致(音乐标题、歌手、上传时间),具体数据:输入“的”
  6. 我的上传页面中输入不完整的歌手名,点击搜索歌曲,能否根据模糊查询在数据库音乐表中属于该登陆用户上传的所有歌曲中成功搜索出与该歌手相匹配的所有歌曲,并且与数据库音乐表中根据该歌手名查询出的歌曲信息一致(音乐标题、歌手、上传时间),具体数据:输入“周”
  7. 我的上传页面不输入任何信息,点击搜索歌曲,搜索结果是否为数据库音乐表中属于该登陆用户上传的所有歌曲,并且与数据库音乐表中存储的歌曲信息一致(音乐标题、歌手、上传时间)
  8. 我的上传页面输入不存在歌曲名,点击搜索歌曲,搜索结果是否为空
  9. 我的上传页面输入不存在歌手名,点击搜索歌曲,搜索结果是否为空
  10. 歌曲列表的歌曲,选择框是否可以被选中,选中后是否可以被取消
  11. 点击喜欢,若数据库的喜欢音乐表成功添加了该条歌曲的记录且我的喜欢页面中成功展示,能否弹窗提醒用户“收藏成功”,若失败,能否弹窗提醒用户“收藏失败,请重试”
  12. 歌曲列表的歌曲,选择框是否可以被选中,选中后是否可以被取消
  13. 未选中歌曲时,点击批量删除,能否弹窗提醒用户“请先选择要删除上传的音乐”
  14. 选中歌曲时,点击批量删除,验证数据库的音乐表是否成功删除了属于该登陆用户id同时是选中歌曲的记录,且是否成功删除喜欢音乐表中和选择歌曲相匹配的所有记录,若成功删除,验证是否弹窗提醒用户“移除成功”,若批量删除失败,验证能否弹窗提醒用户“移除失败,请重试”
  15. 点击删除上传,验证数据库的音乐表是否成功删除了属于该登陆用户id的该条歌曲的记录,且是否成功删除喜欢音乐表中和该歌曲相匹配的所有记录,若成功删除,验证是否弹窗提醒用户“移除成功”,若批量删除失败,验证能否弹窗提醒用户“移除失败,请重试”
  16. 点击歌曲列表处的播放歌曲按钮,能否正确播放歌曲(该歌曲是否和数据库以及服务器存储的歌曲一致)
  17. 在未登录的情况下,在浏览器中直接输入搜索上传页(searchbyupload.html)的URL网址,验证是否会重定向我的上传页面(myupload.html)

(3)播放功能

  1. 在网络通畅的情况下,播放歌曲的声音是否清晰
  2. 在网络通畅的情况下,是否可以完整播放完该歌曲
  3. 在网络通畅的情况下,播放的歌曲是否可以暂停播放
  4. 在网络通畅的情况下,暂停后是否可以点击按钮后继续播放
  5. 在网络通畅的情况下,播放歌曲的进度是否可以通过拉动进度条来调节
  6. 在网络通畅的情况下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

(4)分页功能

  1. 如果当前已经是首页,点击首页是否弹窗提醒当前已在首页
  2. 验证首页的歌曲是否显示正确,显示的歌曲是否是数据库表中符合搜索结果且属于该登陆用户上传的第一条歌曲和第二条歌曲,以此类推,验证其他页面的歌曲是否显示正确
  3. 如果当前不在首页,点击首页时,是否成功跳转首页,并且正确显示属于首页的音乐曲目
  4. 如果当前在首页,点击上一页,是否弹窗提醒当前已在首页
  5. 如果当前不在首页,点击上一页,是否成功跳转上一页,并且正确显示上一页的音乐曲目
  6. 如果当前在末页,点击下一页,是否弹窗提醒当前已在末页
  7. 如果当前在末页,点击末页,是否弹窗提醒当前已在末页
  8. 如果当前不在末页,点击下一页,是否成功跳转下一页,并且正确显示下一页的音乐曲目
  9. 如果当前不在末页,点击末页,是否成功跳转末页,并且正确显示末页的音乐曲目

界面测试

  1. 浏览器大小调节,样式显示是否会错乱
  2. 页面的所有文字是否存在错别字、折行、重叠等
  3. 背景颜色、尺寸、分辨率、占全局的比例是否符合要求
  4. 页面所有文字的样式是否符合要求,是否美观,工整、不含糊
  5. 弹窗的提示文字的大小,颜色是否符合要求
  6. 歌曲列表每页显示的歌曲数目是否符合要求
  7. 歌曲列表显示详细的歌曲信息,显示顺序是否符合要求

易用性测试

  1. 鼠标点击时,光标是否定位正确
  2. 点击跳转其他页面的入口标题是否清晰表达
  3. 点击删除上传时,是否有弹窗提醒,防止用户误触

性能测试

  1. 不同网速下,点击搜索歌曲来到搜索上传页(searchbyupload.html)需要多长的响应时间
  2. 高并发场景下服务器的性能指标是否符合要求
  3. 单用户登陆后,点击搜索歌曲,来到搜索上传页(searchbyupload.html)的响应时间是否符合要求
  4. 用户点击跳转其他页面的响应时间是否符合要求
  5. 不同网速下,播放器播放歌曲的声音是否清晰、不卡顿
  6. 不同网速下,是否可以完整播放完该歌曲
  7. 不同网速下,播放器的暂停按钮、继续播放按钮、拉动进度条等操作是否顺畅且有效
  8. 不同网速下,播放歌曲时播放器能否正确显示歌曲的名字,以及播放时间

兼容性测试

  1. 不同浏览器下,搜索上传页(searchbyupload.html)能否正确显示并且功能正确
  2. 同一个浏览器的不同版本,搜索上传页(searchbyupload.html)能否正确显示并且功能正确
  3. 不同浏览器下,播放器能否正确显示并且功能正常使用
  4. 同一个浏览器的不同版本,播放器能否正确显示并且功能正常使用

自动化测试Java + selenium

前置工作

  1. 执行每一个执行用例时要进行截图,按时间(天)进行文件夹分类,按执行测试用例的时间和类名进行命名
  2. 每一个页面的测试用例都需要创建驱动对象和销毁驱动对象,因此可以独立出来,其他页面调用即可
public class AutoTestUtils {

    public static ChromeDriver driver;

    /**
     * 创建驱动对象
     * @return
     */
    public static ChromeDriver createDriver(){
        if(driver == null){
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--remote-allow-origins=*");
            ChromeDriver driver = new ChromeDriver(options);
            //创建隐式等待
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20));
        }
        return driver;
    }

    /**
     * 把文件按照天的维度 按文件夹进行保存 例如:20231013-123456毫秒
     * @return
     */
    public List<String> getTime(){
        SimpleDateFormat 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;
    }
    /**
     * 获取屏幕截图,把所有测试用例的结果保存下来
     * @param str
     */
    public void getScreenShot(String str) throws IOException {
        List<String> list = getTime();
        //dir + filename
        // ./指的是当前项目路径下
        // ./src/test/java/MusicAutoTest/dirname/filename
        // ./src/test/java/MusicAutoTest/20231014/MusicLoginTest_20231014-123456毫秒.png
        String filename = "./src/test/java/MusicAutoTest/" + list.get(0) + "/" + str + "_" +list.get(1) + ".png";
        File srcfile = driver.getScreenshotAs(OutputType.FILE);
        // 把截图生成的文件放到指定的路径
        FileUtils.copyFile(srcfile,new File(filename));
    }
}
//销毁驱动对象
public class DriverQuitTest extends AutoTestUtils{
    public static  ChromeDriver driver = createDriver();

    @Test
    public void driverQuit(){
        driver.quit();
    }
}

注册页面---register.html

  1. 验证注册页面是否可以正常打开
  2. 验证用户名合法且正确,密码合法且正确,确认合法且密码一致的情况下,是否注册成功,具体数据:(老六,123456a,123456a)、(李四,123456a,123456a)
  3. 验证用户名合法正确,密码不合法,确认密码一致的情况下,是否注册失败,具体数据:(王五,12345,12345)
  4. 点击跳转其他页面可参考首页,也进行手工测试
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MusicRegisterTest extends AutoTestUtils {
    //创建浏览器对象
    public static ChromeDriver driver = createDriver();

    //访问注册界面的URL
    @BeforeAll
    public static void baseUrl(){
        driver.get("http://43.139.103.56:8081/register.html");
    }

    /**
     * 检查注册界面打开是否正确
     */
    @Test
    @Order(1)
    public void loginPageLoadRight(){
        //注册h3标题
        driver.findElement(By.cssSelector("body > div > div.login-container > div > h3"));
        //注册按钮
        driver.findElement(By.xpath("//*[@id=\"submit\"]"));
    }

    /**
     * 使用多参数 检查正常注册的情况
     * @param name 用户名
     * @param psw1  密码
     * @param psw2  确认密码
     */
    @ParameterizedTest
    @CsvSource({"老六,123456a,123456a","李四,123456a,123456a"})
    @Order(2)
    public void registerSuc(String name,String psw1,String psw2) throws IOException {
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20));
        // 回退时候需清空输入框,才能继续测试
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password1")).clear();
        driver.findElement(By.cssSelector("#password2")).clear();
        //输入数据
        driver.findElement(By.cssSelector("#username")).sendKeys(name);
        driver.findElement(By.cssSelector("#password1")).sendKeys(psw1);
        driver.findElement(By.cssSelector("#password2")).sendKeys(psw1);
        driver.findElement(By.cssSelector("#submit")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20));
        // 对注册界面结果进行检测,如果跳转到 登陆页面才算登陆成功
        driver.findElement(By.cssSelector("body > div > div.login-container > div > h3"));
        //截图
        getScreenShot(getClass().getName());
        //让浏览器回退到注册界面,继续其他操作
        driver.navigate().back();
    }

    /**
     * 使用多参数 检查异常注册的情况
     * @param name 用户名
     * @param psw1 密码
     * @param psw2 确认密码
     */
    @ParameterizedTest
    @CsvSource({"王五,12345,12345"})
    @Order(3)
    public void registerFail(String name,String psw1,String psw2){

        driver.findElement(By.cssSelector("#username")).sendKeys(name);
        driver.findElement(By.cssSelector("#password1")).sendKeys(psw1);
        driver.findElement(By.cssSelector("#password2")).sendKeys(psw1);
        driver.findElement(By.cssSelector("#submit")).click();

        // 对注册界面结果进行检测,对弹窗信息进行比对
        Alert alert = driver.switchTo().alert();
        String result = alert.getText();
        String str = "该密码设置不符合要求,请重新设置!";
        alert.accept();
        Assertions.assertEquals(str,result);
        //截图
        try {
            getScreenShot(getClass().getName());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

登陆界面---login.html

  1. 验证登陆页面是否可以正常打开
  2. 验证用户名正确,密码正确,确认密码一致的情况下,是否登陆成功,具体数据:(test,123456a,123456a)、(demo,123456a,123456a)
  3. 验证用户名合法正确,密码不正确,确认密码不正确且一致的情况下,是否登陆失败,具体数据:(test,123456,123456)
  4. 点击跳转其他页面可参考首页,也可以进行手工测试
//创建浏览器对象
    public static ChromeDriver driver = createDriver();

    //访问登陆界面的URL
    @BeforeAll
    public static void baseUrl(){
        driver.get("http://43.139.103.56:8081/login.html");
    }

    /**
     * 检查登录界面打开是否正确
     */
    @Test
    @Order(1)
    public void loginPageLoadRight(){
        //登陆h3标题
        driver.findElement(By.cssSelector("body > div > div.login-container > div > h3"));
        //登陆按钮
        driver.findElement(By.xpath("//*[@id=\"submit\"]"));
    }

    /**
     * 使用多参数 检查正常登录的情况
     * @param name 用户名
     * @param psw1  密码
     * @param psw2  确认密码
     */
    @ParameterizedTest
    @CsvSource({"test,123456a,123456a","demo,123456a,123456a"})
    @Order(2)
    public void loginSuc(String name,String psw1,String psw2) throws IOException {
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20));
        // 回退时候需清空输入框,才能继续测试
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password1")).clear();
        driver.findElement(By.cssSelector("#password2")).clear();
        //输入数据
        driver.findElement(By.cssSelector("#username")).sendKeys(name);
        driver.findElement(By.cssSelector("#password1")).sendKeys(psw1);
        driver.findElement(By.cssSelector("#password2")).sendKeys(psw1);
        driver.findElement(By.cssSelector("#submit")).click();
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(20));
        // 对登陆界面结果进行检测,如果跳转到 我的喜欢页面才算登陆成功
        driver.findElement(By.cssSelector("body > div.super_container > div.home > div.home_container > div > div > div > div > div"));
        //截图
        getScreenShot(getClass().getName());
        //让浏览器回退到登陆界面,继续其他操作
        driver.navigate().back();
    }

    /**
     * 使用多参数 检查异常登录的情况
     * @param name 用户名
     * @param psw1 密码
     * @param psw2 确认密码
     */
    @ParameterizedTest
    @CsvSource({"test,123456,123456"})
    @Order(3)
    public void loginFail(String name,String psw1,String psw2){

        driver.findElement(By.cssSelector("#username")).sendKeys(name);
        driver.findElement(By.cssSelector("#password1")).sendKeys(psw1);
        driver.findElement(By.cssSelector("#password2")).sendKeys(psw1);
        driver.findElement(By.cssSelector("#submit")).click();

        // 对登陆界面结果进行检测,对弹窗信息进行比对
        Alert alert = driver.switchTo().alert();
        String result = alert.getText();
        String str = "用户名或者密码错误,请重试!";
        alert.accept();
        Assertions.assertEquals(str,result);
        //截图
        try {
            getScreenShot(getClass().getName());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

首页---index.html

  1. 验证上传音乐页面是否可以正常打开
  2. 验证播放音乐功能是否可以正常使用
  3. 验证跳转其他页面功能是否正常
  4. 导航栏跳转可继续手工测试
//创建浏览器对象
    public static  ChromeDriver driver = createDriver();

    //访问首页界面的URL
    @BeforeAll
    public static void baseUrl(){
        driver.get("http://43.139.103.56:8081/index.html");
    }

    /**
     * 首页是否可以正常显示
     */
    @Test
    @Order(1)
    public void indexLoadRight() throws IOException {
        driver.findElement(By.cssSelector("body > div.super_container > div.home > div > div > div.home_container > div > div > div > div > div > div > h1"));
        driver.findElement(By.cssSelector("body > div.super_container > div.container > div > div.col-lg-8.order-lg-2.order-1 > div > div.section_title > h1"));
        getScreenShot(getClass().getName());
    }

    /**
     * 首页播放音乐是否可以正常使用
     */
    @Test
    @Order(2)
    public void indexPlayMusic() throws InterruptedException, IOException {
        driver.findElement(By.cssSelector("#info > li:nth-child(1) > div.button.tour_button.ml-auto > a")).click();
        Thread.sleep(800);
        driver.findElement(By.cssSelector("body > div.bofanqi > div > div > div.controlbar > ul > li:nth-child(1) > a")).click();
        getScreenShot(getClass().getName());
    }

    /**
     * 跳转其他页面是否正常
     */
    @Test
    @Order(3)
    public void indexJumpToPage() throws IOException {
        //点击了解更多歌曲 是否正常跳转主页
        driver.findElement(By.cssSelector("body > div.super_container > div.container > div > div.col-lg-8.order-lg-2.order-1 > div > div.tours_link > a")).click();
        driver.findElement(By.cssSelector("body > div.super_container > div.home > div.home_container > div > div > div > div > div"));
        getScreenShot(getClass().getName());
        driver.navigate().back();
        //点击 登陆账号 是否正常跳转登陆界面
        driver.findElement(By.cssSelector("body > div.super_container > div.container > div > div.col-lg-4.order-lg-1.order-2.tours_col > div > div.button.extra_button > a")).click();
        driver.findElement(By.cssSelector("body > div > div.login-container > div > h3"));
        getScreenShot(getClass().getName());
        driver.navigate().back();
        //点击 注册账号 是否正常跳转注册界面
        driver.findElement(By.cssSelector("body > div.super_container > div.app > div > div > div.col-lg-6.order-lg-2.order-1 > div > div.stores.d-flex.flex-row.align-items-start.justify-content-start.flex-wrap > div:nth-child(1) > a")).click();
        driver.findElement(By.cssSelector("body > div > div.login-container > div > h3"));
        getScreenShot(getClass().getName());
        driver.navigate().back();
        //点击 上传音乐 是否正常跳转上传音乐页面
        driver.findElement(By.cssSelector("body > div.super_container > div.app > div > div > div.col-lg-6.order-lg-2.order-1 > div > div.stores.d-flex.flex-row.align-items-start.justify-content-start.flex-wrap > div:nth-child(2) > a")).click();
        driver.findElement(By.cssSelector("body > div.super_container > div.home > div.home_container > div > div > div > div > div"));
        getScreenShot(getClass().getName());
        driver.navigate().back();
    }
}

主页---list.html

  1. 验证主页页面是否可以正常打开
  2. 验证播放音乐功能是否可以正常使用
  3. 验证搜索功能是否可以正常使用,具体输入数据:(周杰伦)、(爱的飞行日记)
  4. 点击跳转其他页面可参考首页,也可以进行手工测试
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MusicListTest extends AutoTestUtils {
    //创建浏览器对象
    public static  ChromeDriver driver = createDriver();

    //访问主页界面的URL
    @BeforeAll
    public static void baseUrl(){
        driver.get("http://43.139.103.56:8081/list.html");
    }

    /**
     * 主页是否可以正常显示
     */
    @Test
    @Order(1)
    public void listLoadRight() throws IOException {
        driver.findElement(By.cssSelector("body > div.super_container > div.home > div.home_container > div > div > div > div > div"));
        getScreenShot(getClass().getName());
    }

    /**
     * 主页的搜索功能是否可以正常使用
     */
    @ParameterizedTest
    @CsvSource({"周杰伦","爱的飞行日记"})
    @Order(2)
    public void listSearchRight(String name) throws IOException {
        driver.findElement(By.cssSelector("#title")).sendKeys(name);
        driver.findElement(By.xpath("//*[@id=\"submit1\"]")).click();
        driver.findElement(By.xpath("/html/body/div[2]/div[2]/div[2]/div/div/div/div/div"));
        getScreenShot(getClass().getName());
        driver.navigate().back();
        driver.findElement(By.cssSelector("#title")).clear();
    }

}

上传音乐---upload.html

  1. 验证上传音乐页面是否可以正常打开
  2. 验证完整填写音乐标题、歌手名,且上传mp3格式文件是否上传成功
  3. 验证完整填写音乐标题、歌手名,且上传非mp3格式文件是否上传失败
  4. 导航栏跳转其他页面可以进行手工测试
//创建浏览器对象
    public static ChromeDriver driver = createDriver();

    //访问上传音乐界面的URL
    @BeforeAll
    public static void baseUrl(){
        driver.get("http://43.139.103.56:8081/upload.html");
    }

    /**
     * 检查上传界面打开是否正确
     * @throws IOException
     */
    @Test
    @Order(1)
    public void uploadLoadRight() throws IOException {
        driver.findElement(By.cssSelector("body > div.super_container > div.home > div.home_container > div > div > div > div > div"));
        getScreenShot(getClass().getName());
    }

    /**
     * 检查mp3文件是否上传成功
     * @throws InterruptedException
     * @throws IOException
     */
    @Test
    @Order(2)
    public void UploadSec() throws InterruptedException, IOException {
        driver.findElement(By.cssSelector("#title1")).sendKeys("公公偏头痛");
        driver.findElement(By.cssSelector("#singer1")).sendKeys("周杰伦");
        //鼠标悬停在文件上传框上
        WebElement fileInput = driver.findElement(By.cssSelector("#filename1"));
        Actions actions = new Actions(driver);
        Action hover = actions.moveToElement(fileInput).build();
        hover.perform();
        //选择文件
        fileInput.sendKeys("D:\\music\\周杰伦-公公偏头痛.mp3");
        //上传,等待上传
        driver.findElement(By.cssSelector("#sub")).click();
        Thread.sleep(20000);
        //检查是否上传成功
        Alert alert = driver.switchTo().alert();
        String result = alert.getText();
        String str = "上传成功!";
        alert.accept();
        Assertions.assertEquals(str,result);
        getScreenShot(getClass().getName());
    }
 /**
     * 验证上传非MP3格式文件是否上传失败
     * @throws InterruptedException
     * @throws IOException
     */
    @Test
    @Order(3)
    public void UploadFail() throws InterruptedException, IOException {
        driver.findElement(By.cssSelector("#title1")).sendKeys("不能说的秘密");
        driver.findElement(By.cssSelector("#singer1")).sendKeys("周杰伦");
        //鼠标悬停在文件上传框上
        WebElement fileInput = driver.findElement(By.cssSelector("#filename1"));
        Actions actions = new Actions(driver);
        Action hover = actions.moveToElement(fileInput).build();
        hover.perform();
        //选择文件
        fileInput.sendKeys("D:\\music\\周杰伦-不能说的秘密.flac");
        //上传,等待上传
        driver.findElement(By.cssSelector("#sub")).click();
        Thread.sleep(20000);
        //检查是否上传成功
        Alert alert = driver.switchTo().alert();
        String result = alert.getText();
        String str = "请上传mp3格式的文件!";
        alert.accept();
        Assertions.assertEquals(str,result);
        getScreenShot(getClass().getName());
    }

我的喜欢---lovemusic.html

  1. 在登陆状态下,验证页面我的喜欢页面是否可以正常打开
  2. 验证搜索功能是否可以正常使用,具体输入数据:(周杰伦)、(浪漫手机)
  3. 点击跳转其他页面可参考首页,也可以进行手工测试
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MusicLoveTest extends AutoTestUtils {
    //创建浏览器对象
    public static ChromeDriver driver = createDriver();

    //访问我的喜欢界面的URL
    @BeforeAll
    public static void baseUrl(){
        driver.get("http://43.139.103.56:8081/myupload.html");
    }

    /**
     * 检查我的喜欢界面打开是否正确
     * @throws IOException
     */
    @Test
    @Order(1)
    public void loveMusicLoadRight() throws IOException {
        driver.findElement(By.cssSelector("body > div.super_container > div.home > div.home_container > div > div > div > div > div"));
        getScreenShot(getClass().getName());
    }
    /**
     * 我的喜欢页面 搜索功能是否可以正常使用
     */
    @ParameterizedTest
    @CsvSource({"周杰伦","浪漫手机"})
    @Order(2)
    public void lovemusicSearchRight(String name) throws IOException {
        driver.findElement(By.cssSelector("#title")).sendKeys(name);
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        driver.findElement(By.xpath("/html/body/div[2]/div[2]/div[2]/div/div/div/div/div"));
        getScreenShot(getClass().getName());
        driver.navigate().back();
        driver.findElement(By.cssSelector("#title")).clear();
    }
}

我的上传---myupload.html

  1. 在登陆状态下,验证页面我的上传页面是否可以正常打开
  2. 验证搜索功能是否可以正常使用,具体输入数据:(周杰伦)、(爱的飞行日记)
  3. 点击跳转其他页面可参考首页,也可以进行手工测试
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MusicMyuploadTest extends AutoTestUtils {
    //创建浏览器对象
    public static ChromeDriver driver = createDriver();

    //访问我的上传界面的URL
    @BeforeAll
    public static void baseUrl(){
        driver.get("http://43.139.103.56:8081/lovemusic.html");
    }

    /**
     * 检查我的上传界面打开是否正确
     * @throws IOException
     */
    @Test
    @Order(1)
    public void loveMusicLoadRight() throws IOException {
        driver.findElement(By.cssSelector("body > div.super_container > div.home > div.home_container > div > div > div > div > div"));
        getScreenShot(getClass().getName());
    }
    /**
     * 我的上传页面 搜索功能是否可以正常使用
     */
    @ParameterizedTest
    @CsvSource({"周杰伦","爱的飞行日记"})
    @Order(2)
    public void lovemusicSearchRight(String name) throws IOException {
        driver.findElement(By.cssSelector("#title")).sendKeys(name);
        driver.findElement(By.xpath("//*[@id=\"submit\"]")).click();
        driver.findElement(By.xpath("/html/body/div[2]/div[2]/div[2]/div/div/div/div/div"));
        getScreenShot(getClass().getName());
        driver.navigate().back();
        driver.findElement(By.cssSelector("#title")).clear();
    }
}

其他页面

  1. 搜索列表页---searchbylist.html,区别于主页list.html是无搜索功能,可进行手工测试
  2. 搜索喜欢页---searchbylove.html,区别于我的喜欢页面lovemusic.html是无搜索功能,可进行手工测试
  3. 搜索上传页---searchbyupload.html,区别于我的上传页面myupload.html是无搜索功能,可进行手工测试

如有错误,欢迎指正,感谢阅读。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编写Web自动化测试用例时,可以按照以下步骤进行: 1. 确定测试目标:明确测试的目的和预期结果,确保测试用例的准确性和有效性。 2. 识别测试场景:根据需求文档、用户故事等,识别出需要测试的功能和操作场景。 3. 设计测试用例:根据测试场景,设计具体的测试用例。每个测试用例应包括以下要素: - 测试步骤:明确需要执行的操作步骤,包括输入数据、点击按钮、选择选项等。 - 预期结果:定义每个步骤执行后的预期结果,包括页面跳转、文本显示、提示信息等。 4. 组织测试用例:将设计好的测试用例按照模块或功能进行分类和组织,方便管理和执行。 5. 使用合适的自动化测试工具编写代码:选择适合的自动化测试工具,如Selenium,使用相关编程语言(如Java、Python)编写测试脚本。 6. 实现测试逻辑:根据测试用例中的步骤和预期结果,使用自动化测试工具的API或方法实现相应的操作和验证。 7. 执行和调试测试用例:运行自动化测试脚本,观察执行结果是否符合预期。根据需要,进行调试和修改代码。 8. 维护和更新测试用例:随着应用程序的变化,测试用例也需要进行维护和更新,保持其准确性和有效性。 需要注意的是,编写Web自动化测试用例时,应尽量避免依赖于具体的UI元素定位方式,而是通过使用唯一而稳定的属性或标识符进行元素定位,以提高测试的可靠性和可维护性。此外,还可以使用数据驱动的方法,通过参数化测试数据来扩展测试用例的覆盖范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值