淘先锋技术网

首页 1 2 3 4 5 6 7

v2-056a61fe9ae47000ed91128b1ae6be3d_1440w.jpg?source=172ae18b

一、AirTest 简介

AirTest Project旗下有四个产品:AirTestIDE、AirTest、Poco、AirLab

AirTest

跨平台的UI自动化框架,适用于游戏和App。提供设备连接、运行Test脚本、生成测试报告等基础功能。

Poco

Poco是一个跨平台的UI测试框架。提供控件查询、遍历、触摸、拖动等强大功能。

AirTestIDE

AirTest的集成开发环境,提供便捷的AirTest开发体验,测试代码编写,调试运行都可以在AirTestIDE里完成。内置AirTest和Poco。

AirLab

基于AirTest的云测平台,这里不做展开。

其他工具

Hierarchy viewer (UI Inspector)

UI层节点树形结构查看器,可以方便的看到节点的命名、层级、以及常规属性。

一般情况下,使用AirTestIDE编写调试测试脚本,脚本基本开发完成之后,则使用airtest命令行工具做脱离IDE的自动化测试。Poco框架提供的强大灵活的UI选择接口,可以帮助我们快速获取到指定的控件,继而进行相应的操作。


二、开始使用AirTest

1、接入PocoSDK

Poco SDK 接入文档

2、编写测试代码

lua中启用PocoManager

local poco = require('poco.poco_manager')
poco:init_server(15004)  -- default port number is 15004, change to another if you like

python test script

poco = StdPoco()
poco('AddStarPanel').wait_for_appearance() //等待名字为AddStarPanel的节点
poco('AddStarPanel').click() //点击AddStarPanel节点

3、其他有用的文档

我们项目使用的引擎是cocos2d-x,所以选择cocos版本的SDK。这里推荐测试环境为Android。iOS的测试环境搭建相对复杂,而且必须依赖XCode,实用性大打折扣,不推荐。

官方文档写的还算详细,但是比较分散,有用的东西散落在很多地方,这对初学者来说并不是很友好。在这里列出几个有用的文档链接。

AirTest Core文档

Poco文档

Poco-SDK github

Hierarchy viewer (UI Inspector)


三、遇到的坑

项目背景

《洪恩识字》App内包含数百个小游戏场景,每次修改公共代码之后,影响范围很大,尤其是修改基类的公共接口,需要把所有的游戏都测一遍,这工作量可想而知有多大。自动化测试可以节省大量的人力,对我们项目来说意义重大。

我们项目的测试诉求:针对每个游戏环节(玩、认、练、写、测)自动化测试,支持收集Lua崩溃日志,以每个字为单位生成测试报告。

“留一手”的开源代码

在决定使用AirTest之后,我进行了深入的调研,跑通整个测试开发流程,以及阅读部分源码。阅读源码的过程中我发现网易开源的Poco代码,并不完整。其使用的simplerpc是明显阉割过server端代码的。

并且Poco的接口是支持GM命令的,例如为了方便测试,自动进入某场景,甚至获取一些配置数据等。当然这个接口也是被阉割过的。

魔改之路

接下来方向比较明确,fork repo到我厂的gitlab,进行魔改。主要实现以下功能: - rpc server - gm command - lua crash report

替换AirTestIDE内置的poco

AirTestIDE里内置了airtest和Poco,如果我们想用自己修改的Poco,需要设置一下优先搜索路径。我的poco的git repo路径是"E:auto_testpoco";

sys.path.append("E:auto_testpoco")

从本地代码安装poco:

1)新建auto_test目录
2)在auto_test下执行
git clone https://x.x.x.x/ihuman/poco.git poco
    git checkout master
3)pip install -e poco

从本地代码安装airtest与上一步类似,pip install时记得加-e参数。

基本功能完善之后,如何批量进行测试就成了问题。调研了一下poco unit,以及my-testflow,发现并不满足我们的需求。

于是我写了一个框架,组织管理批量测试任务,生成测试报告,汇总报告结果。

基本流程跑通之后,基于我的测试框架,QA同学可以轻松的新建测试脚本,在AirTestIDE里开发调试脚本,通过命令行工具进行测试任务。

四、写在最后

AirTest的工具链非常强大,可以满足基本的测试工作,如果项目有特殊需求,可以自行开发。 Poco在性能方面还有很大的提升空间,以后有时间我会继续性能方面的优化。
以上就是我使用airtest的一些经历,在此抛砖引玉。