目錄
一、Monkey 簡介
二、Monkey的基本用法
三、Monkey測試的一個實例
四、使用monkey help指令查看指令參數
首頁 常見問題 monkey指令有什麼用

monkey指令有什麼用

Feb 08, 2021 pm 05:23 PM

monkey是Android中的命令列工具,monkey命令向系統發送偽隨機的用戶事件流(如按鍵輸入、觸控螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試。

monkey指令有什麼用

本教學操作環境:windows7系統、Dell G3電腦。

一、Monkey 簡介

Monkey 是SDK中附帶的工具。 Monkey是Android中的命令列工具,可以運行在模擬器或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸控螢幕輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試。 Monkey測試是一種為了測試軟體的穩定性、健全性的快速有效的方法。

該工具用於進行壓力測試。然後開發人員結合monkey 列印的日誌和系統列印的日誌,分析測試中的問題

Monkey 測試的特點:

Monkey 測試,所有的事件都是隨機產生的,沒有任何人的主觀性。

1、測試的物件僅為應用程式包,有一定的限制。

2、Monky測試使用的事件資料流是隨機的,不能進行自訂。

3、可對MonkeyTest的對象,事件數量,類型,頻率等設定。

二、Monkey的基本用法

基本語法如下:

$ adb shell monkey [options]

如果沒有指定options,Monkey將以無回饋模式啟動,並將事件任意傳送到安裝在目標環境中的全部套件。下面是一個更典型的命令列範例,它啟動指定的應用程序,並向其發送500個偽隨機事件:

$ adb shell monkey -p your.package.name -v 500
使用android自動化測試工具monkeyrunner啟動應用程式時,需要填寫被測程式的套件名稱和啟動的Activity,以下有兩種查看應用程式包名package和入口activity名稱的方法:

方法一:使用aapt //aapt是sdk自帶的工具,在sdk\builds-tools\目錄下

#1.以ES檔案瀏覽器為例,命令列中切換到aapt.exe目錄執行:aapt dump badging E:\apk\es3.apk

2.

註:在android sdk目錄搜尋可以找到aapt.exe,如果沒有可以下載apktool。

 

三、Monkey測試的一個實例

透過這個實例,我們能理解Monkey測試的步驟以及如何知道哪些應用程式能夠用Monkey進行測試。

Windows下(註:2—4步驟是為了查看我們可以測試哪些應用程式包,可省略):

1、透過eclipse啟動一個Android的emulator

2、在命令列中輸入:adb devices查看設備連線情況

C:\Documents and Settings\Administrator>adb devices

List of devices attached

emulator-5554   device

#3、在有裝置連線的前提下,在命令列中輸入:adb shell進入shell介面

C:\Documents and Settings\Administrator>adb shell

#4、檢視data/data資料夾下的應用程式套件。註:我們能測試的應用程式套件都在這個目錄下面

C:\Documents and Settings\Administrator>adb shell

ls data/data

ls data/data

5、以com.android.calculator2作為物件進行MonkeyTest

#monkey -p com.android.calculator2 -v 500

其中-p表示物件包–v 表示回饋資訊等級

運行過程中,Emulator中的應用程式不斷切換畫面。

依照選定的不同層級的回饋訊息,在Monkey中也可以看到其執行過程報告和產生的事件。 

四、使用monkey help指令查看指令參數

C:\Users\chenfenping>adb shell Monkey -help
用法:monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--忽略超時]
[--忽略安全異常]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error ] [- -hprof]
[--pct-touch 百分比] [--pct-motion 百分比]
[--pct-軌跡球百分比] [--pct-syskeys 百分比]
[-- pct- nav 百分比] [--pct-majornav 百分比]
[--pct-appswitch 百分比] [--pct-flip 百分比]
[--pct-anyevent 百分比] [--pct-pinchzoom 百分比] ]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
#[ - -setup 腳本檔] [-f 腳本檔[-f 腳本檔] ...]
[--port 埠]
[-s SEED] [-v [-v] ...]
[ --throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[ --script-log]
[--bugreport]
[--periodic-bugreport]
COUNT

1 參數: -p

用於約束限制,使用此參數指定一個或多個包(Package,即App)。指定包之後,monkey將只允許系統啟動指定的APP,如果不指定包,將允許系統啟動設備中的所有APP。

* 指定一個套件: adb shell Monkey -p cn.emoney.acg 10

* 指定多個套件:adb shell Monkey -p cn.emoney.acg –p cn.emoney.wea -p cn.emoney.acg 100

* 不指定套件:adb shell Monkey 100

2 參數: -v

#用於指定回饋訊息級別(資訊級別就是日誌的程度),總共分3個詳細級別,分別對應的參數如下表所示:

日誌級別Level0

範例adb shell Monkey -p cn.emoney .acg –v 100

說明動作值,僅提供啟動完成、測試和最終結果等少量資訊

日誌等級Level 1

範例adb shell Monkey - p cn .emoney.acg –v -v 100

說明提供詳細的日誌,包括每個發送到活動的事件資訊

日誌等級Level 2

範例adb shell Monkey -p cn.emoney.acg –v -v –v 100

說明最詳細的日誌,包括測試中選取/未選取的活動資訊

3參數: - s

用於指定α隨機數產生器的種子值,如果種子相同,則兩次Monkey測試所產生的事件序列也相同的。

Monkey測試1:adb shell Monkey -p cn.emoney.acg -s 10  100

Monkey 測試2:adb shell Monkey -p cn.emoney.acg –s 10 100

兩次測試的效果是一樣的,因為的使用者操作序列(每次操作按照模擬一定的後續順序所組成的一系列操作,即一個序列)是一樣的。

4 參數: --throttle

用於指定使用者操作(即事件)間的時延,單位為毫秒;

adb shell Monkey -p cn.emoney . acg——油門 5000 100

5 參數: --ignore-crashes

#用於指定當應用程式崩潰時(強制&關閉錯誤),Monkey是否停止運行。如果使用此參數,即使應用程式崩潰,Monkey依然會發送事件,直到事件計數完成。

adb shellmonkey -p cn.emoney.acg --ignore-crashes 1000

測試過程中即使程式崩潰,Monkey仍然會繼續傳播事件直到事件數量達到1000狀態

adb shellmonkey -p cn.emoney.acg 1000

測試過程中,如果acg程式崩潰,Monkey將停止執行

6參數: --ignore-timeouts

用於指定當應用程式發生ANR(Application) No Responding)錯誤時,Monkey是否停止。如果使用此參數,即使運行應用程式發生ANR錯誤,Monkey仍會發送事件,直到事件計數完成。

