声明:原文出自“前端之巅”微信公众号“爱奇艺基于AI的移动端自动化测试框架的设计”一文,做者:何梁伟,爱奇艺Android架构师。文章提供了一种基于AI算法的自动化测试框架AIon,该框架并未开源,目前搜索不到相关资料,但从做者的设计思路上很受启发。前端
易于开发和维护算法
稳定性微信
执行效率架构
跨平台app
跨应用框架
支持Hybrid(混合应用)布局
传统的UI自动化框架(UIAutomator、Espresso、appium等),或多或少在这些方法作的不够完美。学习
模拟用户的操做,用户在操做的时候是不须要知道控件的属性(ID、name)的,它应该是一种所见即所得的操做。测试
因此,像Sikuli 、AirTest这样的基于图片识别技术的测试框架就很好。ui
可是,它们也有一些不足:
准确率不足
没有层次结构
代码稳定性差
代码可维护性差
若是,测试脚本能够变成这样:
这个样的脚本表达接近咱们的天然语言。好比,点击标签上的会员按钮,就变成 find('tab').find('会员'),代码的维护性也会变得很好。
图像切割
图像分类识别
OCR文字识别
图像类似度匹配
像素点操做
图像切割:能够把一整张图片切割出不一样的块,好比一张App的截屏,能够切割成导航栏、视频封面列表、搜索框等不一样的块。
图像分类识别:对上面切割的块进行分类,须要图像分类的能力。
OCR文字识别:依赖图像 OCR 的识别能力,知道对应的视图里面有哪些文字。
图像类似度匹配能力:这一点传统的图像处理库就能够实现。好比Python的pillow库。
像素点的操做:能够依赖传统的框架,好比经过坐标完成操做,也可使用机械臂来完成像素点的操做。
在深度学习之前,图像分类领域的准确率必定在75%如下,引入深度学习使准确率提升到98%、99%。有文章说准确率达到95%说明已经超过人类了,这是一个至关高的水平。
识别率在逐年提升。
ORC的能力主要体如今:完整准确率和文字准确率。
完整的准确率是指,在一个截图里面,会有一些标题和词组,若是标题里面有一个字出现了错误,就认为这个标题的识别是错误的,经过这种方式,准确率可以达到93%。
文字的准确率,是将一张截图分割成多个块,而后识别出每一个块上的文字。由于已经分割了块,因此识别率能够达到98%。
有了上面这些技术作为基础之后,就能够尝试AIon框架实现了。
这中间还介绍了UI2Code 、pix2code两个“相似”框架的。它们是将截图生成用户界面代码,感兴趣能够百度了解。
这里直接介绍Alon的工做方法。敲黑板!这里考试重点。
AIon 会把一个截图切成几块:tab、导航、状态栏等,而后用深度学习图像分类,对每一块进行分类识别,识别完了之后,就会把对应块里的子元素提取出来,再用一些AI的技术,提取里面的内容,把它填充到子元素的属性里面去,最后就会获得二级视图树的结构,最后,就能够去作对应的点击操做了。
好比要实现一条测试用例,
首先截屏,对它进行场景判断,场景判断会应用到一些AI分类识别,识别出当前界面有没有弹出对话,或者它是不是登录页的场景识别。场景识别完了之后,就会进行传统的图像切割,图像切割完了之后,进行布局分类,布局分类也会应用到一些AI的技术,分类完了之后,进行子元素的提取,对这个子元素进行填充,填充会应用到一些AI的技术。
最后,当视图树构建完了以后,匹配以前写的测试用例里面的条件进行匹配,匹配以后,执行测试用例,这就是整个AIon的核心流程。
因为考虑到以前的一些测试用例,还有一些传统的测试框架写的测试用例,自己还作了对传统测试框架的融合。
AIon的处理过程当中涉及到一些技术问题这里就省略了,通篇阅读下来有点像论文。强烈建议阅读原文,我这里只是简化了对原文的解读。
从中get到了一些基于AI实现自动化框架的思路。将来的自动化测试确定会愈来愈使用更简单,功能更强大。要么去实现AI自动化框架,要么被AI自动化框架淘汰!你选吧!