1. 程式人生 > >分享同事整理的 關於"iOS 無限monkey測試解決方案" 的記錄

分享同事整理的 關於"iOS 無限monkey測試解決方案" 的記錄

無限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 日誌
  • 將郵件傳送給負責人。