App穩定性測試-Monkey
穩定性測試—Monkey
- 概念介紹和原理實現
1、“猴子測試”是指沒有測試經驗的人甚至對計算機根本不瞭解的人(就像猴子一樣)不需要知道程式的任何使用者互動方面的知識,如果給他一個程式,他就會針對他看到的介面進行操作,其操作是無目的的、亂點亂按的。
2、利用socket通訊的方式來模擬使用者的按鍵輸入,觸控式螢幕輸入,手勢輸入等,看裝置多長時間會出異常。
- Monkey程式介紹
1、Monkey程式由Android系統自帶,可以執行在模擬器裡或者真是裝置中執行,使用Java語言寫成,在Android檔案系統中的存放路徑是:/system/framework/monkey.jar,該程式需要由一個名為“Monkey”的shell指令碼來啟動執行。
2、Monkey向系統傳送偽隨機的使用者事件流,實現對正在開發的應用程式進行壓力測試。
- 測試環境搭建
- PC端安裝adb(不清楚的可自行百度查詢)
- 手機通過USB連線電腦,自動安裝usb驅動
- 設定手機螢幕為常亮,防止手機進入鎖屏狀態
- 需要登入的App,用測試賬號先登入(最好由開發提供一個遮蔽賬號退出功能的APK包,防止執行過程中賬號被退出登入)
- Monkey命令介紹
monkey -p com.hosjoy.ssy -s6515 --pct-touch 45 --pct-motion 20 --ignore-security-exceptions --ignore-crashes --ignore-timeouts --ignore-native-crashes --throttle 1000 -v -v -v 5000000 >/mnt/sdcard/monkey.txt
常用指令介紹:
-p :指定有效的包名(如果不指定,則允許系統中所有有效的package),若需執行多個包,則後面繼續加-ppackage
-s :指定產生隨機事件種子值,相同的種子值產生相同的事件序列
-v:指定列印資訊的詳細級別,一個-v增加一個級別,-v-v-v為最詳細
-throttle:每個事件結束後的間隔時間(毫秒)——降低系統的壓力(如不指定,系統會盡快的傳送事件序列)
-pct-touch <percent>:跳轉觸控事件的百分比
-pct-motion <percent>:調整motion事件百分比(線滑動事件如從左到有滑動解鎖)
--ignore-crashes:忽略崩潰
--ignore-timeouts:忽略超時
--ignore-security-exceptions:忽略安全異常
詳細指令,可自行百度檢視
- Monkey執行與停止
5.1 Monkey執行
1、PC端adb shell+monkey命令(根據不同app自行修改對應的引數)
2、將常用monkey命令寫成bat指令碼,執行前對應修改包名與其他引數
5.2 Monkey停止
1、使用“adb shell ps | grep monkey”命令,查找出monkey的程序號;
2、再使用kill程序號,殺掉monkey的程序
備註:如果monkey程序查不到,重啟手機adbreboot時程序也被殺死
- Monkey結果分析
1、按關鍵字進行搜尋,ANR、Exception、Crash、Error
2、找到有問題的地方,檢視上下文資訊
3、注意第一個switch上下文資訊
4、檢視monkey裡面出錯前的一些事件動作,可以手動執行該動作
5、進行問題復現,可以使用之前執行的monkey命令在執行一遍,注意seed值要一樣
為簡化統計操作,可使用bat指令碼進行統計,使用如下:
【測試結果分析】
(1)、ANR問題(程式無響應):在日誌中搜索“ANR"(application no response)
(2)、閃退問題:在日誌中搜索"crash"
(3)、異常:搜尋"exception"
(4)、強制退出:搜尋"force closed"
常見的Crash錯誤資訊如下: