場景
游戲里有很多關卡(可能有幾百個了),理論上每次發布到外網前都要遍歷各關卡看看會不會有異常,上次就有玩家在打某個關卡時卡住不動了,如果每個關卡要人工遍歷這樣做會非常的耗時,所以考慮用自動化的方式來實現。
思路
游戲的戰斗是有時間限制的,到了 5 分鐘打不過就會判負,勝負都會出現結算面板,用 GA 提供的 find_element_wait 函數查找這個結算面板,從進入戰斗到找到了這個面板 element 就是通關時間,如果超過 5 分鐘了就說明被卡住了,最后輸出一張” 關卡通關時間表 “排序看看哪些關卡通關時間>5 分鐘即為有問題的關卡。
實現細節
1.卡住的判定和處理
GAutomator find_element_wait 函數的說明
代碼中設置 5 秒查一次結算面板,超過 60 次其實已經卡住了 。Page.panel_BattleRes 是結算面板,這里采用 PO 模式把所有的 element 都寫入到一個 Page 中。
如果卡住 了游戲會一直停在哪里,卡住后利用 adb 指令重啟游戲并繼續測試下一個關卡一直到遍歷整個關卡列表。
2.GAutomator 調用游戲內部的 GM 指令
GAutomator 可以把游戲里的 C# 函數注冊過來然后在 python 中調用,這是 GA 說明文檔相關部分:
所以把游戲中的 GM 指令方法注冊過去再在腳本里調用,這樣我才能用指令進入各關卡而不會受到等級、入口、前置關卡等限制
unity 中:
python 中:
3.最終輸出的報告
第一列是關卡 id,第二列是通關時間,100014 這個關卡是有問題的,因為已經超過 5 分鐘了
詳細代碼
AutoBattleTest.py 用來實現核心邏輯
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
ExcelTool.py 用來讀寫表格
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
后記
這套腳本可以排查出一進入或者中途被卡住或者不結算被卡住的問題,但是如果是某個怪物的某個技能必定能導致關卡卡住,而這個怪物在放技能之前就被殺了,這種情況這套腳本有概率排查不到。
?現在我也找了很多測試的朋友,做了一個分享技術的交流群,共享了很多我們收集的技術文檔和視頻教程。
如果你不想再體驗自學時找不到資源,沒人解答問題,堅持幾天便放棄的感受
可以加入我們一起交流。而且還有很多在自動化,性能,安全,測試開發等等方面有一定建樹的技術大牛
分享他們的經驗,還會分享很多直播講座和技術沙龍
可以免費學習!劃重點!開源的!!!
qq群號:485187702【暗號:csdn11】
最后感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!?希望能幫助到你!【100%無套路免費領取】