android自動化測試之Monkey--從參數講解、腳本制作到實戰技巧


視頻:

http://v.youku.com/v_show/id_XODcyMjM1MDA4.html?from=y1.2-1-87.4.4-1.1-1-2-3

 

PPT:

http://www.docin.com/p-1023809505.html

 

1.安裝jdk,sdk,TT

2.對app進行壓力測試(性能測試),模擬器和真機都可以,發送偽隨機事件流(一段時間內不重復)(隨機事件流:拋硬幣)

3.monkey是android系統自帶的,位置/system/bin/monkey/monkey.jar

4.adb shell monkey +選項

  adb shell進入shell端, 然后monkey+選項

  在android真機安裝android終端模擬器terminal

5.monkey架構:

不支持條件判斷,不支持驗證

6.基本參數:

  -v: 日志詳細程度

    adb shell -p xxx -v(啟動,完成,結果信息)

    adb shell -p xxx -v -v(待測活動事件)

    adb shell -p xxx -v -v -v

  -s:隨機數種子size

    -s一樣的話,兩次monkey測試產生的序列是一樣的

    adb shell -p xxx -s 10

  --throttle:兩次事件的時間間隔,單位是毫秒

    adb shell -p xxx --throttle 3000 100(隨機事件的個數)

7.發送事件的類型

  --pct-touch <percent>: 指定觸摸事件百分比,一個點上先后有按下和抬起的操作。

  --pct-motion <percent>: 指定滑動事件百分比,先按下,滑動一段距離,然后抬起。

  --pct-trackball <percent>: 軌跡球事件百分比,一系列的隨機移動和單擊操作。

  --pct-nav <percent>: 基本導航事件百分比(硬件),設置基本的導航事件(上/下/左/右導航鍵)的生成比例。

  --pct-majornav <percent>:主要導航事件百分比,會導致UI產生回饋的事件,如單擊5個方向鍵中的中間按鈕,單擊后退鍵或者菜單鍵。

  --pct-syskeys <percent>: 系統按鍵事件百分比(Home 、Back 、startCall 、 endCall 、 volumeControl)。

  --pct-anyevent <percent>: 任意事件百分比,普通的按鍵消息,設備上一些不常用的按鈕事件。

8.約束條件

  -p: 包名列表

    adb shell -p xxx -p xxx

  -c: 意圖的種類:Monkey只會啟動可以處理這些種類的意圖的活動,如果沒有此選項,monkey只會啟動Intent.CATEGORY_LAUNCHER和Intent.CATEGORY_MONKEY的活動。

9.調試選項

  --dbg-no-events: 指定了此選項,monkey會啟動待測應用,但不發送任何消息,建議與-v,-p,-throttle一起使用。

  --hprof: 指定此選項,monkey會在發送事件前后生成性能報告(即內存的快照文件),一般在設備的/data/misc目錄下生成一個5M左右的文件。

  --ignore-crashes: 指定了此選項,待測應用崩潰或發生異常時,繼續發送系統消息,直到指定個數的消息全部發送完畢,否則停止運行。

  --ignore-timeouts:  指定了此選項,待測應用停止響應(如彈出“應用無響應”對話框)時,繼續發送系統消息,直到指定個數的消息全部發送完畢,否則停止運行。

  --ignore-security-exceptions:指定了此選項,待測應用碰到權限方面的錯誤時,繼續發送系統消息,直到指定個數的消息全部發送完畢,否則停止運行。

  --kill-process-after-error: 一般情況下,當monkey因為某個錯誤指定運行時,出問題的應用會留在系統上繼續執行,這個選項通知系統當錯誤發生時殺掉進程。

    注意:當monkey正常執行完畢后,它不會關閉所啟動的應用,設備依然停留在最后接受到消息的狀態。

  -monitor-native-crashes: 監視由Android C/C++代碼部分(cpu計算部分)引起的崩潰,此時如果設置了“--kill-process-after-error”,整個系統會關機。

  --wait-dbg: 啟動monkey后,先中斷其運行,等待調試器附加上來。

10.

  adb shell -p xxx --throttle 100 --pct-touch 50 --pct-motion 50 -v -v -v 1000 >c:\monkey.txt

11:運行

  結合TT,釋放端口,檢查手機連接,端口映射,

  啟動monkeyrunner的腳本錄制功能,可以查看手機屏幕。如果對monkeyrunner不熟悉,請參考:http://www.cnblogs.com/zh-ya-jing/p/4385418.html

  啟動monkey命令

12:檢測-s一致時,monkey產生的序列也是一樣的

 

13.分析log一般有以下幾個步驟

  看日志(注意第一個switch以及異常信息等)

    程序無響應:ANR

    C崩潰:Exception

  查看monkey里出錯前的幾個動作,並手動執行,結合TT示波器,找到崩潰點

  日志+TT,找到崩潰時的執行函數

  順利執行完畢,會有monkey finished字樣;如果中間崩潰,會有執行次數說明

第一個switch主要是monkey執行的是哪一個activity,在兩個active之間划分即可。

14.monkey內存問題分析

如何確定內存泄露?

  彈出out of memory對話框

  logcat文件GC(java的垃圾回收機制)信息

  --hprof參數與報告

    adb shell -p xxx --hrof -v -v -v 100

  monkey會在發送事件的前后生成內存快照,並保存在/data/misc/下的hprof文件中(需要root權限才可以)也可以收集安裝能進入系統文件夾的app去查看文件

  hprof文件跟平時的jvm文件是不一樣的,需要用android自帶的hprof-conv(在android-sdk/tools/)命令去轉化

  成對出現的,事件前后兩個成對

  hprof-conv *.hrof *.conv
 轉化成的conv文件,用eclipse中的MAT打開

shadle heap小

retail size: 如果釋放相應參數,GC就可回收這部分內存  

 

15.monkey腳本的編寫

編寫好后放在SD卡

adb shell monkey -f/sdcard/*.txt 運行次數

adb shell monkey --hprof -f/sdcard/*.txt -v -v -v 3 >c:\monkey

16.具體的monkey腳本命令

start data >>

控制monkey的一些參數設置和具體的monkey命令分隔開

  count=10

  speed=10

  start data>>

  #monkey 命令

  LaunchActivity(pkg_name, cls_name)app的包名,要打開的類名

  DispatchPointer(downTime,eventTime,active,x,y,0,0,0,0,0,0,0)

  #downTime:發送消息的時間

  #eventTime:用於指定發送兩個事件之間的停頓

  #active:動作是按下還是太起,0表示按下,1表示抬起

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM