此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
1. 前言
熟悉我们开源框架的朋友都知道,AirtestProject一直以来,都对外开源了2个自动化测试框架,Airtest和Poco,Airtest是基于图像识别原理的,Poco是基于控件识别原理的。
这2个自动化测试框架,大大降低了自动化测试的门槛,让自动化测试变得简单可行。但是几年的长期实践以来,我们也发现了这2个框架的一些局限性:
比如airtest图像识别的不准确性、airtest对于文字/数字场景识别效果差的问题 ;poco获取控件需要实现安装pocoservice.apk或者嵌入poco-SDK,poco目前不兼容最新的微信小程序(xweb页面)、H5页面等问题 ;
针对这些局限性,我们推出了一款新的工具库:Airtest-ocr。顾名思义,它是 基于OCR技术 的,能帮我们识别定位到页面上的所有文字,匹配到文字以后,就可以非常便捷地做一些我们期望的自动化测试工作了。
下文,我们将详细介绍网易推出的这个新的自动化测试框架。
2. Airtest-ocr简介
如上文所述,Airtest-ocr主要是依赖 OCR 技术,能识别出来屏幕中所有的文字,与脚本中的待操作文字匹配后,可以执行相应的一些点击、滑动操作等。
1)Airtest-ocr的识别效果
我们用几张图来展示下Airtest-ocr模型的识别效果:
可以看到,不论是对于 文本场景 还是 数字场景 ,Airtest-ocr的识别效果都非常不错。
2)Airtest-ocr的识别效率
Airtest-ocr 提供轻重两种模式,默认情况下,会使用轻量级模式。好处是 运算速度快、算法模型小、消耗资源小 ,轻量级模式对 CPU 的压力要小很多,API 速度一般也能保证在2s内完成。
3)Airtest-ocr的API易于使用
为了减少新框架的学习成本,Airtest-ocr的脚本风格与Airtest保持一致,并且因为是文字识别的,所以脚本整体的可阅读性非常高:
# 点击某文字 ocr_touch("开始") # 与 ocr_click("开始") 等价 # 双击某文字 ocr_double_click("开始") # 某些情况下,文字处于按钮附近(比如按钮下方),使用offset设置点击偏移量 ocr_touch("开始", offset=(0, -20)) # 以“开始”文字的中心为起点, x轴不偏移,y轴向上偏移20个像素点 ocr_double_click("开始", offset=(0, -20)) # 指定高优先级区域 (version>=1.0.10) ocr_touch("开始", location=(100, 100), threshold=0.98) # 对于置信度高于0.98的多个 “开始”, 优先点击靠近 (100,100) 的 # ocr_swipe 与 swipe函数类似 ocr_swipe("生活", "学习") # 从“生活”滑向“学习” ocr_swipe("生活", vector=(0, 100)) # 从“生活”向下滑动100个像素 ocr_swipe((780, 1842), (780, 1000)) # 从坐标1滑向坐标2 ......
3. Airtest-OCR的应用场景介绍
那么,这样一款基于OCR技术的自动化测试框架,都适用于哪些测试场景呢?我们简单给大家举几个例子~
1)微信小程序测试(或其它混合开发页面)
自从微信小程序/微信公众号页面改用xweb框架以来,Poco对其兼容性就不是特别好,经常出现识别不到控件的情况。如果全用Airtest截图,按照小程序的UI迭代效率,我们的图像脚本迭代成本也挺高的。
但是如果使用Airtest-ocr框架的话,我们的烦恼就会少很多了!因为无需担心识别不到控件,也无需担心UI样式经常发生改动,我们直接根据小程序页面上关键的文字,来进行自动化测试:
2)安装应用过程输入密码的场景
像oppo和vivo这类的手机,或者是iOS设备,在安装应用时,都有一个无法避免的问题,那就是输入密码。
类似的情况,还有初次打开应用时,需要点击的一系列权限弹窗。可以看到,这些页面,往往都是非常简单的文字识别场景,比如识别一些类似“安装”、“输入密码”、“同意”、“取消”等等文字。
这些应用场景下,airtest的识别文字可信度就没那么高了,更适合用Airtest-ocr来进行:
3)验证码识别场景
同理,对于一些数字验证码、字母验证码等,Airtest-ocr也能有不错的应用效果:
4)其它:游戏文本测试等
另外还有很多场景可以用到Airtest-ocr,比如在复杂的游戏场景中,进行游戏文本核验等场景等。
4. 小结
今天介绍的这款测试框架,是我们新加入到 网易私有云测试解决方案 里面的,感兴趣的朋友,也可以到我们群里交流。当然,我们Airtest开发组,后续也会持续研究新的自动化测试技术,在测试行业继续深耕!
AirtestIDE下载:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/