图像特征入门教学(基于图像特征与布局刻画的移动测试脚本跨平台录制回放)
一、 引言
移动应用在全球范围内有着越发举足轻重的地位,因此移动应用的快速迭代和频繁的需求变更的特点引发了对应用质量保障的要求不断提高。在大型设备集群上迁移测试脚本是移动应用质量保障的关键技术之一,因为这一技术可以自动化地测试预设的场景并检测各种缺陷。但是,碎片化问题已扩展到多个平台,包括 Android,iOS,移动网页,甚至是某些应用(例如微信)的内置小程序平台,这意味着一个特定的应用往往具有统一的服务端,且完全不同的客户端共享相同的服务端服务和类似的图形界面外观(GUI)。这一现象对开发人员和测试人员在测试其移动应用时提出了更高的要求。他们必须基于不同的平台框架支持编写不同的脚本,从而导致繁琐且重复的工作。缺乏不依赖平台的测试技术使得测试脚本无法被有效地跨平台迁移。大多数移动应用在开发支持不同平台的版本时都采用高度相似的用户界面(UI),以提高用户体验,这意味着多个客户端共享同一台服务端。不同平台之间整体布局与 UI 元素及其相对位置大致相同。相似的 UI 布局启发我们从基于 UI 图像分析而不是各自底层实现的角度进行研究。
一些研究人员已经基于图像理解技术进行了一些基础研究。Sikuli 是一个基于图像的工具,专注于桌面应用测试。Sikuli 可以通过图像的识别与匹配而操作 GUI 控件。但是,Sikuli 对移动平台的支持较差,并且仅依赖于简单的图像特征匹配。Airtest 是一种由网易开发的基于图像匹配技术的自动化移动测试工具,它是在 Sikuli 的基础上开发的。但是,Airtest 专注于游戏类型的移动应用,对于区域类别的移动应用的支持较差,并且针对不同的移动平台采用了不同的图像匹配方案,这导致 Airtest 仍无法在不同平台之间进行脚本的迁移。总之,诸如 Sikuli 和 Airtest 之类的工具将“图像”简单地看作一张“图像”而非是一个“丰富控件信息的集合”。换句话说,这些工具忽略了图像中的内容和相互关系,这意味着一些重要信息也随之被忽略了。
在本项目中,我们创新地提出了一种图像驱动的移动应用测试脚本迁移框架 IDMAT(Image Driven Mobile App Testing Framework),以结合图像上下文理解和布局刻画来解决测试脚本的跨平台录制回放问题。在脚本录制阶段,IDMAT 会自动从设备中提取屏幕和控件截图、布局坐标、文本等信息,并将这些信息按照测试操作进行组织。然后,根据所介绍的不依赖于平台特性的测试脚本模型 LITS(Layout & Image Test Script),生成独立于平台的测试脚本。在回放阶段,IDMAT 同时采用计算机视觉技术和深度学习方法。IDMAT 由图像特征提取比对定位和布局刻画匹配识别两个模块组成。当移动应用页面具有动态或多个类似的控件时,布局刻画匹配识别可以弥补图像特征提取比对定位的不足。IDMAT 综合分析图像特征提取比对定位和布局刻画匹配识别分别生成的中间结果,从而提高识别准确性。
IDMAT 首次利用了图像上下文理解和布局刻画提取,实现了在不同平台的不同设备上移动应用测试脚本的“一次录制,多次回放”的高效测试脚本迁移,大大降低了测试脚本开发的复杂性。
二、方法
1. 独立于平台的测试脚本模型
在脚本录制模块中,我们提取了丰富的信息以进行回放。在脚本回放模块中,我们需要从回放设备中提取相同的信息,并与脚本中的信息匹配。必要的信息包括移动应用活动的屏幕快照 SSa,控件的屏幕截图 SSw,控件坐标 Cw,录制设备的序列号 DSN,录制设备的分辨率 DR,操作点坐标 Co,控件文本 T,和操作类型 O,其中 Cw 由被操作控件的左上角和右下角坐标组成。
当提取上述信息时,需要进一步的过程以使脚本中的信息更好地独立于平台。首先,我们将 DSN 作为脚本 ID。其次,我们计算控件和操作点的相对位置,这是按绝对坐标与设备分辨率的比例计算的,结果分别表示为 Cwr,Cor:Cwr = Cw / DR, Cor = Co / DR
为了更规范地表示与使用测试脚本,我们引入了一个测试脚本模型,称为 LITS,即 Layout & Image Test Script。LITS 是 7 维元组的列表,这个 7 维元组可以表示为:
2. 脚本录制
脚本录制由用户操作序列的单步操作的录制的过程迭代实现。对于每一步操作,提取并录制每个操作的控件的截图和应用页面的布局信息,以及控件的一些属性信息,例如文本,控件类别等。
在接收用户的操作时,操作命令通过 Android 平台的 ADB(Android Debug Bridge)或 iOS 平台的 WDA(Web Driver Agent)在不同平台上转换为可执行指令。在录制过程中所提取的控件信息,包括坐标,文本等,将通过我们的测试脚本迁移框架 IDMAT 自动生成相应的 XML 文件。这样的 XML 文件与屏幕截图中截取出的控件截图一起,以嵌套目录的形式存储。根目录表示录制的脚本,每个子目录代表每一步操作的控件与对应操作的信息。记录操作顺序的文件存储在根目录中。
3. 脚本回放
首先,按照操作顺序的顺序,在回放设备上依次回放每个步骤。对于每个步骤,我们提取所录制的屏幕截图,同时截取回放设备上对应页面的截图。得到截图后,对对应的数据信息进行两种定位算法的计算,这两种定位算法分别是图像特征提取比对定位与布局刻画匹配识别。图像特征提取比对定位将会得到一组疑似坐标,代表着根据图像特征提取比对定位算法所得的一组疑似控件;布局刻画匹配识别将会得到一个候选坐标,代表着根据布局刻画匹配识别所得的一个候选控件。计算图像特征提取比对定位结果中每一个疑似坐标与布局刻画匹配识别所得结果的距离,将距离最近的作为图像特征提取比对定位的候选控件。对于两个算法得到的候选坐标,我们进行一个加权计算操作。这个权重是由我们进行的一系列验证实验反馈的结果而动态调整获得的。
图像特征提取比对定位
这一部分中,我们采用图像特征提取比对定位算法来匹配脚本中记录的控件截图与回放设备的屏幕截图,以此来匹配回放设备上的相应控件。
图像特征提取比对定位算法将目标控件截图和回放设备页面截图作为输入,并将一组疑似控件的坐标作为输出。该算法包括五个主要过程:预处理,特征提取,特征匹配,错配消除和畸变计算。每个过程描述如下:
预处理:首先对输入图像进行灰度化处理,因为图像的颜色信息未被视为处理属性,且有可能对最后的结果形成负面的影响。预处理提高了图像的匹配质量,并在后续处理中获得了更好的效果.
特征提取:在此步骤中,我们分别提取两个输入图像的特征。首先进行图像特征点的检测,接着分别构建图像特征描述符集和特征点集。两组特征点集表示为 Ktarget 和 Ksource;描述符集表示为 Dtarget 和 Dsource。
特征匹配:执行特征点匹配,并快速估计最邻近对象。在处理两个特征点集时,在 Dtarget 和 Dsource 中找到最接近的点作为匹配点。这就完成了特征点的初步匹配。
错配消除:在上一步所获取的匹配点可能存在错误,因此必须消除这些错误以提高匹配的精准度。我们采用比率测试方法来解决此问题。如果计算值小于预设阈值,则认为匹配正确。否则,该匹配被视为出现错误,并从结果集合中删除。
畸变计算:由于目标图像可能会存在诸如旋转或缩放之类的失真,因此,为了更准确地获取匹配控件的坐标,需要计算目标图像和要匹配的图像之间的单应性矩阵,最后对目标图像进行透视变换以获得更精确的位置坐标信息。
布局刻画匹配识别
在移动应用内容快速刷新的情况下,图像特征提取比对定位的可用性大大降低。并且,在我们进行测试时,我们正在测试应用功能的可用性,应用的内容不是测试工作关注的重点。因此,图像特征提取比对定位的缺陷需要有新的算法进行弥补。基于不同平台之间同一应用 UI 布局的高度相似性,我们考虑进一步采用布局刻画匹配识别来提高精度。
在布局刻画匹配识别中,我们首先根据脚本中存储的录制的页面截图提取控件边框,然后根据控件边框划分页面截图,并获取目标控件在屏幕截图上的对应位置。根据以上获取的信息,我们从页面截图中获取所有控件的位置等相关信息,并根据相对位置绘制控件之间的相对关系。
我们的方法可能生成许多噪声数据。我们还努力消除此类噪声数据。根据我们对开源数据集的调查,我们发现大多数控件的大小都超过屏幕截图尺寸大小的 1%。因此,我们决定忽略大小小于屏幕截图尺寸大小 1%的结果数据。
为了提高准确性,我们还提取了控件上的文本信息以辅助控件的检测与定位。在某些情况下,某些高度相似的控件彼此靠近,因此控件中相互不同的文本可以帮助进行匹配。
在回放期间,首先,在回放设备上执行相同的布局提取刻画过程,然后我们加载录制的信息与来自回放设备的信息匹配。布局位置是主要的匹配依据,文本信息起着辅助作用。
三、 实证验证
在我们所提出的图像驱动的测试脚本迁移框架 IDMAT 的理论基础上,我们实现了对应的自动化测试脚本录制回放工具并进行了一项实证实验验证,以验证 IDMAT 框架的有效性。结果显示我们的框架与取得了初步的成功。
1. 实验准备
在本项实验验证中,我们设置了三个研究问题(Research Question):
RQ1:LIRAT~能够多大程度上有效识别控件并回放测试脚本?
RQ2:LIRAT~中两个模块的结合与模块单独结果对比有多大的提升?
RQ3:为什么某些控件识别会失败?哪些情况可能导致这样的失败?
我们选取了十款不同类别的移动应用和 8 台不同品牌、型号的移动设备。
在实验执行过程中,我们首先邀请软件工程专业的学生为每一款待测应用自由选择了 5 个测试场景。并且将这些场景使用编号为 D0 的 Android 设备进行脚本的录制。我们要求每个场景包含 15 个步骤,每个步骤包含一个控件,此外,每个脚本需要涵盖 5 个以上的应用页面。
2. RQ1
为了解决 RQ1,我们招募了 3 名软件工程专业的高年级学生来为每个移动应用组织 10 个测试场景,并根据测试场景在标记为 D0 的 Android 设备上进行脚本录制。我们要求每个测试场景包括 15 个操作,并且每个操作都包含一个应用控件。然后,我们同时在 5 个 Android 设备和 2 个 iOS 设备上回放录制的的测试脚本。Android 设备的成功回放率约为 63.39%,iOS 设备的成功回放率约为 21.83%(其中应用 Kiwix 和 Jamendo 在 iOS 上由于应用自身原因不可用),这证明 IDMAT 是有前途的。在所有测试场景中,成功完整回放了 4.4%的测试场景,并且超过一半的测试场景的完整回放只需少于 3 次人工纠偏(15 个测试步骤)。
3. RQ2
IDMAT 所获得的准确率比最先进技术在 Android 上和 iOS 上分别有了 14%和 98%的提升。
最终的控件识别与脚本回放的结果来自于图像特征提取匹配定位(简称图像模块)与布局刻画匹配识别(简称布局模块)的结果的结合。
在结果正确的部分中,Android 与 iOS 分别有 50.36%和 19.85%的成功回放是由两个部分的共同成功识别导致的;分别有 21.08%和 12.98%的成功回放由图像模块的成功识别所引起;而分别有 23.90%和 66.79%的成功回放由布局模块的成功识别所引起;然而,即使两个模块均失败了,也有 4.67%和 0.38%的回放达到了最后的成功。从数据中可以看出,布局模块比图像模块能够引起更多的最后的成功(分别达到了 2.82%和 53.81%),这也证明,我们在 IDMAT 中引入布局刻画匹配识别来弥补图像特征提取匹配定位的缺陷达到了较为成功的效果,这样的成功在跨平台的回放中(从 Android 到 iOS)尤为明显。
4. RQ3
根据 RQ1 和 RQ2 的结果,我们证明了所提出的测试框架 IDMAT 有效性。然而,在我们的实验过程中,仍然存在着部分失败案例。我们逐个分析了失败的回放,按照图像特征提取比对定位和布局刻画匹配识别两个部分,总结出了以下主要的失败原因。
在图像特征提取比对定位中,由于重复的高度相似的控件而导致的回放失败几乎占所有失败案例的三分之一,这是最为主要的失败原因;其次,在录制阶段,由于对页面布局的解析失败,导致获取了错误的控件截图,这样的失败大约占了所有失败的 20%。另外,一些微小的原因导致了个别失败的案例,例如回放设备上相应控件的缺失,算法所提取出特征点过少而使得算法输出的结果集合为空。
在布局刻画匹配识别 中,分别有 24.6%,20%和 18.4%的失败回放是由算法中的分组,分行和分列操作的错误而引发的。而页面内容的变化引发的布局改变导致了大约 16.3%的失败案例。此外,也有大约 12.1%的失败案例是由于设备状态栏的变化。
四、 总结
随着移动互联网的迅猛发展,移动应用影响到了社会与生活的方方面面。这样举足轻重的地位使得移动应用的质量保障有着更高的要求。移动应用频繁迭代与需求快速变更的特点使得传统的软件测试方法效率降低。因此,新的测试技术与框架是学术界与工业界的研究热点。其中,测试脚本的自动化录制与回放,即测试脚本迁移,是当前移动应用测试的主流技术之一。
然而,移动应用通常在多个平台上运行,而测试脚本往往是根据平台所提供的借口与特性编写,现有的一些测试框架对于平台的依赖也较为严重,这导致了测试脚本在不同平台之间迁移的能力有限,因而也造成测试人员需要为同一款应用的不同平台版本编写完全不同的测试脚本,这对测试人员提出了较高的要求,也造成了更高的经济与人力资源成本。
在本文中所提出的图像驱动的移动应用测试脚本迁移框架 IDMAT,创新地提出了通过对应用界面截图的分析与理解入手完成测试脚本跨平台迁移的解决。IDMAT 通过对图像布局的刻画,控件内容与上下文的记录与相互关系分析,实现了在不同设备和平台上控件的精确定位,大大简化了脚本编写工作,并且使测试脚本在不同的设备和平台上“一次录制,多次回放”成为可能。
而根据我们基于 IDMAT 相关的实验验证结果表明,所提出的图像驱动的移动应用测试脚本迁移框架以及所对应的测试工具在不同设备和平台上回放移动应用测试脚本方面取得了成功。
致谢
本文由南京大学软件学院智能软件工程实验室 2016 级本科生虞圣呈撰写。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com