龙空技术网

LIRAT:基于图像和布局识别的移动应用跨平台测试

慕测科技 371

前言:

而今你们对“android实现sift算法”大致比较注重,我们都需要分析一些“android实现sift算法”的相关知识。那么小编也在网摘上网罗了一些有关“android实现sift算法””的相关资讯,希望同学们能喜欢,大家一起来学习一下吧!

南京大学智能软件工程实验室

iselab.cn

摘要

移动应用碎片化问题在多个移动平台,如Android,iOS,移动Web甚至微信小程序出现,这加大了测试脚本跨平台运行的难度。一些现有的工具使用一些传统的计算机视觉技术在多个平台上自动化地回放相同的脚本。但是,这些解决方案很难识别动态的内容以及相似的控件,这造成了回放精度的下降。

在本文中,我们提出了一个基于图像理解的工具,即LIRAT,来录制和回放跨平台的测试脚本,这首次解决了测试脚本跨平台回放的问题。LIRAT录制控件的屏幕截图和页面布局,并利用图像理解技术在回放过程中定位这些控件。基于准确的控件定位,LIRAT支持跨设备和平台的测试脚本回放。我们使用LIRAT在8台Android设备和2台iOS设备上重放了在5个应用程序中录制的25个脚本。结果表明,LIRAT在Android平台上可以达到88%的回放准确率,在iOS平台上可以达到60%的回放准确率。

关键词:跨平台测试、图像识别、测试脚本录制回放

一、 介绍

大多数移动应用程序都采用了C/S框架,即同一个应用程序有统一的服务端,却有多个不同的客户端。这是由于Android平台的碎片化问题导致,并且这个问题已经扩展到不同的平台,如iOS,移动Web,甚至微信小程序。这使得移动应用测试需要在不同的设备和平台有着重复的工作。在这种情况下,图像驱动的测试脚本回放是减少重复工作的理想选择,因为相同的应用程序具有很高的相似性(如图1所示)。现有的自动化测试工具像Sikuli和Airtest在某种程度上解决了跨设备的脚本回放,但是他们仍然无法解决跨平台的脚本回放。因为相同的应用程序的布局依旧会存在细微差别。同时,紧紧依靠传统的计算机视觉技术使得这些方法在处理移动应用中的动态元素方面有较大困难,这是因为它们试图匹配完全相同的图片和文字。这在某些频繁内容刷新的应用程序,如新闻应用程序,是几乎不可能实现的。

图1:应用碎片化问题例


在本文中,我们首次采用综合的图像理解技术,初步解决了在不同设备和不同平台上准确录制和回放测试脚本的问题。LIRAT将测试脚本开发过程简化为操作序列的记录。用户在Web页面操作远程连接的移动设备,LIRAT会自动获取控件的截图,坐标,类型,文本信息,以及在整个页面的布局。LIRAT将上述信息整合为我们所独特设计的测试脚本并将其存储。在脚本回放阶段,LIRAT将图像匹配定位应用于控件的定位。然而,因为当页面具有动态性或者存在多个类似控件时,图像识别技术就会产生问题。所以我们进一步应用布局定位匹配来提高准确率。结合控件布局信息,LIRAT实现了组件在不同设备和平台上的定位效果。在获取坐标信息后,测试脚本将会在不同设备上回放。与同类工具相比,该方法的识别精度有了很大提高。LIRAT实现了一次脚本录制、多次脚本在不同的设备和平台上回放,这大大降低了脚本开发的复杂性。

二、 方法

LIRAT被划分为两个模块,脚本录制模块和脚本回放模块。在脚本录制模块中,LIRAT根据用户的操作录制小控件的截图和布局信息。在脚本回放模块中,我们结合了图像识别技术:SIFT图像配准算法;布局定位技术:OCR光学字符识别和Canny边缘检测算法,大幅提高了脚本回放的准确性。

1. 系统实现

LIRAT服务端使用SpringBoot框架,客户端使用Angular2框架,并且通过Netty和WebSocket传输信息。用于图像处理的服务端模块使用RESTful接口提供外部服务。设备管理服务器管理通过USB连接的移动设备。管理内容包括设备访问、状态监控、命令分发和执行。针对不同的Android和iOS平台设备,LIRAT选择ADB和WDA实现设备控制。设备活动的远程同步则是通过Minicap工具实现的。

图2:LIRAT系统架构


2. 脚本录制

脚本录制是一个单步操作的录制过程,每个操作提取并记录控件的截图、页面布局以及控件的属性信息。

用户的操作基于LIRAT提供的网页客户端完成,用户的操作通过ADB (Android Debug Bridge)或WDA (Web Driver Agent)转换为不同平台上的可执行指令,根据不同设备的UDID(Unique Device Identifier)将可执行指令分发到设备集群中特定的移动设备上,从而完成对设备的远程控制。

录制过程中提取出的控件信息,包括截图,坐标,文本内容等被记录下来,并且LIRAT会自动生成相应的树形布局文件。与屏幕截图一起,以嵌套目录的形式存储在数据库中,根目录表示录制的脚本,每个子目录代表一个单步操作,操作序列描述文件存储在根目录中,这一个嵌套文件夹即是我们特殊构造的测试脚本。

3. 脚本回放

