GUI自动化测试稳定性,最典型的表现形式就是,同样的测试用例在同样的环境上,时而测试通过,时而测试失败。
造成GUI测试不稳定的五种因素:
- 非预计的弹出对话框
- 页面控件属性的细微变化
- 被测系统的A/B测试
- 随记的页面延迟造成控件识别失败
- 测试数据问题
对于这几种因素的解决思路:
- 非预计的弹出对话框
非预计的弹出对话框一般包含两种情况:
- GUi自动化测试用例执行过程中,操作系统弹出的飞鱼级对话框。
- 被测软件本身也有可能在非预期的时间弹出预计的对话框。
解决方法:
当自动化脚本发现控件无法正常定位,或者无法操作时,GUI自动化框架自动进入“异常场景恢复模式”。在“异常场景恢复模式”下,GUI自动化框架依次检查各种可能出现的对话框,一旦确认了对话框的类型,立即执行定义的操作,比如单机“确认”按钮关闭这个对话框,接着重试刚才失败的步骤。
这种方式只能处理已知可能出现的对话框。而对于新类型的对话框,只能通过自动化的方式尝试点击上面的按钮进行处理。每当发现一种潜在会弹出的对话框,我们就把它的详细信息(包括对象定位信息等)更行到“异常场景恢复”库中,下次再遇到相同类型的对话框时,系统就可以自动关闭了。
-
页面控件属性的细微变化
解决方法:采用“组合属性”定位控件会更精准,而且成功率会更高,如果能在此基础上加入“模糊匹配”技术,可能以进一步提高控件的识别率。
“模糊匹配”是指,通过特定的相似度算法,控件属性发生细微变化是,这个控件依旧可以被准确定位。(通常需要二次开发) -
北栅系统的A/B测试
A/B测试,是互联网产品常用的一种测试方法。它为Web和App的界面或流程提供两个不同的版本,然后让用户随记访问其中一个版本,并收集两个版本的用户体验数据和业务数据,最后分析出最好的版本用于正式发布。
A/B测试通常会发布到实际生产环境,所以就会造成生产环境中GUI自动化测试不稳定。
解决方法:在测试脚本内部对不同的被测版本做分支处理,脚本需要能够区分A和B两个的不同版本,并作出相应的处理。 -
随记的页面延迟造成控件识别失败
解决方法:加入重试(retry)机制,重试机制是指,当某一步GUI操作失败时,框架会自动发起重试,重试可以是步骤级别的,也可以是页面级别的,甚至是业务流程级别的。需要自己二次开发来实现。