游戏自动化测试之辅助工具篇

说到游戏的自动化测试,很多人脑海中第一个浮现出来的词语,我想是UI自动化和接口自动化这两个的其中之一吧。

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

除了UI和接口自动化测试,我们也可以将测试工作中的重复性内容,编写成脚本或工具,可以反复使用,提升工作的效率。

今天就来聊一聊测试辅助工具的开发吧。

懒人思维

首次,要做一个“懒测试”。对于工作中的重复性内容,不能一味地允许自己重复再重复,我们需要解放自己的双手,更高效地完成工作任务。

通过分析重复性工作是否可以形成规律性的步骤,开始编写测试工具脚本,首先网上搜索是否已经有靠谱的解决方案(毕竟重复造轮子也是对时间的消耗),如果有,直接用即可,如果没有,那就自己造轮子呗。

对测试脚本的公共功能抽取出来,封装后加入到公共测试库里边,方便之后的复用。

编程语言的选择

其实主流语言都是不错的选择,用自己熟悉的语言即可。

权衡之下,我选择了Python,主要原因有以下几点:

  • 容易上手,在测试人员之间更容易推广。

  • 强悍的标准库和海量的第三方库,想到的实现方式往往已经有成熟的轮子了。

  • 和编译型语言相比,相同的功能少写好多代码,开发效率高。

  • Python作为一门出色的胶水语言,可以和C#,java联合使用。

实践起来

举几个例子吧。

查看内网发版时间

有时候问开发,最近一次内网服务端发版是什么时候?开发回答:有点忘记了。。

那就得自力更生了~

原始方式:使用FTP软件连入内网服务器,查看文件的更新日期,从而知道发版时间。

懒人方式:那就写个脚本吧。

1
2
3
sftp = SFTPClient(host="192.168.1.10", port=22, user="root", pwd="XXXXXX")
print "内网发版时间是:{}".format(sftp.get_file_update_time(path='/data/www/sg/sg_dev/socket/conf/config/treasure'))
sftp.close()

SFTPClient点击查看源码

批量更新SVN目录

有2个常用的SVN目录,一个策划文档目录,一个配置表目录,每天来到公司,都需要,先Revert,再Update。

懒人方式:几行代码实现批量操作。

1
2
3
4
5
6
7
8
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
from __future__ import unicode_literals
import subprocess
subprocess.Popen(r'TortoiseProc.exe /command:revert /path:"E:\策划文档" /closeonend:0'.encode('gb2312'))
subprocess.Popen(r'TortoiseProc.exe /command:revert /path:"E:\配置文档" /closeonend:0'.encode('gb2312'))
subprocess.Popen(r'TortoiseProc.exe /command:update /path:"E:\策划文档" /closeonend:0'.encode('gb2312'))
subprocess.Popen(r'TortoiseProc.exe /command:update /path:"E:\配置文档" /closeonend:0'.encode('gb2312'))

之前分享的一些例子