您好,登錄后才能下訂單哦!
Monkey,也就是猴子,hin皮,所以Monkey測試,顧名思義也就像猴子一樣在軟件上亂敲按鍵來測試。猴子什么都不懂,只知道亂按。Monkey原理也是類似,通過向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對應用程序的測試。
我相信,大多數測試員都知道Monkey測試,甚至都用過,但是你可能不敢說自己對Monkey測試有多熟悉。看著好像很簡單,但是我們如何快速的去熟悉Monkey測試呢?
一、Monkey測試的基本方法
今天,想簡單地分享點Android的Monkey測試。親測了一波,Monkey測試作為輔助測試,還是可以用用的,簡單不費力。
Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。只要安裝了adb,就可以進行Monkey測試了。
在做Monkey測試前,需要先安裝adb(adb的環境配置,網上有很多教程,此處不做詳細描述)。然后手機連接上電腦,打開菜單,輸入“cmd”打開,輸入命令行“adb devices”來確定設備是否連接成功。若連接成功,會顯示設備序列號,參考下圖。
還有,測試人員需要知道測試app的包名。可以通過使用“uiautomatorviewer.bat”工具(后期文章中描述)來獲取包名,也可以直接詢問提供app的開發人員,或者直接使用adb命令獲取包名。
簡單地介紹一種:通過adb命令獲取包名。首先要先打開手機中需要獲取包名的app。然后分別輸入命令即可。如下圖,該app的包名是“com.screeclibinvoke”。
1、adb shell
2、dumpsys activity | grepmFocusedActivity
然后輸入一句簡單的Monkey命令,即可開始測試。
adb shell monkey -p com.screeclibinvoke 1000 (指定包名是“com.screeclibinvoke”的應用,隨機執行1000個模擬事件)。
二、Monkey的常用命令
下面列出了Monkey可以使用的參數。
基本參數
--help打印幫助文檔
-v命令行中的每一個-v將增加反饋信息的級別。Level 0(也是默認值)除啟動提示、測試完成和最終結果之外,其他的信息很少。Level 1提供較為詳細的測試信息,如逐個發送到Activity的事件。Level 2提供更加詳細的設置信息,如測試中被選中的或未被選中的Activity,例子adb shell -v -v 500
-s偽隨機生成器的種子。如果seed值一樣,那么產生的monkey事件,序列也是一樣的
--throttle <毫秒>在事件之間加入固定時間延遲,單位毫秒。如果不加,monkey會盡可能快地產生事件
--pct-touch調整觸摸事件的百分比(觸摸就是一個點擊事件)
--pct-motion調整動作事件的百分比,(動作事件指一個down事件,一系列隨機事件,然后一個up事件)
--pct-trackball調整軌跡事件的百分比,(軌跡事件由一個或多個移動組成,有時伴隨點擊事件)
--pct-nav調整基本導航事件的百分比,(導航事件就是方向鍵,上下左右)
--pct-majornav調整主要導航事件的百分比(這些導航事件通常引發圖形界面中的動作,如5-way鍵盤的中間按鍵,回退按鍵,菜單按鍵)
--pct-syskeys調整系統按鍵事件的百分比(這些事件由系統保留,如Home、Back、Start、Call、End Call及音量控制鍵)
--pct-appswitch調整啟動activity的百分比。在隨機間隔里,Monkey將執行一個startActivity()調用,作為最大程度覆蓋保重全部Activity的一種方法。
--pct-anyevent調整其他類型事件的百分比。包含了所有其他類型的事件,如按鍵、其他不常使用的設備按鍵、等。
操作約束
-p如果使用該參數指定了一個或幾個包,monkey將只允許啟動這些包中的activity。如果你的程序,需要訪問別的activity(如聯系人界面),那必須將聯系人的包也指定一下,否則無法訪問。如果沒有指定包名,monkey將允許啟動安裝在手機上的所有包。如果要指定多個包,需要多個-p選項,每個-p指定一個包。
-c如果使用此參數指定了一個或多個類別,Monkey將只允許系統啟動被這些類別中的某個類別列出的Activity,如果不指定任何類別,Monkey將選擇下列類別中列出的Activity:
Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多個類別,需要多個-c選項。
調試選項
--dbg-no-event設置此選項,Monkey將執行初始啟動,進入到一個測試Activity,然后不再產生事件。為了得到最佳結果,把它與-v,一個或幾個包約束,以及一個保持Monkey運行30秒或更長事件的非零值聯合起來,從而提供一個環境,可以監視應用程序所調用的包之間的轉換。
--hprof設置此選項,將在Monkey事件序列之前和之后立即生成profiling報告。這將會在data/misc中生成大文件(5M),所以小心使用。
--ignore-crashes通常,當被測app崩潰或者發生任何失控異常時,Monkey將停止運行。如果設置此選項,Monkey會繼續向系統發送事件,直到計數完畢。
--ignore-timeouts通常,當被測程序出現未響應時,Monkey會停止運行。如果設置此選項,Monkey會繼續運行,直到結束。
--ignore-security-excuptions通常,當被測程序發生可允許錯誤(如啟動一個需要授權的Activity)時,Monkey將停止運行。如果設置此選項,Monkey將繼續運行,直到結束。
--kill-process-after-error通常,當Monkey由于一個錯誤而停止運行時,出錯的應用程序將繼續運行。如果設置此選項,將會通知系統停止發送錯誤的進程。注意:程序正常結束,該程序并沒有被停止。設備只是在結束事件后,簡單保持在最后的狀態。
--monitor-native-chrashes監視并報告Android系統中本地代碼的崩潰事件。如果設置了–kill-process-after-error,系統將停止運行。
--wait-dbg停止執行中的Monkey,直到有調試器和它相連。
三、Monkey的實例
我使用如下命令做一波Monkey測試,最終在電腦D盤生成a.log日志文件。
adb shell monkey -p com.screeclibinvoke --throttle300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions--ignore-native-crashes --monitor-native-crashes -v -v -v 10000>D:\a.log
在Monkey測試過程中可能會出現程序崩潰(CRASH)和程序無響應的情況(ANR)。CRASH即崩潰信息,程序在運行中非正常退出。設置忽略crashes等情況,當運行如上命令之后,在生成的日志中搜索關鍵字“CRASH”或“NAR”,可直接根據log日志定位bug并修復,也可根據seed值來完成bug的復現。
歡迎加入 51軟件測試大家庭,在這里你將獲得【最新行業資訊】,【免費測試工具安裝包】,【軟件測試技術干貨】,【面試求職技巧】... 51與你共同學習,一起成長!期待你的加入: QQ 群: 755431660
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。