基于YOLO的移动应用自动测试

2023-11-24 08:25:28王寅黄河基李佳芮
现代信息科技 2023年18期

王寅 黄河基 李佳芮

摘  要:现有的GUI自动测试技术通常需要借助被测设备的底层界面框架来获取信息,难以实现跨平台。针对这种现象,文章提出了基于视觉的移动应用自动测试技术,使用YOLOv5模型检测界面中可执行控件,对不同测试输入下的状态合并方法进行研究,采用交并比与平均表面距离相结合的方式识别界面中相似状态。经过实验证明,该方法状态识别效果良好,为基于视觉特征的GUI自动化测试提供一定的参考。

关键词:GUI测试;视觉特征;相似性度量;视觉化测试

中图分类号:TP183;TP391.4 文献标识码:A 文章编号:2096-4706(2023)18-0106-05

Mobile Application Automatic Testing Based on YOLO

WANG Yin, HUANG Heji, LI Jiarui

(Nanjing University of Aeronautics and Astronautics, Nanjing  211106, China)

Abstract: The existing GUI automatic testing technology usually relies on the underlying interface framework of the detected equipment to obtain information, which is hard to realize cross-platform. In response to the phenomenon, this paper proposes a vision-based mobile application automatic testing technology, uses YOLOv5 model to detect the executable widgets in the interface, researches the state merging method under different test inputs, and combines the average intersection union ratio with the average surface distance to identify similar states in the interface. Experiments prove that the method has a good effect on identifying status and provides a certain reference for the automatic GUI testing based on visual feature.

Keywords: GUI testing; visual feature; similarity measurement; visual testing

0  引  言

隨着互联网技术的高速发展进步,移动应用软件从数量、类型等方面都呈现爆炸式增长。图形用户界面(Graphics User Interface, GUI)在移动应用软件中得到了广泛应用,随之而来的质量问题也越发突出。GUI测试时检测移动应用质量的重要手段,其中GUI自动测试通过分析被测应用程序的界面,采用不同策略生成测试输入来激发界面动作,实现了自动化测试应用,大大降低了测试成本。

基于模型的GUI测试技术(Model-based GUI Testing, MBGT)是一种对移动应用进行测试的重要方法,它通过构建模型来抽象GUI系统,结合模型对图形界面进行测试,大大地提升了测试效率。基于模型的测试工具有Droidbot[1]、APE[2],通过在测试过程中对被测应用程序进行系统的探索将GUI与可执行操作相关联,得到能够记录界面行为的有限状态机等模型。Baek等人[3]提出了基于安卓平台的多层次GUI比较方法,该方法在模型构建过程基于视觉方法的GUI界面模型抽取技术研究中提供多个模型抽象级别的选择。然而这些GUI测试方法依赖被测设备提供的界面框架来获取内部结构信息、生成输入事件,所以无法应用于一些系统封闭的设备或底层访问受限的应用程序,难以实现跨平台测试。

针对跨平台测试的问题,本文提出了基于视觉的MBGT方法,利用计算机视觉技术来识别界面进行测试。在视觉化的测试框架下,界面往往出现内部结构树的信息相同但是GUI外观(文本、图像等)大相径庭的情况,给相同功能的界面识别带来了困难。一方面容易造成状态空间爆炸,另一方面易于产生冗余的界面探索,降低测试效率。如何区分具有相同功能的界面,识别界面状态是一个关键的问题。

在图形用户界面日益复杂的情况下,很多研究将深度学习与测试技术相结合,能够更为精准的识别GUI控件元素。White等人[4]提出了一种改进GUI测试的技术,将深度学习技术在图形界面控件识别中应用,用来引导随机测试,显著提高了分支覆盖率。Moran[5]等人结合了机器学习和计算机视觉方法,通过KNN生成合适的分层GUI结构来实现GUI界面的原型化。

为了解决测试过程中状态合并困难的问题,构建更为高效的基于视觉特征的GUI自动测试方法,本文采用YOLO模型识别界面控件并设计状态合并策略,提出了一种基于YOLO的移动应用自动测试方法。

1  基于YOLO的移动应用自动测试框架

为实现更为高效的基于视觉的MBGT测试方法,提出了一种基于YOLO的移动应用自动测试技术。首先对测试方法框架进行介绍,包括状态迁移模型、测试框架;接着介绍了基于YOLOv5的控件识别方法;最后介绍了基于测试输入的相似状态合并方法。

该框架以运行时的设备屏幕图像为基础,使用视觉化方法对界面图像进行分析,通过识别图像的控件区域,触发动作来实现界面探索测试,采用多种视觉方法对相似的界面状态进行合并避免探索无效状态,从而抽取能够描述软件行为的模型。

