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

fishfish-yu · November 24, 2022 · Last by fishfish-yu replied at January 13, 2023 · 7725 hits

此文章来源于项目官方公众号:“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 不错,大规模也是可以的

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up