一個簡單的monkey測試工具
Monkey的概念:
“猴子測試”是指沒有測試經驗的人甚至對計算機根本不瞭解的人(就像猴子一樣)不需要知道程式的任何使用者互動方面的知識,如果給他一個程式,他就會針對他看到的介面進行操作,其操作是無目的的、亂點亂按的。
這種測試方式在產品週期中的早期階段會找到很多很好的bug,為使用者節省不少的時間。
Monkey的介紹
它是Android系統自帶一個命令列工具,可以執行在模擬器裡或者真是裝置中執行。
monkey向系統傳送偽隨機的使用者事件流,實現對正在開發的應用程式進行壓力測試。
monkey包括很多選項,大致四大類:
1.基本配置選項,如設定嘗試的事件數量。
2.執行約束選項,如設定只對單獨的一個包進行測試。
3.事件型別和頻率。
4.除錯選項
monkey命令特性
不可能使用monkey來指定做一樣測試,重複做很多次。因為monkey產生的是偽隨機的事件流。但是我們可以通過新增命令選項將操作限制在一定的範圍內。
一,首先你要先搭建環境
1.先下載jdk 具體安裝流程請參考:https://blog.csdn.net/write6/article/details/79136388
2.再下載sdk 具體安裝流程請參考:
二,開啟手機的開發者除錯工具,用usb資料線連結你的手機;
三,monkey前的準備命令
1.windows+r 輸入cmd進入dos命令列;
2.輸入adb devices 下面出現類似下圖的組合你就成功了;(
3.再輸入 adb shell pm list packages 檢視你的手機所有的安裝包;輸入 adb shell pm list packages -3 檢視手機上所有的第三方安裝包,儘量讓測試機少安裝第三方軟體,這樣可以儘快的找到想要的安裝包名稱;
四,首先用一個最簡單的mokey去試著找哪個是你想要的安裝包名稱:
1./ / -p引數:表示指定測試的程式(空格後面跟安裝包名字,拿剛才的第三方安裝包一個個試)
/ /-v引數:表示檢視monkey執行過程的資訊(日誌級別)(-v 越多越詳細,最多三個)
/ /數字100:表示測試事件數為100
指定一個包 adb shell monkey -p com.tencent.news -v -v -v 100 (此時指定軟體會被開啟並開始亂點亂按)
指定多個包 adb shell monkey -p com.tencent.news -p com.pdfreader -p com.widgets -v 1000
不指定包 adb shell monkey -v 1000
結果如圖:
Event percentages(事件百分比):
0:觸控事件百分比,引數--pct-touch
1:滑動事件百分比,引數--pct-motion
2:縮放事件百分比,引數--pct-pinchzoom
3:軌跡球事件百分比,引數--pct-trackball
4:螢幕旋轉事件百分比,引數--pct-rotation
5:暫時不知道這個是什麼
6:基本導航事件百分比,引數--pct-nav
7:主要導航事件百分比,引數--pct-majornav
8:系統事件百分比,引數--pct-syskeys
9:Activity啟動事件百分比,引數--pct-appswitch
10:鍵盤翻轉事件百分比,引數--pct-flip
11:其他事件百分比,引數--pct-anyevent
2.儘管monkey產生是偽隨機事件流,但是我們希望我們的操作有一定的規律性,即按鍵、觸屏等各類事件操作有所偏重。
eg:(1).對文字框操作,需要更多的按鍵操作。
(2).玩遊戲,需要更多的點選和滑動操作。
3.--throttle 設定兩個事件之間一個固定延遲,可以減緩monkey的執行速度。如果不指定,monkey將不會被延遲,事件將盡可能快地生成和傳送訊息。單位:毫秒
eg:adb shell monkey --throttle 3000 -p com.tencent.news 100
向騰訊新聞傳送1000次隨機事件,每次事件間隔為3秒。
4.--pct-touch (空格後加數字)設定觸屏事件生成的百分比。觸屏事件是一個有手指按下,擡起事件的手勢。
eg: adb shell monkey --throttle 3000 --pct-touch 50 -p com.tencent.news 100
向騰訊新聞傳送1000次隨機事件,每次事件間隔為3秒。其中設定觸屏的事件佔比為50%。
5.--pct-motion 設定滑動事件生成的百分比。滑動事件是一個先在某一個位置手指按下,滑動一段距離後再擡起手指的手勢。
eg: adb shell monkey --throttle 3000 --pct-motion 50 -p com.tencent.news 100
向騰訊新聞傳送1000次隨機事件,每次事件間隔為3秒。其中設定滑動的事件佔比為50%。
6.--pct-trackball 設定軌跡球事件生成的百分比。軌跡球事件是包含一系列隨機移動和單擊事件的事件
eg:adb shell monkey --throttle 3000 --pct-trackball 50 -p com.tencent.news 100
向騰訊新聞傳送1000次隨機事件,每次事件間隔為3秒。其中設定軌跡球的事件佔比為50%。
7.--pct-nav 設定基本導航事件生成的百分比。基本導航事件是模擬方向性在裝置上輸入向上、向下、向左、向右的事件。
eg:adb shell monkey --throttle 3000 --pct-nav 40 -p com.tencent.news 100
向騰訊新聞傳送1000次隨機事件,每次事件間隔為3秒。其中設定基本導航事件的佔比為40%。
8.--pct-majornav 設定主要導航事件生成的百分比。主要導航事件通常會導致UI產生回饋資訊,如單擊Back鍵、Home鍵、Menu鍵等、
eg: adb shell monkey --throttle 3000 --pct-majornav 40 -p com.tencent.news 100
向騰訊新聞傳送1000次隨機事件,每次事件間隔為3秒。其中設定主要導航事件的佔比為40%。
9.--hprof
指定了該引數,Monkey會在傳送事件序列的前、後,生成效能分析報告。通常會在data/misc目錄下生成一個5MB左右大小的檔案
10.--ignore-crashes
通常情況下,monkey會在測試應用程式崩潰或者發生異常後停止執行,若指定了該引數,則monkey將會在產生異常後,繼續向系統傳送事件,直到指定事件全部執行完畢。
11.--ignore-timeouts
通常情況下,當應用程式發生任何超時錯誤(application not responding)時,monkey將停止執行。若指定了該引數,則monkey將會在產生錯誤資訊後,繼續向系統傳送事件,直到指定事件全部執行完畢
12.--ignore-security-exceptions 通常情況下,指定應用程式發生許可錯誤時(如證書許可,網路許可等),monkey將停止執行。若指定了該引數,即使應用程式發生許可錯誤,monkey會繼續向系統傳送事件,直到指定事件全部執行完畢。
eg:adb shell monkey --throttle 3000 --pct-trackball 50 -p com.tencent.news --ignore-security-exceptions 100
到這裡簡單的monkey就完了,以上內容均為高哥傳授;