Monkey工具 安卓自動化測試

2021-07-11 04:55:52 字數 3815 閱讀 9236

有時候我們需要對乙個軟體進行壓力測試,檢查該軟體的效能。如果是人工進行測試的話,效率會低很多,而且會比較枯燥。這時,android

中的乙個命令列工具

monkey

就可以為我們減輕很多重複而又繁瑣的工作。

一、monkey

簡介至於monkey

的名字是有何而來的呢?這個沒有去怎麼考究,

monkey

這個工具就是乙個調皮的猴子,在

中亂按、亂摸、亂滾、亂跳。

monkey

測試是android

平台下自動化測試的一種快速有效的手段,通過

monkey

工具可以模擬使用者觸控螢幕、滑動軌跡球、按鍵等操作來對模擬器或者手機裝置上的軟體進行壓力測試,檢測該軟體的穩定性、健壯性。它的原理是向系統傳送偽隨機的使用者事件流(如按鍵輸入、觸控輸入、手勢輸入等),實現對正在開發的應用程式進行壓力測試。

二、monkey

的特性(1

)測試的物件僅為應用程式包(

apk包),有一定的侷限性;(2)

monkey

測試使用的事件流資料流是隨機的,不能進行自定義;

(3)可對

monkeytest

的物件、事件數量、型別、頻率等進行設定。

雖然monkey工具並不完善,但是足於應付應用程式的基本測試需要了。如果需要功能更強大的測試工具的話,可以使用

monkey

的進化版

monkeyrunner

。如果把monkey

看作是幼兒園的小孩,那麼它的進化版

monkeyrunner

就可以看作是乙個初中生了。它支援自定義外掛程式,

控制事件

,隨時截圖

,簡而言之

,任何你在模擬器

/裝置中能幹的事情

,monkeyrunner

都能幹,

而且還可以記錄和回放。在這裡,就不詳細介紹monkeyrunner了,具體可以參考其官方文件或者其他相關資料。

注:monkeyrunner

官方文件的**

三、monkey

的基本用法

基本語法如下:

$ adb shell monkey [options]

如果不指定options

,monkey

將以無反饋模式啟動,並把事件任意傳送到安裝在目標環境中的全部包。下面是乙個更為典型的命令列示例,它啟動指定的應用程式,並向其傳送

1000個偽隨機事件:

$ adb shell monkey -p your.package.name -v number

$ monkey -p(

package

的意思)  指定檔名 

-v(測試的次數和頻率) 

number

(次數)

四、monkey測試示例**

通過簡單的測試示例,初步了解並掌握monkey

測試的步驟。注意,這裡主要是使用

adb(1)首先,先準備了乙個測試用的應用程式(apk

檔案)。為了測試,這裡選擇了乙個格瓦拉手機購票

檔案。(2)將apk

檔案複製到

android sdk

對應platform-tools

的目錄下。例如,筆者的

sdk路徑為 

d:\android\android-sdk-windows\platform-tools

。如圖所示

(3)進行apk

檔案的安裝(安裝的前提是,已經啟動並可以檢測模擬器):有安裝

91助手或者豌豆的使用者可以直接雙擊

apk檔案進行安裝;也可以使用

android

下的adb

命令進行安裝(如下圖所示,

success

表示安裝成功)。

adb命令下安裝

apk檔案的命令為:

adb install 

檔名.apk

(4)安裝好後,會在模擬器上看到應用程式的啟**標

(5)安裝好

apk檔案後,需要知道應用程式主

activity

(第乙個啟動的

activity

)所在的包名。這時,我們可以使用

adb shell

命令查詢到程式主

activity

所在的包名,如下圖所示。(知道了

apk的包名,我們也可以利用

adb命令進行應用程式的解除安裝;解除安裝

apk檔案的命令為:

adb uninstall 

包名)

(6)這裡是最關鍵的一步,使用moneky

命令進行自動化壓力測試。

命令為:#monkey -p com.gewara -v 1000(引數說明:-p後跟著軟體所在包名,

-v後跟測試的次數)。這裡對該軟體進行

1000

次的自動化測試,幾分鐘內即可以完成測試。如圖所示

(7)測試完畢,發現程式出錯了。程式出錯,表明該軟體的穩定性和健壯性還有待提高。

這時,可以開啟lotcat檢視出錯資訊。如圖所示

五、monkey測試的停止條件

(1)如果先頂了monkey

執行在乙個或幾個特定的包上,那麼它會檢測試圖轉到它包的操作,並對其進行阻止;

(2)如果應用程式崩潰或接收到任何失控異常,monkey

將停止並報錯;

)的錯誤,

monkey

將會停止並報錯。

通過多次並且不同設定下的monkey

測試才算它是乙個穩定性和健壯性足夠的程式。

六、monkey

命令引數說明

的崩潰(

的崩潰會導致

monkey

測試的停止),而不是停住,

monkey

同樣能做到。

--ignore crashes

甚至,它還能生成profiling

報告。 

--hprof

注:monkey

具體引數的設定可參考:

通過引數的設定,可以完成更多的除錯功能,monkey

命令列引數中文相關說明見下表。

monkey相關:

安卓自動化測試 monkey 一

monkey是安卓中的乙個命令列工具,可以執行在模擬器或者是實際的裝置中,它向系統傳送為偽隨機的使用者事件流 如按鍵輸入 觸控螢幕輸入 手勢輸入等 實現對正在開發的應用程式進行壓力測試。monkey測試是一種為了測試軟體的穩定性 健壯性快速有效的方法 測試的物件僅為應用程式包,有一定的侷限性 mon...

自動化測試工具monkey

monkey是android中的乙個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流 如按鍵輸入 觸控螢幕輸入 手勢輸入等 實現對正在開發的應用程式進行壓力測試。monkey測試是一種為了測試軟體的穩定性 健壯性的快速有效的方法。a 測試的物件僅為應用程式包,有一定的侷限...

Android自動化測試工具 Monkey

前言 最近開始研究android自動化測試方法,整理了一些工具 方法和框架,其中包括android測試框架,cts monkey monkeyrunner benchmark,以及其它test tool等等。一 什麼是monkey monkey是android中的乙個命令列工具,可以執行在模擬器裡或...