集成AI的
移动自动化测试
前一阵子小编看到了爱奇艺Android架构师的一篇文章《爱奇艺基于AI的移动自动化框架的设计与实践》。介绍了了一种基于AI算法的自动化测试框架Aion,该框架融合了传统图像处理和深度学习方案。虽然目前该框架还未开源,但是给了小编很多启发。
《爱奇艺基于AI的移动自动化框架的设计与实践》中的介绍图
后来,小编调研过程中发现,Appium也已经在探索AI自动化测试的解决方案,目前已经提供了Appium分类器插件,将AI算法结合在元素定位上。
Q:
什么是分类器
概括来说:分类器是用于机器学习/数据挖掘中学习或训练出来的一个函数或者模型。
举个例子,假如有一个小朋友,从来没见过猫和狗,我们给他一堆猫猫狗狗的图片,并且告诉他可以看耳朵、眼睛、尾巴、鼻子等等来判断的方法,每给他一张图片都告诉他这是猫或者这是狗,后来小朋友就学会了根据耳朵、眼睛、鼻子、尾巴等特征判别猫和狗的方法。这个方法,就是分类器。
Appium中的分类器就是利用AI的方法判别图标/图形的一个方法。目前这个分类器已经可以识别105个图标/图形。
举个例子,我们经常在各种APP中遇到搜索框,可能会看到这样的,那样的,什么样子的都有。
这些搜索框的定位如果用传统方法就要一个一个的去找id等方法,很麻烦。仔细观察,可以发现搜索框里面都有一个放大镜图标,这个就可以用分类器去找到,然后调用click方法就可以点击到搜索框区域了。
Q:
怎样使用Appium AI插件
第一步,安装Android SDK
小编比较推荐直接安装Android Studio,因为里面集成了Android SDK,Android Studio里也有模拟器等工具可以在以后的测试中使用。
第二步,安装Appium
最新的Appium已经是15.1版本了,直接官网下载安装应用安装即可,省去了老版本一些复杂的配置步骤。
第三步,安装Appium AI插件
可以在GitHub上找到,这个插件的安装也很简单,GitHub页面上给出了npm命令(这里需要先有node.js的环境),直接运行即可,如果遇到报错可以切换源重试。
第四步,使用
下面小编提供一个示例代码,用于打开今日头条并根据AI定位到搜索图标点击,从而实现点击到搜索框区域。从而减少了找元素id的时间。
代码语言:javascript复制from appium import webdriver
from time import sleep
CAPS = {
"deviceName": " HONOR 9x",
"automationName": "UiAutomator2",
"platformName": "Android",
"platformVersion": "9.0",
"appPackage": "com.ss.android.article.news",
"appActivity": "com.bytedance.news.schema.AdsAppActivity",
"noReset": True,
"unicodeKeyboard": True,
"resetKeyboard": True,
"customFindModules": {"ai": "test-ai-classifier"},
"testaiConfidenceThreshold": 0.1,
"shouldUseCompactResponses": False,
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', CAPS)
sleep(5)
# 用 Appium AI 插件定位到搜索框
driver.find_element_by_custom("ai:search").click()
sleep(5)
在caps里面有和平时使用的区别是增加了四个参数。其中automationName必须指定为‘UiAutomator2’或者是‘Espresso’,customFindModules必须指定为‘{"ai": "test-ai-classifier"}’;testaiConfidenceThreshold是机器学习中最低置信度的参数,默认值是0.2;shouldUseCompactResponses可以加快获取插件的输入过程。
写在最后
最后的开头,小编想说当前AI元素定位的缺点,就是Windows系统还不支持,因为Appium AI 插件需要一些系统依赖项来处理图像,另外各种限制也约束也比较多,并没有真正的集成到Appium中。希望早日能够支持全平台下使用该AI插件,并且不断扩充功能,也不仅仅限于元素定位。
在爱奇艺的AI移动端自动化测试的文章中写到:结合AI的移动端自动化能够利用 AI 解决更多问题,如页面异常检测、用户行为预测,页面预加载等。小编也非常看好AI在移动端测试中发现更多有价值、普通测试手段发现不了的问题。
在AI热门和快速发展的今天
能够将AI方法和测试结合
将会是软件测试领域的一项重大突破