本篇使用Selenium3+Junit5对个人技术交流论坛进行简单的自动化测试,如有错误,请在评论区指正,让我们一起交流,共同进步!
本文开始
项目介绍:
技术交流论坛基于 Spring Boot,MyBatis, MySQL等技术实现的一个前后端分离的一个项目;
主要功能页有:登录页、注册页、技术交流论坛列表展示页,帖子编辑发布和个人中心页。
测试主要页面:登录页面,注册页面,列表展示页面以及帖子编辑发布页,个人信息展示,退出操作功能。【都是基于常用的主要页面进行的】
3.1.1 配置环境:
创建Maven项目,配置pom.xml文件
3.1.2 配置使用的公共类
原因:
1.每个测试用例都需要驱动,使用前置方法设置,后置方法释放驱动资源
2.配置一些公共方法,方便测试使用;如:截图方法,进入登录状态方法等
3.1.3 项目目录 + 截图
3.2.1 注册自动化测试
- 注册界面测试 - RegTest
1.获取驱动,打开注册界面
2.找到输入框,输入账号,昵称,密码,确认密码
3.点击确认协议
4.校验是否注册成功
5.注册失败,截图查看失败原因
成功注册
注册失败情况
【注】编写的测试用例太多,取几个演示
测试结果:
3.2.2 登录自动化测试
- 登录界面自动化测试 - LoginTest
1.获取驱动,打开登录界面
2.校验正常登录 - 多参数测试,多个测试用例
3.校验异常登录 - 错误的密码登录
4.对于多组测试,需要清空上次输入的内容
5.使用注解保证测试的顺序
成功登录情况
失败登录
运行结果
3.2.3 列表页自动化测试
- 遇到的bug:
- 操作:登录状态查看帖子列表
- 出现异常: no such element
- 原因:首页帖子页面还未渲染完毕,就捕获文本元素
- 解决:使用隐式等待
如:webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
登录状态下查看列表
未登录状态下查看帖子页
运行结果
3.2.4 帖子编辑自动化测试
- 遇到bug:
- 操作:登录状态下进行帖子编辑
- 出现异常:ElementClickInterceptedException: element click intercepted: Element is not clickable at point (939, 1108)
- 原因:页面是异步加载,点击按钮未加载,就进行了的点击,导致元素点击中断,找不到点击位置
登录状态下进行帖子编辑
未登录状态
运行结果:
3.2.5 个人中心自动化测试
登录状态下获取个人信息
未登录状态获取个人中心
运行结果
3.2.6 退出功能自动化测试
登录状态下退出
运行结果:
- 可以考虑使用PO模式,现在的代码将获取元素,操作元素,测试元素操作混在了一起,对于后期维护比较困难,使用PO模式改进,可以复用元素代码,让多个人写测试用例的耦合降低,也利用后期的维护工作;
- 需要注意测试的执行顺序,不关注可能报错
- 对于多参数测试,需要清空上次输入数据,页面回退
- 测试用例并不是越多越好,覆盖较多功能较好
- 测试功能会有遗漏的情况,对于测试用例执行顺序会有错误情况
1.使用Junit5单元测试框架中的注释:提高测试的稳定性,提高自动化执行效率;(指定执行测试顺序,指定参数)
2.根据技术交流论坛设计的手工测试用例,对每个测试用例的常用功能实现自动化测试
3.使用工具类每次测试都需要驱动,写一个公共类,实现代码复用
4.使用等待:提高自动化运行效率,提高自动化的稳定性,减小误报的可能性