adb shellmonkey -p cn.emoney.acg --ignore-timeouts 1000

7 參數: --ignore-security-exceptions

用於指定當應用程式發生許可錯誤時(如憑證許可,網路許可等),Monkey是否停止運行。如果使用此參數,即使應用程式發生許可錯誤,Monkey 仍會發送事件,直到事件計數完成。

adb shellmonkey -p cn.emoney.acg --ignore-security-exception 1000

8 參數: --kill-process-after-error

用於指定當應用程式發生錯誤時,是否停止其執行。如果指定此參數,當應用程式發生錯誤時,應用程式停止運行並保持在當前狀態

(注意:應用程式僅是靜止在發生錯誤時的狀態,系統並不會結束該應用程式的進程)。

adb shellmonkey -p cn.emoney.acg --kill-process-after-error 1000

9 參數: --monitor-native-crashes

用於指定是否監視並報告應用程式發生崩潰的本機程式碼。

adb shellmonkey -p cn.emoney.acg --monitor-native-crashes 1000

10 參數: --pct-{ 事件類別}{ 事件類別百分比}

用於指定每種類別事件的數目百分比(在Monkey事件序列中,此類別事件數目佔總事件數目的百分比)
範例:
--pct-touch{ 百分比}
調整觸控事件的百分比(觸控事件是一個down-up事件,它發生在螢幕上的某單一位置)

adb shell monkey -p cn.emoney.acg --pct-touch 10 100

--pct-motion { 百分比}
調整動作事件的百分比(動作事件由螢幕上某處的一個down事件、一系列的偽隨件機事和一個up事件組成)

adb shell monkey -p cn.emoney.acg --pct-motion 20 1000

--pct-trackball { 百分比}
調整軌跡事件的百分比(軌跡事件由一個或幾個隨機的移動組成,有時還伴隨有點擊)

adb shell monkey -p cn.emoney.acg --pct-trackball 30 1000

--pct-nav# { 百分比}

調整「基本」導航事件的百分比(導航事件由來自方向輸入設備的up/down/left/right組成)

adb shell monkey -p cn.emoney.acg --pct-nav 40 1000

--pct-majornav { 百分比}
調整「主要」導航事件的百分比(這些導航事件通常引發圖形介面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、選單按鍵)

adb shell monkey -p cn.emoney.acg --pct-majornav 50 1000

七、輸出monkeylog

跑monkey的時候或想抓程式log導出時,有時會提示:cannot create D:monkeytest.txt: read-only file system

為什麼有時候可以有時候不行?

後來發現跟使用使用習慣不一樣,一會是先進入adb shell 再用指令,一會是直接指令進入。

進入adb shell後再用指令就會失敗~

正確方法:退出shell或執行指令時先不要進shell

C:\Documents and Settings\Administrator>adb shell monkey -p 包名

 -v 300  >e:\text.txt

##進入adb shell後相當於進入linux的root下面,沒有權限在裡面建立檔案~

五、Monkey測試結果分析

#一.初步分析方法

Monkey測試出現錯誤後,一般的查錯步驟為以下幾個步驟:


1、找到是monkey裡面的哪個地方出錯

2、查看Monkey裡面出錯前的一些事件動作,並手動執行該動作

3、若以上步驟還不能找出,可以使用之前執行的monkey指令再執行一遍,注意seed值要一樣--復現

一般的測試結果分析:

1、 ANR問題:在日誌中搜尋「ANR」

2、崩潰問題:在日誌中搜尋「Exception」  Force Close


想要查閱更多相關文章,請造訪

PHP中文網! !

以上是monkey指令有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)