android monkey压力测试(二)
一、什么是Monkey
顧名思義,Monkey就是猴子,? Monkey測試,就像一只猴子,?在電腦面前,亂敲鍵盤在測試。? 猴子什么都不懂, 只知道亂敲
通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、 按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常
二、Monkey用來做什么
Monkey 主要用于Android 的壓力測試? 自動的一個壓力測試小工具,?主要目的就是為了測試app?是否會Crash.
三、Monkey簡介
- monkey官方文檔(需要FQ)
- monkey源碼
- monkey是一個命令行工具,可以運行在Android模擬器或真實設備中。它可以向系統發送偽隨機(pseudo-random)的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),可以對待測的目標應用或整個Android系統進行壓力測試。因為monkey測試是一種為了測試軟件的穩定性、健壯性的快速有效方法
- 基本語法
如果不指定options,即類似于使用adb shell monkey 1000,那么將會對整個系統中安裝的package發送事件流,換種說法就是對整個Android系統進行monkey壓力測試
這是一個對指定應用(Android自帶的系統設置應用)進行monkey測試的栗子,發送的事件流數量為1000:
?四、Monkey程序介紹
- Monkey程序由Android系統自帶,使用Java詫言寫成,在Android文件系統中的存放路徑是: /system/framework/monkey.jar;? ?
- Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執行,shell腳本在Android文件系統中 的存放路徑是:/system/bin/monkey; ?
- Monkey 命令啟動方式:
- 可以通過PC機CMD窗口中執行: adb shell monkey {+命令參數}來進行Monkey測試
- 在PC上adb shell 進入Android系統,通過執行 monkey {+命令參數} 來進行Monkey 測試
- 在Android機或者模擬器上直接執行monkey 命令,可以在Android機上安裝Android終端模擬器?
五、Monkey架構
Monkey 運行在設備或模擬器上面,可以脫離PC運行(普遍做法是將monkey作為一個像待測應用發送 隨機按鍵消息的測試工具。驗證待測應用在這些隨機性的輸入面前是否會閃退或者崩潰)
六、Monkey到弱點
Monkey雖然可以根據一個指定的命令腳本發送按鍵消息,但其丌支持條件判斷,也丌支持讀取待測界 面的信息來執行驗證操作。
七、參數大全
?
八、monkey命令選項
- 獲取選項列表,Android9版本中輸入adb shell monkey,會顯示選項列表如下:
常用選項及參數說明
- -p?允許的包名列表,可同時指定多個包名,每個包都需要使用“-p”參數指定。包名的獲取,可參考 python 腳本get_package_name.py
- —ignore-crashes?忽視應用 crash 報錯,不指定該參數時,應用出現 crash,monkey 會自動停止發送事件,指定該參數后,mongkey 會在 crash 后也一直發送事件,知道所有事件發送完成
- —ignore-timeouts?忽視超時導致的錯誤,即ANR的錯誤
- —ignore-security-exceptions?忽視權限方面的錯誤
- —monitor-native-crashes?監控由 C/C++ 代碼引起的 crash
- —ignore-native-crashes?忽視由 C/C++ 代碼引起的 crash
- —kill-process-after-error?當出現錯誤后殺掉應用的進程
- —hprof?指定該選項后,monkey會在發送事件完成后生成性能報告,報告一般存放于/data/misc目錄下,對報告的分析,需要使用Traceview
- —pct-touch?設定 touch 事件比例
- —pct-motion?設定手勢事件比例,例如滑動事件
- —pct-trackball?設定跟蹤球事件的比例
- —pct-syskeys?設定系統按鍵事件的比例,如 Home、Back、音量+/-等
- —pct-nav?設定”基本”導航事件的比例
- —pct-majornav?設定”主要”導航事件比例
- —pct-appswitch?設定啟動 Activity 的事件比例
- —pct-pinchzoom?設定縮放事件比例
- —pct-anyevent?設定其他事件比例
- -s?設定種子數,方便用于重現 bug
- -v?設定輸出信息的詳細級別,1個 -v 表示級別為1,2個 -v 表示級別為2
- —throttle?設定事件之間的延時,單位為毫秒
- 如果不指定這個參數,monkey會盡可能快的生成和發送消息
- 命令:adb shell monkey -p?包名 --throttle 3000
- COUNT?事件數目
九、Monkey實例
場景1:在PC端執行monkey命令,將日志保存至D盤monkey.log $adb shell monkey -p com.android.settings 1000 > d:\monkey.log 場景2:在PC端執行monkey命令,將日志保存至手機sdcard注意:雙引號 $adb shell "monkey -p com.android.settings 1000 > sdcard/monkey.log" 場景3:實際工作中在PC端執行mongkey命令,并將日志保存至F盤monkey.log
adb shell monkey -p com.hfjy.learningparentphone -v --throttle 300 --pct-touch 50 --pct-motion 50 --ignore-timeouts --ignore-crashes 100000 > F:/monkey.log
十、日志分析
當日志生成后,我們需要進入日志當中查看是否有APP崩潰記錄或者無響應記錄。崩潰記錄查找”CRASH”,無響應記錄查找”ANR”,內存泄露問題搜索"GC"(需進一步分析),異常問題搜索“Exception”(如果出現空指針,NullPointerException,需格外重視)。
為了進一步分析問題的來源,可以找到Log中出現問題處的前一次Switch,隨后根據Log主要是查看相關的Activity。
?
十一、必須重視Crash
雖然Monkey測試有部分缺陷,我們無法準確地得知重現步驟, Monkey測試所出現的NullPointException,??都是可以在用戶使用時出現的,?何時出現只是時間問題
理論上來說,? Monkey所有的Crash?都需要在發布前修復掉
結束Monkey進程
執行 Monkey 的過程中如果想中途停止 Monkey 程序的運行,需要將 Monkey 的進程殺掉。
1.ps命令查找monkey進程
$adb shell ps | grep monkey 返回到第一個數字,即monkey進程號
2.kill命令結束進程繼
$adb shell kill -9 進程ID
?最后
?對這些命令都熟悉之后,那么接下來就是綜合對編程語言的應用,思考如何用語言去處理這些命令,使得這些命令更加的方便于測試工作。github
?
轉載于:https://www.cnblogs.com/helloTerry1987/p/11029190.html
總結
以上是生活随笔為你收集整理的android monkey压力测试(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python+requests+re匹配
- 下一篇: element中upload单图片转ba