这是我购买的"极客时间"上的一套课程的笔记,总共52讲,定期对其中的内容做一笔记,巩固学习内容。
18 眼前一亮:带你玩转GUI自动化的测试报告
早期基于视频的GUI测试报告
GUI自动化测试框架会对测试执行整个过程进行屏幕录像并生成视频。
主要问题:
- 体积大,不方便管理和实时传输。
- 分析时往往需要结合测试用例以及服务端的日志信息,视频报告这一点上有所欠缺。
所以理想的测试报告应该由一系列按时间顺序排列的屏幕截图组成,并且截图上可以高亮显示所操作的元素,同时按照执行顺序配有相关操作步骤的详细描述。
目前商业的GUI自动化测试软件,如UFT已经自带了截图以及高亮显示操作元素功能。
开源GUI测试框架的测试报告实现思路
利用Selenium WebDriver的screenshot函数在一些特定的时机,完成界面截图功能。
代码实现的方式:
- 扩展Selenium原本的操作函数
- 在相关的Hook操作中调用screenshot函数
第一,扩展Selenium原本的操作函数
比如实现一个自己的click函数:
- 首先,用JS代码高亮显示被操作的元素
- 然后,调用screenshot函数完成点击前的截图
- 最后,调用Selenium原生的click函数完成真正的点击操作
第二,在相关的Hook操作中调用screenshot函数
对Hook的理解:
当执行某个函数F时,系统会在执行函数F前先隐式执行一个空实现的函数,那么当你需要做一些扩展或者截屏时,就可以在这个空实现的函数中加入自定义的操作。这个空实现的函数就是所谓的Hook函数。
这样的例子有很多,比如Java的main函数,执行之前会先隐式执行premain函数;JUnit和TestNG,都有BeforeTest和AfterTest方法,都是可以在特定步骤的前后插入自定义操作的接口。
因此,可以在这些Hook函数中添加截图、元素高亮、以及额外的任意操作,比如更多的详细日志输出等等。
之后作者举了具体的例子,可以看一下。
全球化GUI测试报告的创新设计
作者举了具体的例子说明,横向展示一个国家的业务测试顺序截图,纵向展示同一界面在不同国家的形式。
这个是设计上的思路,阅读分析报告时,会比较清晰。
同时,在测试报告中可以直接提供递交缺陷的按钮,一旦发现问题直接递交缺陷,同时把相关截图一起直接递交到缺陷管理系统,更大程度的提高整体效率。
现在的缺陷管理系统往往对外都有暴露API接口,可以利用这些API接口进行实现。
【心得】居然早期还有过这种直接录屏的视频报告,真的是第一次听说。不过也是在早期软件迭代周期比较长的时候,才有可能实现吧。现在移动互联网时代,产品迭代周期短,测试时间短,很难再有人力去整理阅读视频报告了吧!
后面提到的截图高亮,不错,以前自己的项目中考虑过截图,但是没有想到高亮,看作者说的,也不难,就是调用JS代码进行高亮显示即可。
然后就是关于Hook函数的说明。之前对BeforeTest和AfterTest方法有了解,原来这些都是Hook函数呀,学习了!
关于全球化的那个例子,自己没有做到这种项目,不过作者提供的思路很好。如果有类似的场景,也可以考虑这种设计方法呀!
网友评论