爱奇艺基于AI的移动端自动化测试框架的设计

ArchSummit 导读:由于传统框架存在对系统视图树的依赖强、资源 ID 和视图类型锁定繁琐、ID 混淆维护成本高等问题,爱奇艺架构师何梁伟老师介绍了爱奇艺从 AI 在自动化测试领域的应用角度出发,开发了一款结合传统图像处理技术和深度学习在视觉处理和 OCR 上的应用,以视觉识别为技术支撑点的全新自动化测试框架。大大降低测试用例的编写成本和维护成本,提升框架的跨平台能力,让测试用例变得更加人性化。

何梁伟老师来自爱奇艺,在 2018 年 12 月北京 ArchSummit 全球架构师峰会上,重点分享了基于 AI 的自动化测试框架。以及在实践过程中领悟到的深度学习的优势与挑战。

理想中的 UI 测试框架

从测试框架的角度来讲,肯定会有一些自己想要的功能或需求,对这个测试框架的期望也会很高。

首先,在衡量一个测试框架的过程中,会找一些指标来衡量这个测试框架的好坏,比如说我们会要求这个测试框架易于维护和开发,修改后的代码稳定性变得更好,会要求它的执行效率能够满足需求。在这些基础要求之上,可能还会要求它能够有些跨平台的能力,跨应用的能力,或者支持 Hybrid 的能力。

现在主流的测试框架在这些指标上的表现其实不太一致,因为有不同的侧重点。举个简单的例子,像 UIAutomator,它其实本身侧重于和系统的交互能力,所以它在跨应用的能力上会表现的更强一点,但是相对来说它对 Hybrid 这种场景的支持会相对来说弱一点。像 Espresso 这种框架,它的能力很强,可以做很多事情,比如可以拿到当前应用的运行状态,拿到当前代码里面内存的数据,这些功能其他测试框架都是不能做到的,但是这个测试框架,其弊端就是可能对你代码的要求比较高,要求你理解一些代码的运行逻辑,它本身更倾向于面向开发者的测试框架。

整体来说,每个平台它自己提供的测试框架,其实都不具有跨平台的能力,现在比较主流的具备跨平台能力是第三方的 Appium 这样一个框架,这个框架它本身是把各个平台的测试框架进行了整合,然后再进行封装,所以这种跨平台能力并没有实现技术上真正的跨平台。而且由于它做这些封装,支持很多语言,支持各种平台,它是一种基于协议的框架,这个框架就会导致代码的可维护性,相对来说比其他框架都要低。

总结一下传统框架都会存在的一些缺点。第一个就是跨平台能力比较差;第二个是跨应用能力也满足不了我们的需求。此外现在所有的测试框架都会有一个问题,就是系统对于 ID 的依赖性比较强,这个在之前问题不大,但是随着近期移动端技术的发展,移动端应用在发布的时候,会做一些资源 ID 混淆的事情,所以在每个版本里面 Android 的资源 ID 都会发生变化,这个时候你会发现你的测试的 ID 不断地变更,每个版本的测试代码都要进行维护。第四个是,由于要去捕捉控件,我们需要拿到控件对应的属性,这些属性很难直观去拿到,需要先 Dump 系统视图树出来,找到它的对应关系,才能够找到这些属性。相对来说,控件的捕获能力在我看来,是一个相对比较高的成本。还有一个问题就是,目前在所有的框架里面,在 Dump 系统树的过程中,都会存在一定级别的失败。

为您推荐