6.扣除b道具后,角色接得a1任務。
7.角色殺20個怪后,可以交任務。
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一樣,其實工具并不重要,關鍵是你的思路,有了思路,一切就都有頭緒了。當然有的東西可能不適合你們。畢竟不同公司條件或做法都有區別。
文章來源于領測軟件測試網 http://www.kjueaiud.com/