专栏文章 网易私有云新增的测试驱动力,Airtest-ocr 文字识别点击真香!

fishfish-yu · 2022年11月24日 · 最后由 fishfish-yu 回复于 2023年01月13日 · 10606 次阅读

此文章来源于项目官方公众号:“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 开发组,后续也会持续研究新的自动化测试技术,在测试行业继续深耕!


Airtest 官网https://airtest.netease.com/
Airtest 教程官网https://airtest.doc.io.netease.com/
搭建企业私有云服务https://airlab.163.com/b2b

官方答疑 Q 群:117973773

呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~

共收到 7 条回复 时间 点赞

那么,如何才能用的上呢?

Airtest-ocr 没开源吗?

Jackyang 回复

没开源,只开放给企业客户

感觉 ocr 的识别速度还是不适合大规模的用例执行

背后是基于 paddle ocr 的么?

恒温 回复

我们没有基于 paddleOCR,但是其中一些 AI 模型确实用了 paddle 开源的模型

codt 回复

嗯,如果 CPU 不错,大规模也是可以的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册