1. 程式人生 > >【轉】monkey實戰--測試步驟、常用參數、常規monkey命令

【轉】monkey實戰--測試步驟、常用參數、常規monkey命令

固定 內存 err 完成後 get 都是 指點 cti 輸入

簡要步驟:adb devices---了解包名--adb shell monkey -p 包名 -v 運行次數(多個參數的組合形成不同的用例以求最大的覆蓋)--當崩潰或無響應時分析monkey日誌

常規monkey命令(可直接在項目裏使用):

adb shell monkey -p com.jiochat.jiochatapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\b.log

重現bug:monkey日誌搜索關鍵詞ANR exception,將之前的事件重新操作,尤其是seed值要一模一樣,如monkey -p 包名 -v seed 0 500

日誌分析:查看是否有crash等關鍵字,找上下文,進行簡單分析將你所能定位的錯誤信息發給開發。

該工具用於進行壓力測試。 開發人員結合monkey 打印的日誌 和系統打印的日誌,修改測試中出現的問題。Monkey 是SDK中附帶的一個工具,所有的事件都是隨機產生的,不帶任何人的主觀性。

Monkey程序由Android系統自帶,使用Java語言寫成,在Android文件系統中的存放路徑是:/system/framework/monkey.jar。

技術分享圖片

技術分享圖片

Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執行,shell腳本在Android文件系統中的存放路徑是:/system/bin/monkey;這樣就可以通過在shell窗口中執行: adb shell monkey {+命令參數}來進行Monkey測試了。

技術分享圖片

技術分享圖片

二、monkey測試環境搭建:運行前安裝adb(MONKEY測試使用的是ADB命令,因此只需要配置ADB環境即可。)

