zoukankan      html  css  js  c++  java
  • AI移动自动化测试框架设计(解读)

    声明:原文出自“前端之巅”微信公众号“爱奇艺基于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自动化框架淘汰!你选吧!

    阅读原文

  • 相关阅读:
    Unity3D教程宝典之Shader篇:第四讲制作一个美丽的地球
    Unity3D教程宝典之Shader篇:第三讲Vertex&Fragment Shader
    Unity3D教程宝典之Shader篇:第二讲Fixed Function Shader
    Unity3D教程宝典之Shader篇:第一讲Shader总篇
    向量
    NAV导航网格寻路(7) -- 代码和一些优化
    NAV导航网格寻路(6) -- 寻路实现
    NAV导航网格寻路(5) -- 生成网格的一些补充
    NAV导航网格寻路(4) -- 生成nav网格
    NAV导航网格寻路(3) -- 一些必要的计算几何知识
  • 原文地址:https://www.cnblogs.com/fnng/p/10524983.html
Copyright © 2011-2022 走看看