1. 程式人生 > 實用技巧 >ADB中monkey測試

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最後也能看到當前執行次數