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

簡要步驟: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

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

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

–pct-motion

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

–pct-trackball

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

–pct-nav 導航,現在手機基本沒有導航了

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

–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 ,一般都能找到

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章