1.monkey應用場景
> monkey測試是Android平台自動化測試的一種手段,通過monkey程序模擬用戶觸摸屏幕、按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常
======================================
異常:
崩潰:XX應用停止運行
無響應:
閃退:程序運行時,毫無征兆返回到了桌面
======================================
>monkey 是命令行工具
>弱點:monkey雖然可以根據一個指定的命令腳本發送按鍵消息,但不支持條件判斷,也不支持讀取待測界面的值來執行驗證操作(即不支持斷言、執行的時候傻瓜式依次逐行執行)
>monkey用來做什么?
可以用來做壓力測試也可以做自動化測試
>monkey什么時候用?
產品穩定的時候,沒有特別多的bug,一般會用monkey去測應用的穩定性、健壯性
>monkey怎么用?
Monkey 是Android SDK提供的一個命令行工具, 可以簡單,方便地運行在任何版本的Android模擬器和實體設備上。
每台android手機里都有Monkey工具,但是我們是看不到的,因為,Monkey不是一個可視化的工具
借助ADB才能與Monkey進行通訊
2.monkey命令格式
>開啟安卓模擬器/真機
>進入命令行界面
>查看設備連接情況 adb devices
>在命令行界面輸入monkey命令
如果monkey需要指定設備,基本語法如下:
adb -s [device] shell monkey [options]
常用:
adb shell monkey -p 包名 -v -v -v -s 200 1000
3.monkey常見參數
3.1 -p
>用於約束限制,用此參數指定一個或多個包名。指定包名之后,monkey將只允許系統啟動指定的app。如果不指定包,monkey將允許系統啟動設備中所有的app。
>命令:
adb shell monkey -p 包名 1000
其中,1000是事件計數(即讓monkey模擬1000次隨機用戶事件)
包名:
方式一:adb shell dumpsys activity| find "mFocusedActivity"
方式二:adb shell dumpsys window | findstr mCurrentFocus 獲取當前應用的包名
3.2 -s
>用於指定偽隨機數生成器的seed值,如果seed值相同,則兩次monkey測試所產生的事件序列也是相同的
>命令:
monkey測試1:adb shell monkey -p 包名 -s 101 1000
monkey測試2:adb shell monkey -p 包名 -s 101 1000
>說明:
兩次測試的效果是相同的,因為模擬的用戶操作序列是一樣的。操作序列雖然是隨機生成的,但是只要指定了相同的seed值,就可以保證兩次測試產生的隨機操作序列是完全相同的,所以說這個操作序列是偽隨機的。
(操作序列:每次操作按照一定的先后順序所組成的一系列操作,即一個序列),比如:
同時,該圖代表3次事件次數
>目的:
通過seed值可以復現bug
3.3 -v
>用於指定反饋信息級別(就是日志的詳細程度),總共分為三個級別
-v 日志級別 level 0
說明:缺省值,僅提供啟動提示、測試完成和最終結果等少量信息
-v -v 日志級別 level 1
說明:提供較為詳細的日志,包括每個發送到Activity的事件信息
-v -v -v 日志級別 level 2
說明:最詳細的日志,包括了測試中選中/未選中的Activity信息
>命令:
adb shell monkey - p 包名 -s 180 -v -v -v 1000
1000是事件計數(即讓monkey模擬1000次隨機用戶事件)
3.4 --throttle <毫秒>
>用於指定用戶操作(即事件)的時延,單位是毫秒
>命令:
adb shell monkey -p 包名 --throttle 3000 100
>說明:執行一百次monkey隨機事件,每次事件之間的延遲是3s
3.5 --randomize-throttle
在事件之間插入隨機延遲,隨機延遲范圍為0到throttle設置的時間,單位為毫秒
>命令:
adb shell monkey -p 包名 --throttle 5000 --randomize-throttle 100
>說明:執行一百次monkey隨機事件,每次事件的間隔在0-5000毫秒之間不固定
3.6 --pkg-whitelist-file 白名單,后面接txt文件
1)第一步把你設置的白名單的包名寫到一個txt文檔里面,記得路徑和文檔名字都是英文!如,D:\whitelist.txt
2)把這個文件推送到我們的安卓機中去,放到/data/local/tmp下面
>命令:
adb push D:\whitelist.txt /data/local/tmp
adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 100
3)可以在上面adb 命令后重定向輸出查看monkey運行日志,可以用來輔助logcat日志定位問題
3.7 --pkg-blacklist-file 黑名單,后面接txt文件
>操作步驟參考白名單,效果與之相反
>命令:
adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt 100
3.8 百分比事件
>使用:
adb shell monkey -p 包名 -s 210 -v -v -v --pct-touch 100 400 //百分百為點擊事件
adb shell monkey -p 包名 -s 210 -v -v -v --pct-touch 50 --pct-rotation 50 400 //一半點擊一半旋轉
>使monkey進程停止:
進入adb shell
ps 查看進程,
找到monkey進程:
殺掉進程:
kill 進程號