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