1.1  状态迁移模型

界面状态迁移模型通过对当前状态执行测试输入实现状态的转换来进行构建,其本质上是一个有向图,定义为G = (S,E),S表示状态节点集合(S = {s1,s2,…,sn}), E表示触发状态转换的事件集合(E = {e1,e2,…,en})。S中的一个状态需要包含该状态对应的屏幕图像、识别出的控件组合和合并的状态信息。E中的ei = {}表示对状态sm中的控件wk进行事件输入eventq后,得到的新状态sn。当发现新状态时,通过在状态节点集合和事件集合中分别添加节点和边来更新模型,如图1所示。

1.2  探索测试框架

界面模型的抽取主要包括控件识别、路径探索、状态合并和模型更新四个阶段。如图2所示,首先获得GUI设备指定事件频率下的屏幕截图,使用特征提取方法对屏幕截图进行控件识别,对当前状态的可执行动作进行选择,实现路径探索,得到新的状态;然后对新状态进行状态识别,检索相似GUI状态,选择将其作为新状态还是合并到已有的状态中,最后动态更新到界面状态模型中,得到该应用程序的状态迁移模型,该框架最终在基于模型的测试工具cvrip中进行应用。

2  基于YOLOv5的控件识别

移动应用界面的控件组成通常较为复杂,而不同的控件对应了不同的可执行操作,如单选框组件仅支持单击操作。传统的计算机视觉无法识别界面中的基本控件及其类型,因此在测试过程中,同一个控件需要进行多次路径探索并对新状态进行识别合并,这些冗余操作严重影响了测试的效率。

为了解决上述问题,本文采用YOLOv5模型实现对界面图像中的控件识别,在大型数据集Rico[6]中进行训练,其包括了6万多个移动应用的GUI截图,每个GUI对应了详细的视图层次结构(包括控件元组的属性、位置等信息)。由于Rico数据集中控件元素的种类众多,筛选后的控件识别范围主要为图像、图像按钮、单选框、多选框、编辑框、列表选择框、状态开关按钮、拖动条这些UI基本组件。将筛选后的有效屏幕截图和对应层次结构信息作为模型输入并进行训练验证后,得到的模型输出包括每个候选框的坐标(x,y,w,h)、置信度、条件类别的概率以及识别的控件类型。其中x和y表示候选框的中心坐标,w和h表示候选框的宽和高,识别效果如图3所示。

3  界面状态合并

在当前状态中识别出的空间进行动作触发得到新的状态后,该状态可能与状态空间中的已有状态相同,因此需要将其与已有状态进行比较,判断其是否属于已有状态再进行合并。在GUI测试过程中,状态与状态之间存在不同程度的相似与差异,导致了界面结构相同,但是由于颜色、界面中ImageView等干扰使得界面状态合并存在一定的困难。

为了解决以上问题,本文提出了基于测试输入的相似状态合并方法。GUI测试输入主要分为两类,即点击、长按、滑动等对控件本身的属性进行探索的事件输入以及输入账号密码、计算器这类非固定的文本输入。事件输入触发的新状态通过检索已有的相似状态来进行合并。文本输入触发的新状态存在两种情况,一种是仍处于当前状态界面中,这时的新状态触发键盘输入,与之前状态仍属于相同状态,应该合并到同一状态中;另一种是触发搜索界面,这时界面状态与原始状态界面结构完全不一致。对于文本输入,通过将屏幕图像与键盘模板采用SIFT特征匹配来进行识别,裁剪识别出的键盘区域后,对剩余界面进行识别并与前一状态比较,如设定相似度阈值为0.8,若相似度高于0.8则合并状态;若不相似则查询已有的相似状态,已有状态集合中也不存在相似状态时则将其列为新状态,流程图如图4所示。

采用YOLO方法对界面状态进行控件识别后,得到了形式如[(x,y,w,h),conf,pred,classi]的模型输出,下文介绍本文采取的相似状态识别步骤。

3.1  计算交并比

IoU算法全称为交并比算法,计算的是“预测的边框”和“真实的边框”的交集和并集的比值,本文表示两个状态的边框的交并比。设屏幕图像P识别到m个控件,屏幕图像Q识别到n个控件,针对P中第i个控件和Q中第j个控件的边界框计算交集面积,计算方式如下:

式中:S(i, j)为控件i与j的边界框交集的面积,(x +w)min,(i, j)为控件i与j的边界框交集的右上角橫坐标,xmax,(i, j)为控件i与j的边界框交集的左下角横坐标,( y+h)min,(i, j)为控件i与j的边界框交集的右上角纵坐标,ymax,(i, j)为控件i与j的边界框交集的左下角纵坐标。

