Monkey測試,顧名思義,就是模擬一只猴子在鍵盤上亂敲,從而達到測試被測系統的穩定性。Monkey測試,是Android自動化測試的一種手段,Monkey測試本身非常簡單,Android SDK 工具支持adb Shell命令,實現模擬用戶的按鍵輸入,觸摸屏輸入,手勢輸入等操作,去發現應用隱藏的嚴重問題。
Monkey測試真的靠譜嗎?
現在線上有很多云測真機平臺,平臺上基本都支持Monkey測試服務(多數平臺收費),同時利用平臺上不同的測試機型發現被測應用的穩定性和健壯性問題。
Monkey自動化測試,通過Monkey命令及一些參數,可以控制Monkey在執行過程中出現異常而終止:
- --ignore-crashes? ? #忽略因crash終止測試
- --ignore-timeouts? ? #忽略因超時終止測試
- --ignore-security-exceptions? ? #忽略因權限異常終止測試
- --monitor-native-crashes? ? #監視奔潰時本地代碼
盡管Monkey命令可以避免上面所述的情況,但不同的Android 測試應用,功能結構不同,有些應用程序存在廣告,有些應用程序內跳鏈其他應用,這種情況下,Monkey測試過程被測應用有可能是沒有被執行的。當然,Monkey還可以指定執行被測應用的Activity(參數:-c?),甚至調整Activity啟動的百分百(參數:--pct-appswitch?)。
以jenkins+Monkey+Python自動化測試作為實例:
一鍵構建開始執行Monkey測試,在執行過程中,會記錄Monkey的日志,自動分析日志,并生成測試報告。(如圖1-1)
經過多次實驗證明:在限定的框架頁面,Monkey測試是有記憶操作的,與其說記憶操作,不如說是Monkey自動化測試的局限性所在。通過觀察與執行日志分析,發現Monkey在執行測試過程中,在同一個功能頁面框架下,它的操作總是跟之前的操作趨同,并且容易困在某個功能頁面。這也正是Monkey的隨機特性所在,有時才能發現被測試應用程序的穩定性和健壯性問題。
最后,我們已經知道Monkey測試并不能在我們預期之內執行100%事件發生在被測應用,從而增加了是否被執行到位的不確定性(概率事件),可以通過二次開發Monkey來實現(主要修改monkey.jar和framework.jar)防跳出、防中斷、防鎖死、控制隨機事件,最終達到測試的預期效果。Monkey的二次開發本文不作為詳細說明,感興趣的同學,可以自行嘗試。
實戰案例
光學理論是沒用的,要學會跟著一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習。
如果對你有幫助的話,點個贊收個藏,給作者一個鼓勵。也方便你下次能夠快速查找。
如有不懂還要咨詢下方小卡片,博主也希望和志同道合的測試人員一起學習進步
在適當的年齡,選擇適當的崗位,盡量去發揮好自己的優勢。
我的自動化測試開發之路,一路走來都離不每個階段的計劃,因為自己喜歡規劃和總結,
自動化測試視頻教程、學習筆記領取傳送門!!!