基于图像识别框架Airtest的Windows项目自动化测试实践

简介: 1、Airtest框架介绍:Airtest适用项目、Airtest特点、Airtest的优势;2、Airtest框架组成、原理;Airtest环境搭建及IDE的简单使用;3、Airtest开展Windows应用自动化测试实践:连接Windows应用Windows、常用API编写、测试代码设计、测试用例运行效果、查看测试报告

写在前面


在上一篇文章中,我们介绍了《基于Sikuli GUI图像识别框架的PC客户端自动化测试实践》,但sikuli看起来怎么都像是上个世纪的界面风格,且功能过于简陋。而同样基于图像识别框架的Airtest,则无疑强大了许多,本次分享的内容是基于Airtest实现Windows应用的自动化测试,内容大纲:

  • Airtest框架介绍:Airtest适用项目、Airtest特点、Airtest的优势
  • Airtest框架组成、原理
  • Airtest环境搭建及IDE的简单使用
  • Airtest开展Windows应用自动化测试实践:连接Windows应用Windows常用API编写测试代码设计测试用例运行效果查看测试报告
  • 总结与思考

一、Airtest框架介绍

1.Airtest介绍

Airtest是网易出品的一款基于图像识别和Poco控件识别的一款UI自动化测试工具。这个框架设计来源于新颖的图形脚本语言Sikuli,关于Sikuli框架可见上一篇分享《基于Sikuli GUI图像识别框架的PC客户端自动化测试实践》。和Sikuli框架的原理一样,用户不需要一行行的去写代码,而是用屏幕截屏的方式,用截出来的图形摆列组合成神器的程序,这是Airtest的一部分。另外,Airtest也可以基于poco这个UI控件搜索框架,通过控件的名称、id之类的来定位目标控件,原理类似于 appium。官网:http://airtest.netease.com/

2.Airtest适用项目

  • 游戏
  • Android
  • iOS
  • Web
  • Windows

3.Airtest特点

  • 跨平台
  • 易操作
  • 可扩展
  • 支持GUI编辑器

4.Airtest的优势

相比于其他的自动化测试框架,Airtest主要有如下两个优势:

  • 大幅度降低自动化脚本的编写和维护成本

  • 解决游戏测试的痛点

二、Airtest框架组成、原理

1.Airtest框架组成

  • Airtest:是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、 Android和iOS;
  • Poco:是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx/Android原生app/iOS原生app/ 微信小程序,也可以在其他引擎中自行接入poco-sdk来使用;
  • AirtestIDE:跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够快速简单地 编写Airtest和Poco代码;
  • AirLab:真机自动化云测试平台,目前提供了TOP100手机兼容性测试、海外云真机兼容性测试等服务;

2.Airtest工作原理

三、Airtest环境搭建及IDE的简单使用

官方文档:https://airtest.doc.io.netease.com/IDEdocs/getting_started/AirtestIDE_install/

1.下载安装

1)安装python

由于Airtest框架是基于python语言开发,本地需要搭建python相关环境,建议使用python3

Python 下载地址:https://www.python.org/downloads/

2)下载AirtestIDE客户端

AirtestIDE客户端下载:http://airtest.netease.com

Windows系统用户在官网上下载对应32位或是64位版本的zip包,解压后得到AirtestIDE文件夹,双击AirtestIDE/AirtestIDE.exe即可启动

2.Airtest IDE使用

1)生成报告

Airtest运行完成后,会自动生成一份报告,通过下图按钮可以查看,点击后会自动启动浏览器查看报告


2)图片/代码模式切换

Airtest IDE中右键,即可两种模式相互切换

切换后的效果如下:

四、Airtest开展Windows应用自动化测试实践

1.连接Windows应用

连接Windows应用有三种方法,分别是:

1)通过搜索窗口连接

设备窗-Windows窗口连接-搜索窗口,选择窗口后,点击连接

2)通过句柄连接

(由于句柄容易发生变化,因此不推荐此连接方式):下图的67330即为企业微信的句柄

3)通过正则匹配应用应用标题进行连接

ifnotcli_setup:
auto_setup(__file__, logdir=True, devices=["Windows:///?title_re=.*阅云*"])

2.Windows常用API

官方文档:https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.win.win.html

源码:https://airtest.readthedocs.io/zh_CN/latest/_modules/airtest/core/win/win.html

  • connect:连接设备
  • shell:执行cmd命令
  • snapshot:截图
  • keyevent:执行键盘事件
  • text:输入文本
  • key_press:按下某个按键
  • key_release:释放某个按键
  • touch:鼠标点击事件
  • double_click:鼠标双击
  • swipe:滑动
  • move_mouse:移动鼠标
  • mouse_down:按下鼠标(左/右)键
  • mouse_up:释放鼠标(左/右)键

3.编写测试代码

先看下待测试的windows应用的页面布局:

1)代码构成

  • 导入核心api和初始化客户端的方法
# -*- encoding=utf8 -*-__author__="Administrator"importrandomfromairtest.core.apiimport*fromairtest.cli.parserimportcli_setup
  • 连接windows应用
# 连接windows应用ifnotcli_setup:
auto_setup(__file__, logdir=True, devices=["Windows:///?title_re=.*企业微信*"])
  • Airtest IDE遵循python编码风格,因此可以将各个测试动作/场景封装成一个一个的函数,当然也可以封装在其他文件里,然后导入引用

2)案例

  • 发送文本消息:

操作步骤为:进入聊天窗口>输入文本内容>发送

defsend_text(time):
setup_send_msg()  # 进入聊天窗口foriinrange(time):
text("这是AIRTEST发送的第%s条消息"%str(i))  # 输入文本消息内容keyevent("{ENTER}")  # 按下键盘Enter键,要大写keyevent("{ENTER}")  # 第一遍按下Enter是防止此时的输入法为中文,第二遍按下Enter是发送
  • 截图发送

操作步骤为:进入聊天窗口>点击截图按钮>滑动鼠标拉取截图区域>确认发送截图

defsend_screenshot():
setup_send_msg()
touch(Template(r"tpl1656061157595.png", record_pos=(-0.028, 0.138), resolution=(959, 654)))
sleep(1)
swipe((300,400), (600,800), duration=0.8, steps=2)
keyevent("{ENTER}")

4.设计测试用例

GUI自动化测试并不适用于发现bug,更多的是将重复性高的、简单的手工操作场景转换为自动操作,用于回归测试,或是用于一些数据的构造模拟上。

将一些基本操作封装为一个个函数以后,就可以进行组合、设计测试用例了,如:

① 场景一:发送不同类型的消息

分别调用以下函数:

  • 调用发送文本函数
  • 调用发送表情函数
  • 调用发送图片函数
  • 调用发送截图函数
  • ......

当然,以上各个函数也可以单独作为一个个测试用例,从而用于回归测试;

② 场景二:持续发送文本/图片消息

将上述函数,加上循环,便可实现持续发送xx类型的消息;不过与其说是一条测试用例,倒不如说是为了模拟人工长时间操作运行下程序的稳定性,亦或是辅助其他特殊测试场景,比如:

  1. 去年我在测试移动端时、通过自动化模拟一端持续发送大量图片消息,从而测试出【iOS移动端在弱网情况下接收大量离线文件消息程序会core掉】的bug。
  2. 今天在利用Airtest模拟持续发送文本消息、测试程序稳定性时,发现【单聊发送消息传错类型参数,发送给群聊,导致发送消息失败,且无任何消息发送记录】的bug,很奇怪,我手工发送的就没任何问题,暂时还没找到规律,研发还在定位中。虽然Airtest并没有直接发现bug,但却给发现bug创造了更多可能。

5.运行效果

此处为语雀视频卡片,点击链接查看:Rec 0005.mp4

6.查看测试报告

Airtest运行完成后会自动生成测试报告,通过控制台菜单栏的查看报告按钮,即可自动在浏览器打开测试报告:

五、总结与思考

  • Airtest也可以用于pycharm编辑器下,需要手动提前安装airtest库:pip install -U airtest,安装后即可新建airtest脚本,语法和在Airtest IDE中编写时一致。另外,pycharm编辑器也可以直接打开airtest脚本;
  • 对于web、APP自动化主要用该端特定的自动化框架,如selenium、appium,而此类测试框架无法实现的Windows应的操作,则可以借助Airtest实现,从而打通端到端自动化测试流程;
  • 自动化测试编码实现仅仅是自动化测试流程中一个小环节,更重要的是场景设计、用例实现以及如何发挥自动化测试的价值;
  • 自动化测试可能不会发现多少bug,但却给发现bug创造了更多可能
相关文章
|
6月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
6月前
|
数据采集 存储 人工智能
从0到1:天猫AI测试用例生成的实践与突破
本文系统阐述了天猫技术团队在AI赋能测试领域的深度实践与探索,讲述了智能测试用例生成的落地路径。
从0到1:天猫AI测试用例生成的实践与突破
|
7月前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
6月前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
266 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
7月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
582 6
|
7月前
|
算法 API 数据安全/隐私保护
深度解析京东图片搜索API:从图像识别到商品匹配的算法实践
京东图片搜索API基于图像识别技术,支持通过上传图片或图片URL搜索相似商品,提供智能匹配、结果筛选、分页查询等功能。适用于比价、竞品分析、推荐系统等场景。支持Python等开发语言,提供详细请求示例与文档。
|
7月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
7月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
7月前
|
人工智能 自然语言处理 测试技术
AI测试平台的用例管理实践:写得清晰,管得高效,执行更智能
在测试过程中,用例分散、步骤模糊、回归测试效率低等问题常困扰团队。霍格沃兹测试开发学社推出的AI测试平台,打通“用例编写—集中管理—智能执行”全流程,提升测试效率与覆盖率。平台支持标准化用例编写、统一管理操作及智能执行,助力测试团队高效协作,释放更多精力优化测试策略。目前平台已开放内测,欢迎试用体验!
|
8月前
|
人工智能 资源调度 jenkins
精准化回归测试:大厂实践与技术落地解析
在高频迭代时代,全量回归测试成本高、效率低,常导致关键 bug 漏测。精准化测试通过代码变更影响分析,智能筛选高价值用例,显著提升测试效率与缺陷捕获率,实现降本增效。已被阿里、京东、腾讯等大厂成功落地,成为质量保障的新趋势。

热门文章

最新文章

下一篇
开通oss服务