技术开发 频道

胡侃游戏自动化测试(四)

【IT168 技术文章】

    感觉三还写不完,四接着写!

    我们将我们的测试任务大概分解成了(三)的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一样,其实工具并不重要,关键是你的思路,有了思路,一切就都有头绪了。当然有的东西可能不适合你们。毕竟不同公司条件或做法都有区别。

    好了,大概思路就这样,今天爆发了

0
相关文章