关键词:
目标检测
卷积神经网络
UI自动化
YOLOv3
软件测试
摘要:
在产品迭代更新速度极快的时代中,移动端自动化测试变得越来越重要,它可以有效地减少人工回归测试的成本,也可以快速地检查产品质量是否存在重大问题。但是现如今的两大系统安卓和IOS有着完全不一样的代码语言,不一样的系统实现逻辑,这使移动端自动化测试尤其是UI自动化测试工具往往都会存在针对不同系统的两套脚本。而这两套脚本,往往逻辑功能完全一致,仅在启动APP和对APP界面定位中,所需的控件属性信息完全不同。这就使得应用迭代更新时,测试人员需要将对应的逻辑点在两套区别于系统的测试脚本中,做重复修改,与此同时,若迭代版本对界面也有修改,则还需要将测试脚本里的界面属性进行修改。因此,违背了UI自动化初衷,测试效率,而近年来针对移动端UI自动化工具,都集中精力希望开发一套工具解决这个痛点,提升UI测试的效率。与此同时,随着人工智能、深度学习领域在各行各业中大力发展,目标检测技术已经逐渐地渗入人们生活中。而由于卷积神经网络算法的快速迭代,基于卷积神经网络的目标检测模型,在人脸识别、交通识别、医疗诊断等领域中都得到了有效的应用。特别是目前发展很迅速的SSD和YOLO系列等算法,以检测速度快、检测精准度高的优势进入学者的视野中。考虑到自动化测试也算是人工智能的边缘领域,本文将UI界面作为被检测模型,界面中的控件作为目标,通过利用两大单阶段目标检测模型SSD和YOLOv3算法在相同数据样本、相同环境的条件下进行训练,再通过50张应用中的图片进行测试对比。结果表明,两大模型各有优势,SSD在检测速度上明显占优,而YOLOv3则在精准度上优势更明显,两者的准确率分别达到了89%和93%。在综合对比两者的优劣势之后,本文最终选择YOLOv3进行应用性实验操作,验证了目标检测算法对移动端界面定位控件的可行性,可以通过大量的数据样本训练,在不受页面框架及手机系统的影响下,对界面中的控件进行准确的分类和定位。同时本文还将训练完成的YOLOv3接入了Airtest Project移动端UI自动化框架中,将传统方式定位控件的方法后置,存放于框架兜底方案中。优先利用YOLOv3模型对运行中的用例当前界面进行控件检测,得到检测目标之后,再进入对控件模拟操作步骤;若没有检测到控件,则采用兜底中的传统定位方式,以保证用例运行成功率。通过跨系统、跨应用的实验与原始框架进行对比,结果表明接入YOLOv3模型算法后的框架,在运行用例的时间上会明显大于原本框架,但是它的适用性,也让加入目标检测算法后的框架,稳定性提升了20%,受外界配置、改变界面属性导致的错误数减少较明显。这也间接证实了当自动化测试脚本运行时,测试人员可以减少人工干预,释放劳力。但目前运行用例的正确率基本与原始框架持平,没有明显提升。同时在跨应用中,使用例脚本可以多方运行,减少了脚本编写的时间成本。总体而言,极大程度提升了执行测试用例的效率以及降低了维护用例的成本。通过此次研究,证明了通过目标检测对移动端APP中的各界面进行控件识别,来替代传统控件定位的方式是可行的,它能完全解决移动端UI自动化工具的痛点,避过跨系统的痛点,甚至还支持跨应用,同时减轻脚本维护的成本,覆盖了用户操作性测试。虽然现阶段对界面检测率没有达到100%,但是通过不断优化训练,是可以达到一个较为理想的状态,而基于卷积神经网络的目标检测技术在移动端UI自动化测试的应用未来还有无限的可能,具有很好的应用前景。