游戏可以写一些脚本驱动游戏自动化测试,其自动化原理基本和Appium测试手机APP基本一样,可以通过相应的驱动解析出相应的目录结构,是一棵树,树的大小基本和游戏中存在的内容有关。
poco库的原理就是游戏运行过程中通过ADB命令获取到这些树,进行解析,找到代码中的节点进行操作。前期通过AirtestIDE写一些脚本,发现有如下几个问题。
1.目录树结构太多,显示在页面上层级过多,难以把控。
2.驱动过慢,自动化脚本驱动程序运行慢,尤其是在获取UI树的时候,会卡顿,影响程序性能。
3.相应节点都写在代码上,代码可维护差,且代码重复性高。
前期也写了一些遍历框架、及探索自动化框架但效果不怎么理想,开发一套属于自己的自动化录制框架势在必行。经过相应的研究,及前期的技术积累。开发了自动化录制框架,其框架有以下优点。
1.支持录制,即在用户点击过程中测试用例的生成。
2.自动解析可点击节点,并渲染到游戏截图上。
3.采用坐标点击方式,点击过程不在遍历UI树,游戏运行过程和人工点击效果相似。
使用方式如下:
pip install -r requirements.txt
python main.py
相应的运行过程:
程序自动获取当前游戏画面并标记所有可点击节点。
命令窗口将会提示用户点击哪一个节点,并提示节点的名字。
用户选择节点后程序将会模拟用户进行执行,此时点击步骤已经被记录。
询问是否达到预期效果
属于步骤将被写入测试用例中。输入其它不被记录,防止出现点击出错的情况。
最后导出测试用例,大约是这个样子。
{
"author": null,
"gameName": "test2",
"steps": [
{
"name": "BtnBgEnter",
"pos": [
0.5,
0.889444351
],
"type": "Button",
"sleep": 12
},
{
"name": "BtnBag",
"pos": [
0.9213542,
0.0379629247
],
"type": "Button",
"code": "print('open bag')"
},
],
"originPage": null,
"executeTime": 0
}