ADB中monkey測試
1、Monkey測試
1.1、參考材料
http://blog.csdn.net/jlminghui/article/details/38238443
1.2、Monkey介紹
顧名思義,Monkey就是猴子, Monkey測試,就像一隻猴子,在電腦面前,亂敲鍵盤在測試。 猴子什麼都不懂, 只知道亂敲
通過Monkey程式模擬使用者觸控式螢幕幕、滑動Trackball、 按鍵等操作來對裝置上的程式進行壓力測試,檢測程式多久的時間會發生異常
1.3、Monkey用來做什麼
Monkey 主要用於Android 的壓力測試 自動的一個壓力測試小工具,主要目的就是為了測試app是否會Crash(崩潰).
1.4 Monkey程式介紹
(1) Monkey程式由Android系統自帶,使用Java語言寫成,在Android檔案系統中的存放路徑是: /system/framework/monkey.jar;
(2) Monkey.jar程式是由一個名為“monkey”的Shell指令碼來啟動執行,shell指令碼在Android檔案系統中 的存放路徑是: /system/bin/monkey;
(3)Monkey 命令啟動方式:
a)可以通過PC機CMD視窗中執行: adb shell monkey {+命令引數}來進行Monkey測試
b)在PC上adb shell 進入Android系統,通過執行 monkey {+命令引數} 來進行Monkey 測試
c ) 在Android機或者模擬器上直接執行monkey 命令,可以在Android機上安裝Android終端模擬器
2、Money 命令 基本引數介紹
2.1、使用monkey測試手機所有程式
adb shell monkey 100 執行monkey測試100次 針對rom測試或者
2.2、-p<允許的包名列表>
用此引數指定一個或多個包。指定包之後,monkey將只允許系統啟動指定的app。如果不指定包, monkey將允許系統啟動裝置中的所有app。
adb shell monkey -p com.tencent.mobilleqq 100
2.3、
用亍指定反饋資訊級別(資訊級別就是日誌的詳細程度),總共分3個級別,分別對應的引數如下 表所示:
Level 0 : adb shell monkey -p com.example.login -v 100 // 預設值,僅提供啟動提示、測試完成和最終結果等少量資訊
Level 1 : adb shell monkey -pcom.example.login -v -v 100 // 提供較為詳細的日誌,包括每個傳送到Activity的事件資訊
Level 2 : adb shell monkey -pcom.example.login -v -v -v 100 // 最詳細的日誌,包括了測試中選中/未選中的Activity資訊
2.4、Monkey日誌分析
將log資訊寫到文件中
adb shell monkey 100 >E:/22.txt
正常情況, 如果Monkey測試順利執行完成, 在log的最後, 會打印出當前執行事件的次數和所花費的時間; // Monkey finished 代表執行完成\
隨機數種子
用亍指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的
monkey測試1:adb shell monkey -pcom.shjt.map –s 10 100
monkey測試2:adb shell monkey -pcom.shjt.map –s 10 100
2.5、--throttle<毫秒>
用亍指定使用者操作(即事件)間的時延,單位是毫秒;如果不指定這個引數,monkey會盡可能快的 生成和傳送訊息。
adb shell monkey -p com.example.login --throttle 300 100
表示執行100個偽隨機使用者事件流,事件間隔為300毫秒。
注:一般設定為300毫秒,原因是實際使用者操作的最快300毫秒左右一個動作事件。
2.6、--pct-touch<percent>
調整觸控事件的百分比。(觸控事件是指在螢幕中的一個down-up事件,即在螢幕某處按下並抬起的操作)
–pct-touch:觸控事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的座標臨近,但並非相同。
adb shell monkey --pct-touch 65 -v 10
此引數設定要適應當前被測應用程式的操作,比如一個應用80%的操作都是觸控,那就可以將此引數的百分比設定成相應較高的百分比。
2.7、--pct-motion<percent>
調整motion事件百分比。(motion事件是由螢幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)
–pct-motion:動作事件。以Down(ACTION_DOWN)開始,Up(ACTION_UP)結尾,中間至少有一次Move(ACTION_MOVE)。
adb shell monkey --pct-motion 67 -v 10
表示執行10個偽隨機使用者事件流,並調整其中動作事件的百分比為67%。
注:這裡的移動是直線滑動
2.8、--ignore-crashes
作用:通常,應用發生崩潰異常時Monkey會停止執行。如果設定此項,Monkey將繼續傳送事件給系統,直到事件計數完成
正常操作,不忽略異常
adb shell monkey --ignore-crashes –v 10
2.9、Monkey 例項
用monkey命令 對登入apk進行 效能測試
monkey -p com.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &
1. -p後面接著的對應的包名,如果是整機測試,就不需要 -p package_name
2. -s後面是對應的種子數,好像就是操作步驟,根據她們測試的經驗,一般種子數在23,同步她們測試的結果,一般種子的個數固定為23,和她們選擇的操作步驟就是同步的。
3. --ignore-crashes --ignore-timeouts 這裡是在monkey測試的過程中遇到carash或者timeout的情況時忽略掉,一般不設定時,出現carash或者timeout時,Monkey測試會終止。這裡是防止Monkey測試終止。
4. -v 指的是Monkey測試時列印log級別。
5. 100000 這裡是指點選的次數,根據她們測試的經驗,對於單個應用程式這個次數設定在100000次就可以了;如果是整機,一般設定在500000次。
/data/local/tmp/log.txt測試的log記錄在手機上/data/local/tmp/ 下面的log.txt裡面,這個名字可以自己寫。
6. 2>&1 固定的寫法,這個也很重要,代表的意思是中間忽略的東東的日誌一併輸入到指定的檔案中。
7. 最後單獨的一個"&" 是一旦Monkey測試開始了,之後可以拔掉資料線,不會影響Monkey測試。
8. 測試所有模組 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/log.txt 2>&1 &
adb shell monkey -p com.example.login --ignore-crashes --ignore-timeouts --throttle 100 --pct-touch 50 --pct-motion 50 -v -v 1000 >E:/324.txt
3.1.1.Monkey異常分析
一般我們可以一次傳送5萬次隨機事件的請求,每個請求之間的間隔為150毫秒,測試大約會進行40min,完成以後就可以檢視日誌。
日誌中可能的錯誤:
1.程式異常退出,uncausedexception (ctrl+f搜尋)
2.程式強制關閉,ForceClosed (簡稱FC) (同上)
3.程式無響應,ApplicationNo Response(ctrl+f搜尋‘ANR ’,加空格是為了遮蔽掉一些無效資訊)
4.手動生成。
Monkey 執行中斷, 在log最後也能看到當前執行次數