【游戏】测试开发中的一些工具整理(一)
在经历了多个项目后,发现总是会有一些工具会被重复开发。不同项目的流程不尽相同,在工具的需求上总会有一些变化。所以在开发工具的时候就需要适当的预留一些可扩展的接口,方便工具复用和适应变化。因此我准备将曾经开发过的一些工具进行整理记录在此,方便以后查阅。
一、导表工具
游戏项目的配置数据(产品数据)基本上都是通过Excel进行配置,然后使用工具导出为lua,json,xml等格式的文本文件,然后供客户端和服务端读取使用。正如刚开始所说的那样,由于不同项目对配置文件的格式需求不太一样,因此必须开发适合的导出配置工具。
工具开发方式和语言使用有很多的选择,例如vba,python,c#等等。下面是Python使用xlrd库打开Excel表进行导出配置文件的伪代码。
workbook= xlrd.open_workbook("配置表.xls")# 操作excel sheet = workbook.sheet_by_index(0) #根据下标获取对应的sheet表 for i in range(1, sheet.nrows): for j in range(1, sheet.ncols):# 每一行的数据数 value_cell = sheet.cell(i,j).value #按照规则就可以将下图的数据导出
工具的开发难度相对不高,但是如果可以增加一些额外的设计考虑,其实重复的利用率会很高,下面就简单的罗列一下我的一些想法。
1.输入输出模块独立
将输入模块和输出模块与工具本体解耦,这样可以在工具自身处理逻辑不变的情况下,通过小的变动在不同项目中适应。假设输入模块从Excel换成其他的文件,只需要将这种格式的文件数据转换输出为工具可以识别的输入格式即可。输出模块的变化也是同理,这样定义好标准的数据格式后,即可增加特定插件模块完成融合。
2.导出检查
数据导出前先通过编写的检查脚本进行数据检查,这样可以很大程度减少错误数据的提交情况,提高数据的质量。脚本可以单独编写,然后通过配置文件关联到对应的数据表上,导出前执行一次。
3.SVN接口利用
导表工具可以接入SVN相关的接口,例如显示全部配置表的状态(修改,删除,锁定),增加快速锁定和解锁的接口。GUI化的导表工具可以在界面上展示这个表是否被其他人修改,被谁锁定。实时的状态展示可以减少多人协作中的冲突问题。
4.多人合作的另一个想法
这个想法还没实现,但是应该还是有实现的价值的,就是将配置数据的工作通过网络来进行协作。例如开发一个GUI的Excel在线编辑工具,多人进行编辑时可以实时同步给其他人修改的位置和数据(Office 365不知道能否满足这个需求)。再将上面的SVN和数据检查全部接入,这样一个导表工具应该有价值吧?!
二、SVN提交钩子pre_commit
利用SVN的钩子脚本可以做一些额外的项目版本管理。pre_commit钩子可以获取正在提交的内容,包含备注和提交的文件列表,然后我们可以做一些提交限制。最常见的应该是提交没有写备注时不允许提交,见下面的代码(来源网上)。
@echo off set REPOS=%1 set TXN=%2 svnlook log %REPOS% -t %TXN% | findstr . > nul if %errorlevel% gtr 0 (goto err) else exit 0 :err echo. 1>&2 echo 提交信息(备注)不允许为空,请填写信息后重试 1>&2 exit 1
其实我们还可以做更多的限制,例如某些目录不可提交;限制某个时间段不可提交;限制提交的内容必须包含的内容。我们可以在这个钩子脚本里面调用我们写的其他脚本,然后将提交的内容定向到我们的检查工具中进行验证提交。
REPOS="$1" TXN="$2" commit_log=$(svnlook log $REPOS -t $TXN) commit_author=$(svnlook author $REPOS -t $TXN) commit_files=$(svnlook changed $REPOS -t $TXN) #我们自己的脚本里面决定本次提交是否允许 my_check_script "$commit_log" "$commit_author" "$commit_files"
未完待续~,后续会继续带来其他的工具记录。
欢迎微信搜索"游戏测试开发"关注一起沟通交流。