测试用例设计
功能测试
该部分主要围绕对于博客系统的增删改查, 文章通过性审核, 关注功能等进行测试, 还进行了其它一些探索性的测试.
以上是作者设计的全部用例.
BUG发现:
问题1: 当多端同时操作同一篇文章BUG
环境: Windows11, Edge和Chrome浏览器
复现步骤:
1.先使用Edge浏览器登入zhangsan的账号, 再使用Chrome浏览器登入同一个账号
2.使用两端同时点入同一篇文章详情(zhangsan创作的)
3.在Edge浏览器的账号中点击删除文章, 同时Chrome浏览器的账号进行刷新/点击更新操作
预期结果: Chrome浏览器中的账号也退回到主页
实际结果: Chrome浏览器中的账号显示页面没有任何信息
建议解决方案: 当文章无法获取时, 想获取文章的账户退回到主页.
问题2:同浏览器中的会话共用问题
环境: Windows11, Edge浏览器
复现步骤:
1.在Edge浏览器中登入zhangsan的账号
2.同时在这个浏览器另开一个窗口, 登入zhangsan的账号.
3.第一个窗口中点击注销账号
4.第二个窗口中随意进行操作(刷新/点击查看文章详细等)
预期结果: 第二个窗口中的账号不受影响, 仍能够继续操作.
实际结果: 第二个窗口中的账号直接退回至登录页
建议解决方案: 在同一个浏览器中登录同一个账号时, 分配不同的会话.
其它测试用例设计
该部分针对安全性, 界面, 易用性, 性能, 兼容性, 网络等用例进行了设计
这里仅挑选网络部分来讲, 其它的就不展开了.
这里使用fiddler对于弱网环境进行测试, 主要针对2G和3G网络环境下进行测试
利用Ctrl F在脚本中查找m_SimulateModem然后在这里设置网速即可达到改网速的效果.
将上行速率改为3000, 下行速率改为1500(2G)
勾选Simulate Modem Speeds以进入弱网模式.
测试结论: 前端部分的渲染耗时10s(真的很慢), 影响用户体验, 建议优化.
将上行速率改为20, 下行改为10模拟3G环境.
测试结论: 响应时间正常, 可以正常使用.
自动化测试
介绍:本部分针对博客系统的核心功能进行测试: 即登录/列表页/详情页/编辑页. 进行对于博客的发布(含敏感词检测), 查看, 删除, 更新, 关注, 取消关注这些主要功能进行测试.
用例设计
代码编写
代码见: Java所有代码/CTest/src/main/java/org/example/blogtest · 灰灰快醒醒/邹锦辉个人所有代码 - 码云 - 开源中国 (gitee.com)
注: 这里使用Java中Selenium + JUnit进行测试
1.根据UI用例实现脚本编写: 每一个页面一个测试类, 然后对于各个用例进行编写.
2.公共属性设计单例, 方便进行代码复用.
3.创建启动以及截图经常使用, 将它们设为公共的.
4.注意添加隐式等待, 确保页面正确显示.
设计如下:
公共类 AutotestUtils
1.创建驱动: 保存现场截图
2.注意: 在保存截图时命名按照时间进行划分, 然后要体现出测试类的类名, 方便问题追溯
3.注意文件名动态获取, 时间格式的设置等.
4.在内部实现对于浏览器驱动的创建, 并提供创建方法.
登录页面测试BlogLoginTest
1.创建驱动, 打开页面
2.测试页面是否正常打开
3.测试正常登录: 多参数设置
4.测试异常登录: 密码错误, 为空等
5.注意测试顺序: 利用Order注解指定
6.注意清空输入内容以进行对现场的恢复
列表页测试BlogListTest
1.测试博客列表页是否能够正常打开
2.测试列表中查看全文的跳转情况.
3.测试未登录时的处理情况
4.也要注意测试的顺序
编辑页测试EditBlogTest
1.查看编辑页是否能够正常打开.
2.正确发布博客: 发布成功, 滚动到底部检查情况
3.博客发布异常: 空的标题/标题含敏感词等
4.注意测试的顺序
详情页测试 BlogDetailTest
1.查看详情页是否能够正常打开
2.回到主页, 记录当前用户的信息
3.进入详情页, 如果作者名和用户名一致, 查看编辑/删除文章按钮是否存在(并点击删除按钮), 回到主页查看文章是否存在
4. 如果作者名和用户名不一致, 则查看关注/取消关注按钮是否存在.
获取当前作者粉丝量, 点击按钮后查看粉丝量变化情况
驱动释放
直接将一个类作为驱动释放, 放到测试套件最后即可.
测试套件
使用的是当前测试类的执行顺序.
//测试套件运行 登录 -> 博客列表页 -> 博客编辑页 -> 博客详细页 -> 关闭驱动
@Suite
@SelectClasses({BlogLoginTest.class,BlogListTest.class,BlogDetailTest.class,BlogEditTest.class})
public class runSuite {
}
测试结果
全部测试通过, 测试耗时较为正常.
问题:
测试详情页时页面未完全加载, 说明该部分有性能瓶颈/未添加等待.
小结
(1)一定要关注测试用例的执行顺序问题: 使用JUnit的@TestMethodOrder(MethodOrderer.OrderAnnotation.class)配合@Order注解即可
(2)对于页面要检查到位, 如检查元素以保证页面的正确性
(3)适当添加等待, 确保页面加载后/元素出来后再进行操作.
(4)注意驱动位置: 在最后一个用例结束后关闭.
(5)注意截图保存形式: 时间 + 截图时的类
(6)测试用例不宜过多, 能够测试大部分功能即可.
(7)注意元素的获取时机, 一定要等加载出来了再进行获取
(8)由于测试类之间是前后衔接的, 需要记得在一个用例执行后恢复现场, 方便下一个类执行.
性能测试
工具: Jmeter
目的: 针对登录, 编写并发布博客, 删除博客等功能的简单性能测试.
登录测试
1.设置http请求默认值. 设置统一的IP地址和端口号
2.创建一个线程组, 设置一个HTTP请求, 并绑定正确用户的信息.
3.创建结果树, 发送单个请求, 验证请求是否能够发送.
发现登录成功.
4.这时我们进行负载测试, 设定这样的用户增长环境:
观察响应时间项:
发现用户线程数量在30-40左右时响应时间较长, 达到了0.5-1秒, 但是后面响应时间又缩短了, 总体上响应时间是比较正常的.
观察TPS(每秒处理事务数):
平均大概是每秒240的事务数, 对于博客系统这个小项目来说, 这个已经是很不错的了, 不用过度调优.
以下是汇总报告: