monkey測試android穩定性

monkey測試簡介:

Monkey測試是一種爲了測試軟件的穩定性、健壯性的快速有效的方法

monkeyrunner工具的主要設計目的是用於測試功能/框架水平上的應用程序和設備,或用於運行單元測試套件, 提供了一個API,使用此API寫出的程序可以在Android代碼之外控制Android設備和模擬器。


monkey和monkeyrunner的不同點:

MonkeyMonkey工具直接運行在設備或模擬器的adb shell中,生成用戶或系統的僞隨機事件流。
monkeyrunner:monkeyrunner工具則是在工作站上通過API定義的特定命令和事件控制設備或模擬器。


詳細介紹及環境搭建步驟:http://bbs.pediy.com/showthread.php?t=189584


查找需要測試的包名:

>adbshell pm list packages     命令查看手機上的所有包名,找到自己需要測試的包名


Monkey的特徵

  • 測試的對象僅爲應用程序包,有一定的侷限性。

  • Monky測試使用的事件流數據流是隨機的,不能進行自定義。

  • 可對MonkeyTest的對象,事件數量,類型,頻率等進行設置。

Monkey基本命令參數的介紹

  • 基本命令格式 $ adb shell monkey [options]

  • 如果不指定options,Monkey將以無反饋模式啓動,並把事件任意發送到安裝在目標環境中的全部包。 $ adb shell monkey -p com.luxji.watchesapp -v 500

  • -p 指定測試包名,可以指定多個

  • -v 指定輸出信息級別,分爲三種 

    • -v 僅提供啓動提示、測試完成和最終結果等少量信息, 適合於一般的調試

    • -v -v 提供較爲詳細的日誌,包括每個發送到Activity的事件信息

    • -v -v -v,最詳細的日誌,包括了測試中選中/未選中的Activity信息

  • -s 指定seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的

  • -c 指定一個或多個類別的activity被啓動

  • -ignore-crashes和-ignore-timeouts,在應用崩潰和無響應的情況下,monkey不會停止。

  • -throttle MILLISEC 表示每一個隨機事件中間的時間間隔

  • -ignore-security-exceptions:通常,當應用程序發生許可錯誤(如啓動一個需要某些許可的Activity)時,Monkey將停止運行。如果設置了此選項,Monkey將繼續向系統發送事件,直到計數完成。

  • -monitor-native-crashes:監視並報告Android系統中本地代碼的崩潰事件。如果設置了–kill-process-after-error,系統將停止運行。

  • -kill-process-after-error:如果程序出現錯誤,monkey將結束此程序進程。

  • -hprof:設置此項,將在monkey事件序列之前和之後立即生成profilling報告。這將會在data/misc中生成大文件(約5mb)所以要小心使用它。

  • -pct-touch:調整觸摸事件的百分比(觸摸事件是一個down-up事件,它發生在屏幕的某單一位置)。

  • -pct-motion:動作事件的百分比(動作事件由屏幕上某處的一個down事件、一系列的隨機事件和一個up事件組成)。

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

  • -pct-syskeys:調整系統按鍵事件的百分比(這些按鍵通常被保留,由系統使用,如home,back,start call,end call及音量控制)。

  • -pct-nav 調整基本導航事件的百分比(導航事件來自方向輸入設備的up/down/left/right組成)。

  • -pct-majornav:調整“主要”導航事件的百分比(這些導航事件通常引發圖形界面中的動作,如:5-way鍵盤的中間按鍵、回退按鍵、菜單按鍵)

  • -pct-appswitch:調整啓動Activity的百分比。在隨機間隔裏,Monkey將執行一個startActivity()調用,作爲最大程度覆蓋包中全部Activity的一種方法

  • -pct-anyevent:調整啓動Activity的百分比。它包羅了所有其它的事件類型,如:按鍵,其它不常用的設備按鈕。

  • -pct-flip:

  • –wait-dbg:停止執行中的Monkey,直到有調試器和它相連接。

  • –dbg-no-events:設置此選項,Monkey將執行初始啓動,進入到一個測試Activity,然後不會再進一步生成事件。爲了得到最佳結果,把它與-v、一個或幾個包約束、以及一個保持Monkey運行30秒或更長時間的非零值聯合起來,從而提供一個環境,可以監視應用程序所調用的包之間的轉換。

  • -port:爲monkey開啓專用端口。此時只monkey不會幫你亂點擊,而此時你自己就是一隻monkey了,在你亂點的時候,monkey會輸出你點擊後回饋的信息。如果你打完命令之後模擬器上沒有啓動你所要啓動的包,你需要自己啓動,但是你只能啓動你-p中指定的那幾個包。ctrl+c中斷。


Monkey使用方法


在windows環境下,使用dos命令行。在桌面按下Ctrl+R,然後輸入cmd,彈出命令行界面。


Monkey停止的三種情況,1.應用報錯 2.應用出現anr異常,無響應 3 指定包名後,應用中有跳往其他原因的意圖時,也會報錯停止


Monkey的測試策略及示例:

一、先上一個簡單的測試用例

設計用例的思路就是設置不同的事件比,不同的時間間隔,執行的事件數一般起碼要上萬吧,不然怎麼能稱作穩定性測試,中間在加入不同的測試包名,模擬多個應用切換的場景。


wKiom1idJPmhb28aAAAUUagecv8817.png-wh_50


異常:  1、插入其他應用:搜狗輸入法、電話、短信  、QQ等

            2、 忽略崩潰、超時、安全異常、跟蹤本地方法的崩潰問題 


示例:

-p 後面可以添加多個測試包名,以便模擬應用間的切換

C:\Users\Administrator>adbshell monkey -p com.chemi -p com.sougou --pct-touch 25 --pct-motion 15 --pct-pinchzoom 5--pct-rotation 10 --pct-majornav 25 --pct-flip 10 --pct-syskeys 10 --throttle300 --ignore-crashes --monitor-native-crashes -v -v -v 10000 >log040502.txt


結束monkey進程:

直接撥數據線是沒有用的,必須把這個進程殺掉monkey纔會停止

C:\Documents and Settings\hui.qian>adb shell
1|shell@scx15_sp7715ea:/ $ ps|grep monkey
ps|grep monkey
shell     7772  185   277516 22244 ffffffff4010a58c S com.android.commands.monkey
shell@scx15_sp7715ea:/ $ kill 7772


日誌分析:

正常情況,  如果Monkey測試順利執行完成, 在log的最後, 會打印出當前執行事件的次數和所花費的時間; // Monkey finished 代表執行完成\

異常情況

Monkey 測試出現錯誤後,一般的分析步驟
看Monkey的日誌 (注意第一個swith以及異常信息等)
1. 程序無響應的問題: 在日誌中搜索 “ANR
2. 崩潰問題:在日誌中搜索 “Exception”   (如果出現空指針, NullPointerException)  肯定是有bug

Monkey 執行中斷, 在log最後也能看到當前執行次數


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