感觉三还写不完,四接着写!
我们将我们的测试任务大概分解成了(三)的8步吧。
接下来,我大概说说测试思路哈:
player = GetPlayerByName('xxx') 首先获得一个player对象,这里前面就是谈到的对象概念了。
player.SetLevel(10) 设置player对象等级
player.AddItem(b,n) 设置角色身上道具b
player.SetPkValue(5) 设置pk值
player.ChangePos(x,y,z) 将player传送到npc那
player.GetMenu(npc,choice) 选择和npc对话和具体选项。
if player.GetItemNum(b)!=n-1 or player.task[taskid].status:判断是否正确接到任务和扣除道具
Error(player) 如果错误,则返回player的数据(包含任务等数据)
return false
好了,这里说个思路就是了,我们实现自动化测试的思路大概就是这样的。当然其实这个还可以进一步做的,相信大家见过一些地图编辑器和任务编辑器,我现在可以说一个,其实我们自动化测试的时候可以做测试编辑器。思路还是和上面说的一样。
只是要做这个测试编辑器,就需要更好的设计优化我们的测试平台,将我们测试行为分离成指令+数据的形式。比如上面说的找npc对话接任务,我们平台可以设计一个接口:GetNpcOption(npcid,choice,player)实现把player传送到npcid那并选择某个选项。这个接口首先需要能找到这个npcid的npc,然后吧player传送到这里来,然后player选择这个choice。好了,我们假设我们这个也已经做过优化了。接下来,我们设计用例吧:
操作过程
player.level=10
player.SetItem(b,n)
player.pkValue=5
GetNpcOption(npcid,choice,player)
预期结果:
player.GetItemNum(b)==n-1 and player.task[taskid].status
测试结果就拿来和预期结果比较就可以了。相信这样说大家已经明白了这个测试编辑器怎么做了,就是将我们行为和数据简化成指令+数据,我们可以通过这个编辑器来编辑测试行为,而我们的测试平台需要能解释这些行为。这里测试平台要吧这些行为翻译成游戏能理解的数据。这个最初我以为开发量会很大,但实际做下来,这个翻译行为比预想的轻松得多(当然,前提还是架构充分考虑到这些问题哈)。
好了,我们现在可以把精力充分花在设计用例上了,我们可以把最擅长设计用例的人充分利用起来,让少部分人去维护吧,这样,我们就可以把最合适的人放到最合适的岗位上去了。
为了测试更全面,我们还可以更进一步,让我们测试编辑器,可以设计一些随机行为,这里随机行为一个是数据的随机,一个是操作顺序和操作的随机(前提是这些操作随机后是游戏平台能识别并翻译的)。我们还可以定义只要不满足什么条件就是测试不通过的。这样只要我们的测试覆盖率就直接受我们设计测试影响了。一些人无法实现的大量,重复的,偶然的也可以做了。
一些朋友问我:能不能再具体点?其实已经很具体了,自动化是一种思想,就像lr,qtp一样,其实工具并不重要,关键是你的思路,有了思路,一切就都有头绪了。当然有的东西可能不适合你们。毕竟不同公司条件或做法都有区别。
好了,大概思路就这样,今天爆发了
预告:胡侃游戏自动化测试(五)会说说游戏架构未考虑测试的时候,可以做些什么。