<返回更多

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

2022-06-28    大刚测试开发实战
加入收藏

写在前面


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

 

一、Airtest框架介绍

1.Airtest介绍

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

 

2.Airtest适用项目

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

 

3.Airtest特点

 

4.Airtest的优势

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

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

 

 

二、Airtest框架组成、原理

1.Airtest框架组成

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

 

 

2.Airtest工作原理

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

 

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

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

1.下载安装

1)安装Python/ target=_blank class=infotextkey>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即可启动

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

 

2.Airtest IDE使用

1)生成报告

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

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

 

2)图片/代码模式切换

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

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

 

切换后的效果如下:

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

 

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

1.连接Windows应用

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

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

 

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

 

if not cli_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

 

3.编写测试代码

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

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

 

1)代码构成

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

 

# -*- encoding=utf8 -*-
__author__ = "Administrator"
import random
from airtest.core.api import *
from airtest.cli.parser import cli_setup
# 连接windows应用
if not cli_setup:
    auto_setup(__file__, logdir=True, devices=["Windows:///?title_re=.*阅云*"])
基于图像识别框架Airtest的Windows项目自动化测试实践

 

2)案例

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

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

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

def send_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.运行效果

 

6.查看测试报告

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

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

 

五、总结与思考

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>