软件测试资料领取:[内部资源] 想拿年薪40W+的软件测试人员,这份资料必须领取~
软件测试面试刷题工具领取:软件测试面试刷题【800道面试题+答案免费刷】
写在前面
本次分享的内容是基于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。官网: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的简单使用
官方文档:airtest.doc.io.netease.com/IDEdocs/get…
1.下载安装
1)安装python
由于Airtest框架是基于python语言开发,本地需要搭建python相关环境,建议使用python3
Python 下载地址:www.python.org/downloads/
2)下载AirtestIDE客户端
AirtestIDE客户端下载: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)通过正则匹配应用应用标题进行连接
2.Windows常用API
官方文档:airtest.readthedocs.io/zh_CN/lates…
源码:airtest.readthedocs.io/zh_CN/lates…
connect:连接设备
shell:执行cmd命令
snapshot:截图
keyevent:执行键盘事件
text:输入文本
key_press:按下某个按键
key_release:释放某个按键
touch:鼠标点击事件
double_click:鼠标双击
swipe:滑动
move_mouse:移动鼠标
mouse_down:按下鼠标(左/右)键
mouse_up:释放鼠标(左/右)键
3.编写测试代码
先看下待测试的windows应用的页面布局:
1)代码构成
- 导入核心api和初始化客户端的方法
- 连接windows应用
- Airtest IDE遵循python编码风格,因此可以将各个测试动作/场景封装成一个一个的函数,当然也可以封装在其他文件里,然后导入引用
2)案例
- 发送文本消息:
操作步骤为:进入聊天窗口>输入文本内容>发送
- 截图发送
操作步骤为:进入聊天窗口>点击截图按钮>滑动鼠标拉取截图区域>确认发送截图
4.设计测试用例
GUI自动化测试并不适用于发现bug,更多的是将重复性高的、简单的手工操作场景转换为自动操作,用于回归测试,或是用于一些数据的构造模拟上。
将一些基本操作封装为一个个函数以后,就可以进行组合、设计测试用例了,如:
① 场景一:发送不同类型的消息
分别调用以下函数:
调用发送文本函数
调用发送表情函数
调用发送图片函数
调用发送截图函数
......
当然,以上各个函数也可以单独作为一个个测试用例,从而用于回归测试;
② 场景二:持续发送文本/图片消息
将上述函数,加上循环,便可实现持续发送xx类型的消息;不过与其说是一条测试用例,倒不如说是为了模拟人工长时间操作运行下程序的稳定性,亦或是辅助其他特殊测试场景,比如:
去年我在测试移动端时、通过自动化模拟一端持续发送大量图片消息,从而测试出【iOS移动端在弱网情况下接收大量离线文件消息程序会core掉】的bug。
今天在利用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创造了更多可能;
既然看到这里,在收藏的同时,也请不吝啬的点个赞呗!期待 ~
最后感谢每一个认真阅读我文章的人,下方这份完整的软件测试教程已经整理上传完成,需要的朋友们可以文末自行领取: