GAutomator是腾讯wetest测试平台下的一个针对手游的开源的自动化测试框架。源码在GitHub上有:GAutomator。GAutomator将sdk嵌入到游戏中,然后通过adb连接客户端和服务器端(手游端),最后通过在客户端写测试脚本来对游戏进行自动化测试。
从github上下载源码。
sdk支持两种游戏开发平台:Unity和Unreal。支持两种游戏运行平台:Android和IOS。在Unity中又支持两种UI种类:NGUI和Unity自带的UGUI。本文只记录Unity+Android+UGUI的使用。其余平台的使用可以参考源码中的各个使用文档。
- 将源码中的GAutomator/UnitySDK/compiled/UGUI/U3DAutomation.dll拷贝到Unity工程Assets目录下的任意合法位置。
- 将GAutomator/UnitySDK/compiled/u3dautomation.jar拷贝到Unity工程Assets/Plugins/Android目录下。
- 新建一个空的游戏物体,在上面挂上U3DAutomationBehaviour脚本。
这个脚本是在U3DAutomation.dll里面定义的一个类。对应的源码在工程源码下可以找到。后面讲。不过,官方的文档推荐用宏判定的方式动态挂载这个脚本,使得游戏在非测试的环境下不会运行这个测试SDK。具体看官方文档。
adb即Android Debug Bridge,是一个非常常用安卓调试工具。可以单独安装adb,也可以跟某些IDE一起安装。我是直接装了android studio,这样adb和android sdk也都免了。具体安装adb的方式询问度娘或google,具体的使用方式也参考度娘或Google。
adb connnect 127.0.0.1:7555
adb devices -l
- 打开机器的开发者模式
- 打开机器的USB调试选项
- 有些手机还需要将USB连接功能选至“传输文件”,adb调试才会生效
此时,你用上一条的命令应该就可以查询到真机的设备号。
在安卓平台上运行安装好的游戏,我们需要让sdk在测试脚本启动前运行。如果sdk成功运行,那么在开启游戏的最开始的几秒钟,游戏画面的左上角会显示红红的“GAutomator”字样。
用任何一款IDE或编辑器打开GAutomatorAndroid目录。这是针对Android平台的自动化测试脚本工程根目录。在这个根目录创建一个my_test.py
脚本,写入以下代码:
from wpyscripts.tools.basic_operator import * # 导入必要的模块
def test():
# 获得引擎管理模块实例和日志模块实例
engine=manager.get_engine()
logger=manager.get_logger()
# 获取sdk版本信息
version=engine.get_sdk_version()
logger.debug("Version Information : {0}".format(version))
# 获取当前游戏场景
scene=engine.get_scene()
logger.debug("Scene : {0}".format(scene))
# 查找一个名为Sample的按钮
sample_button=engine.find_element("/Canvas/Panel/Sample")
logger.debug("Button : {0}".format(sample_button))
# 点击该按钮
screen_shot_click(sample_button)
if __name__=="__main__":
test()
然后运行该脚本。
python my_test.py
如果游戏中存在一个/Canvas/Panel/Sample
按钮,则该按钮会被点击。
GAutomator提供了一个start.py脚本来启动你的代码。在此之前,他会做一些准备工作。比如读取命令行参数,一些初始化的工作。如果你想让脚本跑在多个机器上,那么你就需要为每台机器指定adb forward
的端口,为每个脚本指定对应机器的设备号。比如用如下方式启动:
python start.py --serial=emulator-5554 --uiport=5520
python start.py --serial=emulator-5556 --uiport=5530
具体的操作请阅读源码。