基于selenium和JUnit5实现的自动化测试用例
一、使用脑图编写web自动化测试用例
下图就是根据博客系统创建的自动化测试用例脑图
二、创建自动化项目,根据用例来实现脚本
Common包底下放着的是所有测试用例共用的方法,公共类;
Test包底下就是我们的测试用例,在test包下面写我们的测试代码。
Common目录
测试用例共享的类,创建了驱动对象,解决了每个用例要重复去创建驱动冗余的问题
1.1浏览器驱动
自动化测试最重要的就是要创建浏览器驱动,每个测试用例测试之前都必须要创建,那我们就可以将它归入到Common包底下,而且我们只需要创建一次就好,类似于单例模式,避免资源的浪费。
无头模式(不显示浏览器窗口)
options.addArguments("-headless"); //浏览器参数,无头模式(不显示浏览器窗口)
隐式等待:自动化测试的代码运行的速度是比浏览器渲染的速度快的,如果不加入隐式等待,就有可能会造成自动化代码去findElement时候找不到对应元素。
//创建隐式等待 chromeDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
1.2截图功能
截图的存放以天和时间为存储路径,每天的运行截图会存放在不同的文件夹中,并且截图的文件命名根据时间戳命名,能够更快,更方便的发现问题
Test目录
我们全部的测试类都在这个中编写。
1、登录界面测试用例
特点:
1、通过
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
注解保证了所有测试用例的顺序具有逻辑性,先验证登录失败的测试用例,再验证登录成功的测试用例,可以实现一次登录就可以完成测试,避免了代码的繁琐。2、多参数的测试用例通过JUnit的@CsvSource 注解传参,可以避免因为需要测试不同数据的用例造成的冗余
3、没有直接执行
driver.quit();
代码,而是留在所以博客测试用例执行完以后执行,可以避免反复的调用创建驱动方法而造成的效率降低。
2、博客列表页测试用例
特点:
1、通过
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
注解保证了所有测试用例的顺序具有逻辑性2、没有直接执行
driver.quit();
代码,而是留在所以博客测试用例执行完以后执行,可以避免反复的调用创建驱动方法而造成的效率降低。
3、博客编辑页测试用例
特点:
1、通过
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
注解保证了所有测试用例的顺序具有逻辑性2、没有直接执行
driver.quit();
代码,而是留在所以博客测试用例执行完以后执行,可以避免反复的调用创建驱动方法而造成的效率降低。
4、博客详情页测试用例
特点:
1、通过
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
注解保证了所有测试用例的顺序具有逻辑性2、没有直接执行
driver.quit();
代码,而是留在所以博客测试用例执行完以后执行,可以避免反复的调用创建驱动方法而造成的效率降低。
5、通过测试套件加载
如何实现的,以及有什么亮点?
如何实现:
大体:通过selenium自动化工具加JUnit5单元测试工具实现的
基础目录(common) :这个目录下的类是测试用例共享的类,创建了驱动对象,解决了每个用例要重复去创建驱动冗余的问题
第二个目录:
Test目录:我们全部的测试类都在这个中编写。
根据博客的每一个页面为一个测试类,每个测试类实现了测试用例,通过测试套件把我们的测试类全部加载进去
亮点:
1)使用了junit5中提供的注解 避免因为要创建mian函数导致的生成过多的对象,造成资源浪费和时间浪费,提升了效率
2)使用了JUnit的@CsvSource 注解传参,可以避免因为需要测试不同数据的用例造成的冗余
3)只创建一次驱动对象,避免了每个用例重复创建驱动对象,造成时间和资源浪费
4)测试套件:降低了测试人员的工作量,通过套件一次执行所有要运行的测试用例
5)使用了等待(隐式等待):提高了自动化运行效率,提高了自动化的稳定性。
6)屏幕截图 : 方便问题的追溯以及问题的解决
总结
自动化测试的难点:如何去发现项目中可能存在的问题去测试,避免误报这些等等都是难点,很多时候可能因为我们思考不执行关注的不够可能会遗漏,比如在我写的博客自动化测试用例的时候遗漏了博客编辑页什么都不写的时候测试还能不能发布博客,一开始我是漏了这点,后来有一次我无意中点击,才发现什么都不填写情况下竟然还可以发布,我马上去修改我的自动化测试用例,添加了这个上去;
提升:写自动化测试思考的东西一定要全面,仔细,不能遗漏很多细节而导致真的项目部署以后造成的问题。