当两个状态存在相似时,其控件不仅位置相同,类型也一定相同,因此当获取到交并比后,需要对其类型进行判断。若类型不相同则交并比为0,若类型相同则交并比不变,越接近于1,则两个特征之间越相似,计算方式如下:

式中:R(i, j)为控件i与控件j的类型结合交并比,S(i, j)为控件i与控件j的边界框交集的面积,D(i, j)为控件i与控件j的类型判断函数,w和h分别为边界框的宽和高,ci为控件i的控件类型,cj为控件j的控件类型。

3.2  计算平均表面距离

以结合控件类型计算后的交并比作为距离度量,寻找对应图像P中的每个控件距离最近的图像Q中的控件,并统计所有距离后取均值,得到图像P和图像Q的状态相似度,计算方式为:

式中:LP为图像P中每个控件对应的最近距离集合,WP为图像P中检测到的控件集合,Rmin, (i, j)为控件i与控件j的类型结合交并比,EASD为图像P与Q的状态相似度。

4  实验与分析

为检验提出基于YOLO的移动应用自动测试方法的状态合并效果,本文通过设计实验回答如下问题。

RQ:提出的基于视觉的状态合并方法在GUI内部结构树的不同层次上识别效果如何?

GUI内部结构树的标准由Baek[3]等人提出,用于为模型的生成提供多个抽象级别的选择来缓解基于模型的测试过程中状态爆炸的问题。因此在基于视觉的MBGT技术过程中,在不同层次结构均能实现较高的状态合并率,则说明在实际应用该探索策略造成的状态空间爆炸的可能性越低。

实验选取了6个商业应用,通过内部结构树对应的activity、layout、widget、content层次分别对其分类准确率进行实验,并选择均值哈希方法进行对比验证。

由表1结果可知,基于YOLO的移动应用自动测试方法在6个商业应用中均能实现良好的状态相似性判断,且在不同层次结构上的整体表现优于均值哈希方法。

5  结  论

本文提出了一个基于YOLO的移动应用自动测试方法,解决了基于模型的GUI测试在跨平台方面的不足,帮助构建更为高效的基于视觉特征的GUI自动测试方法,避免状态冗余探索。本文提出的方法实现了对相似状态的识别与合并,但是并没有避免不同控件触发的新状态结构相似的情况,这些控件在界面中也具备某些相似特征。因此在后续工作中,可以通过对界面中相似控件的识别与合并进一步避免重复探索,提高模型构建效率。

参考文献:

[1] LI Y,YANG Z,GUO Y,et al. DroidBot:a lightweight UI-Guided test input generator for android [C]//2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).Buenos:IEEE,2017:23-26.

[2] CAI T Q. Fastbot-Android Open Source Handbook [M].Washington:Bytedance Inc.,2023.

[3] BAEK Y M,BAE D H. Automated model-based Android GUI testing using multi-level GUI comparison criteria [C]//2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).Singapore:IEEE,2016:238-249.

[4] WHITE T D,FRASER G,BROWN G J. Improving random GUI testing with image-based widget detection [C]//ISSTA 2019:Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis.New York:ACM,2019:307-317.

[5] MORAN K,BERNAL-C?RDENAS C,CURCIO M,et al. Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps [J].IEEE Transactions on Software Engineering,2020,46(2):196-221.

[6] DEKA B,HUANG Z,FRANZEN C. Rico:A Mobile App Dataset for Building Data-Driven Design Applications [C]//UIST '17:Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology.New York,2017:845-854.

[7] REDMON J,DIVVALA S,GRISHICK R. You Only Look Once:Unified,Real-Time Object Detection [C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).Las Vegas:IEEE,2016:779-788.

[8] JIANG B,ZHANG Y,CHAN W K,et al. A Systematic Study on Factors Impacting GUI Traversal-Based Test Case Generation Techniques for Android Applications [J]. IEEE Transactions on Reliability,2019,68(3):913–926.

[9] GU T,SUN C,MA X,et al. Practical GUI Testing of Android Applications Via Model Abstraction and Refinement [C]//2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE).Montreal:IEEE,2019:269–280.

[10] YAN J,WU T,YAN J. Widget-Sensitive and Back-Stack-Aware GUI Exploration for Testing Android Apps [C]//2017 IEEE International Conference on Software Quality,Reliability and Security (QRS).PRAGUE:IEEE,2017:42-53.

作者簡介:王寅(1999—),女,汉族,江苏盐城人,硕士在读,研究方向:软件测试。