当用户选择脚本回放设备时,LIRAT会从数据库中检索脚本文件,并有序地单步执行回放。在每一步回放操作的过程中,首先将控件截图与回放设备屏幕截图匹配。如果匹配成功,这意味着找到了满足要求的控件,那么将记录回放设备中控件的坐标信息。否则,将根据布局对屏幕截图进行划分,并根据脚本中控件的坐标找到屏幕截图中对应的控件。最后将匹配的位置信息和脚本中的操作转换为可执行的命令来完成回放。

LIRAT使用控件和页面截图信息以及控件的属性来在回放设备上定位控件。LIRAT结合了两种控件定位方法:图像匹配定位和布局匹配定位。

图像匹配定位。图像匹配定位是指在被录制的控件截图与当前回放设备的界面截图之间使用图像特征匹配算法来实现对应控件的定位。这种方法的局限性在于:当设备屏幕中的控件截图变化很大,或者页面中有很多动态或类似的图像时,控件很难被正确定位。图像特征匹配算法以目标图像和要匹配的图像为输入,以控件的坐标值为输出。该算法包括预处理、特征提取、特征匹配、错配消除和失真计算五个主要过程。具体设计及各工序如下:

预处理。对输入图像进行灰度处理。预处理提高了图像的质量,使后续处理的效果更好。特征提取。本步骤采用SIFT特征提取算法,包括图像特征检测以及图像特征描述符集和特征点集的构造。目标图像和要匹配的图像被分开处理,从而得到两组特征点集(表示为Ktarget和Ksource)和描述符集(表示为Dtarget和Dsource)。特性匹配。特征点的匹配是通过FLANN库来完成的,它可以快速地估计出最近的邻居。在两个特征点集的处理中,使用KD-Tree索引,通过KNN算法在Dtarget和Dsource中找到最近的点作为匹配点。错配消除。Lowe给出的比率测试可以消除KNN算法产生的匹配点的不匹配。按公式ratio= Dmin/Dsecond_min进行计算,当ratio值小于一定阈值δ时,这次匹配被认为是正确的。否则,匹配将被视为错误匹配,并从集合中移除。失真计算。考虑到目标图像旋转和缩放等会是图像失真,为了更准确地获得匹配区域的位置,目标图像和匹配图像之间的单应性矩阵被计算,最后执行目标图像的权衡变换获得位置坐标信息。

布局匹配定位。当遇到动态或类似的控件时,图像匹配有时候会出现严重的问题。因此我们进一步应用了布局匹配定位技术。布局匹配定位是将页面的截图在脚本文件中进行分割,利用OCR技术进行布局绘制,获取当前下控件对应的位置信息。该方法采用接口布局信息作为回放依据。由于不同设备和平台的应用大多布局相似,这可以更好地实现跨设备、跨平台的回放。

布局匹配基于REMAUI的思想,REMAUI主要用于根据UI图像生成代码。LIRAT改进了REMAUI,封装了布局匹配定位技术。REMAUI使用Canny和OCR来描述图像页面布局,并结合这两种方法来生成页面布局。图像分割部分利用Canny对灰度化的页面截图进行边缘提取,并将提取出的轮廓的矩形框架的四个顶点坐标进行存储。OCR部分使用Tesseract-OCR引擎实现图像的精确分割。最后将Canny检测到的结果与OCR结果进行融合,提取相应的控件坐标。

三、 实验

为了验证该系统在实际应用中的有效性,我们设计了一个初步实验来验证LIRAT的效果。我们选择5个款同时支持Android和iOS的移动应用和10个不同的移动设备。我们招募5位软件工程专业的研究生,并要求他们每个人在一个标记为D1的华为手机上录制测试脚本测试移动应用程序。我们要求每个脚本必须至少包含20个步骤,覆盖5个页面,以及15个不同的控件。最后,我们为每个移动应用程序获取了5个脚本。我们用这些脚本来探究两个问题: LIRAT分别在跨设备和跨平台的脚本回放准略率达到了多少?

我们在D2-D8上验证了跨设备回放效果。结果表明,跨设备脚本重放的成功率达到88%。失败原因是由于不同系统版本和不同屏幕分辨率中较大的UI差异造成的。

接着,我们使用D9和D10来验证跨平台的回放准确性,跨平台设备上回放的成功率为60%。回放失败的主要原因是部分应用不同平台的UI差异较大,导致控件定位异常。

实验表明,LIRAT能够很好地支持跨设备与跨平台的脚本录制和回放,这大大降低了测试脚本开发的门槛。实验结果表明,LIRAT提高了测试脚本的跨设备和跨平台能力,具有良好的可用性。

四、 结论

移动应用程序通常运行在多个设备和平台上,而测试脚本的跨设备和跨平台能力有限,这导致了重复性的测试工作。我们的新的解决方案,LIRAT,通过结合图像识别技术和布局定位技术,解决了这样的问题,实现了在不同的设备和平台上控件的精确定位与测试脚本回放,极大地简化了测试脚本编写工作。实验表明,跨设备回放准确率达到88%,跨平台回放准确率达到60%。这说明LIRAT在不同设备和平台上对移动应用测试脚本的回放取得了初步成功。

致谢

本文由南京大学软件学院 2020 级硕士虞圣呈翻译转述。

感谢国家自然科学基金(61932012,61802171,61772014)支持!

标签: #android实现sift算法