1.pc端下載adb命令包,解壓後放到C盤目錄下(也就是jdk,sdk,下載地址:http://pan.baidu.com/s/1pJ6Yqs7,jdk安裝,sdk解壓即可,並配置環境變量,path加上platform-tools和tools的目錄路徑)

技術分享圖片技術分享圖片

2.手機通過usb連接電腦,自動安裝usb驅動,連接成功

3.驗證adb命令能否運行

pc端進入cmd命令行---進入C:\tmg目錄下--運行adb shell,出現$符號證明adb命令運行成功,進入shell模式

技術分享圖片

三、手機設置

手機屏幕超時設置為從不關閉,防止手機進入鎖屏狀態。

以htc手機為例:進入設置-顯示--屏幕待機--設置為從不關閉。

技術分享圖片

四、運行monkey

運行方式有三種:a.pc機上 adb shell monkey +參數 b pc機輸入adb shell進入到手機的安卓設備後再monkey+參數 C手機設備上安裝一個模擬器手機執行monkey+參數(手機模擬器可以通過百度搜索或360手機助手搜android terminal,安裝即可,可以在模擬器的命令行中輸入mokey +參數)

下面是第一種方法:

1.查看包名:查看電腦中某一位置的apk文件的包名:PC打開CMD-進入TMG目錄-運行設備--查看包名aapt dump badging *.apk(apk文件的路徑,可以直接拖拽)。

技術分享圖片

或者直接查看手機中存在的apk包,進入adb shell 命令後---手機的data/data文件夾--ls查看所有包名 找到要測apk的包名

技術分享圖片

2.運行monkey,對此包進行300次無規律點擊。

技術分享圖片

或者運行monkey,對此包進行300次無規律點擊後將日誌導出到電腦的某一位置

adb shell -p 包名 -v 點擊數 >電腦某一位置

技術分享圖片

3、測試停止後,查看導出的monkey日誌,發現問題。

技術分享圖片

在log的最開始都會顯示Monkey執行的seed值、執行次數和測試的包名。

首先我們需要查看Monkey測試中是否出現了ANR或者異常,無響應問題(ANR問題):在日誌中搜索“ANR ”(此處有空格), 崩潰問題:在日誌中搜索“Exception”,快速定位到關鍵事件信息 。然後查看Monkey裏面出錯前的一些事件動作,並手動執行該動作,找出重現步驟,給開發。

技術分享圖片

五、monkey命令詳解

技術分享圖片

monkey -pcom.tencent.mtaexample -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/log.txt 2>&1 &

1. -p後面接著的對應的包名,如果是整機測試,就不需要 -ppackage_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 &

六、monkey常用參數詳解

-v 日誌詳細程度

Level 0 : adb shell monkey -p fishjoy.control.menu -v 100 最簡單(默認),除了啟動、測試完成和最終結果外只提供較少的信息。

Level 1 : adb shell monkey -p fishjoy.control.menu -v -v 100 提供了較為詳細的測試信息,如逐個發送到Activity的事件信息

Level 2 : adb shell monkey -p fishjoy.control.menu -v -v -v 100 提供了更多的設置信息,如測試中選中或未選中的Activity信息

比較常用的是-v -v -v,一般會保存到指定文件中供開發人員查找bug原因時使用

-s(隨機數種子)

指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。

示例: monkey測試1:adb shell monkey -p fishjoy .control.menu –s 10 100

monkey測試2:adb shell monkey -p fishjoy .control.menu –s 10 100

--throttle <毫秒>

指定用戶操作(即事件)間的時延,單位是毫秒;如果不指定這個參數,monkey會盡可能快的生成和發送消息。

示例:adb shell monkey -p fishjoy.control.menu --throttle 3000 100

-p <允許的包名列表>

用此參數指定一個或多個包。指定包之後,monkey將只允許系統啟動指定的app。如果不指定包,monkey將允許系統啟動設備中的所有app。

--ignore-security-exception

作用:通常,當程序發生許可錯誤(例如啟動一些需要許可的Activity)導致的異常時,Monkey將停止運行。設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。

--ignore-timeouts

作用:通常,應用程序發生任何超時錯誤(如“Application Not responding”對話框)Monkey將停止運行,設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。

--ignore-crashes

作用:通常,應用發生崩潰或異常時Monkey會停止運行。如果設置此項,Monkey將繼續發送事件給系統,直到事件計數完成。

--pct-touch <percent>

作用:調整觸摸事件的百分比.(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下並擡起的操作)比如一個應用80%的操作都是觸摸,那就可以將此參數的百分

比設置成相應較高的百分比。如觸摸返回、觸摸簽到等

--pct-motion<percent>

調整motion事件百分比。(motion事件是由屏幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)也就是直線滑動事件如從左到有滑動解鎖

--pct-trackball <percent>

作用:調整滾動球事件百分比。(滾動球事件由一個或多個隨機的移動事件組成,有時會伴隨著點擊事件)如不規則滑動解鎖

--pct-nav<percent> 導航,現在手機基本沒有導航了

---pct-syskeys<percent> 按鍵消息比例,主頁、後退、音量增減

--pct-anyevent 其他不常用的按鍵比例的設置,不常用

--hprof monkey測試完成後生成內存快照,data/misc路徑下生成,不常用,比較占空間

--ignore-security-exceptions 忽略權限問題的

--kill-process-after-error 當錯誤發生時殺進程

--monitor-native-crashes 監視崩潰時的本地代碼

七、殺monkey進程

如果想中斷運行中的monkey CTRL+C

adb shell ps | grep monkey 返回進程號

adb shell kill [剛才查到的進程號]

app包名查看:

a.手機安裝包名查看器‘

b.aapt命令 aapt dump badging *.apk

c、源碼下的AndroidManifest.xml文件查看

d.adb logcat抓取當前Android機運行的app的包名( I/ActivityManager(數字): Displayed 包名/類
名: +ms )

命令行輸入 adb logcat >e:\bag.txt

手機操控app,ctrl+c停止

去e:\bag.txt這個文件下搜索關鍵字如Displayed ,一般都能找到

【轉】monkey實戰--測試步驟、常用參數、常規monkey命令