分享同事整理的 關於"iOS 無限monkey測試解決方案" 的記錄
阿新 • • 發佈:2019-02-13
無限monkey解決方案
一、什麼是monkey,目的
- 軟體穩定性測試,向系統傳送偽隨機使用者事件流實現壓力測試。
- 目的:解放雙手,告別點點點。
- 優點:提升應用穩定性,能測出一些不可知的情況還有手動點點點無法測出的問題。
- 侷限性:一般用來測試UI的問題。
二、monkey 與單元測試的區別
- monkey 是模擬事件流,並隨機分發;
- 單元測試是指標對某個 case 進行指定的測試。
三、黑盒與白盒
- 黑盒:在不知道程式碼的情況下對應用進行測試,一般無侵入性;
- 白盒:在知道程式碼的情況下對應用進行測試,一般具有侵入性。
四、比較流行的解決方案,曾經比較流行的解決方案
- 較早使用 UIAutomation + js 指令碼 現已經被移除。
- monkeytalk 也很好用,但是國內用的比較少,後來被收了,轉商用。程式碼部分開源。
- Appium 現在黑盒中比較流行的解決方案。
- 好處:黑盒,開源,國內現在有許多開發者在支援。對於 iOS 內部支援已改為 UI Testing 。
- 缺點:環境搭建費勁。執行慢。
- macaca, Robotium… 我也不太熟。
五、我們使用的monkey解決方案
- SwiftMonkey 老外寫的 uitesting 白盒 monkey 解決方案。通過 uitesting 私有方法隨機產生事件流來進行 monkey。
六、什麼是無限monkey,為什麼要無限monkey
- 無限 monkey 是一套更加完善的客戶端自動化測試解決方案。
- 傳統意義的monkey,當客戶端crash 之後就結束了,無法重新啟動。無限monkey的意義在於 當客戶端crash 之後可以重新吊起,並會將崩潰時的 crash 日誌與 log 日誌 打包傳送郵件給開發人員,這樣就真正意義實現了一套完全自動化的 monkey。
七、技術點
- monkey 框架引入
- 判斷被測 app 是否crash。
- crash hook 與 crash 檔案
- log 重定向輸出
- 下載log,crash 日誌
- 將郵件傳送給負責人。