Android Monkey壓力測試詳細介紹
Monkey 是Android SDK提供的一個命令行工具, 可以簡單,方便地運行在任何版本的Android模擬器和實體設備上。 Monkey會發(fā)送偽隨機的用戶事件流,適合對app做壓力測試
閱讀目錄
- 環(huán)境搭建
- 什么是Monkey
- Monkey 用來做什么
- Monkey程序介紹
- Monkey 架構(gòu)
- Monkey弱點
- Monkey 參數(shù)大全
- Monkey 命令 基本參數(shù)介紹
- Monkey 實例
- Monkey 查看包名
- Monkey 日志分析
- 必須重視Crash
環(huán)境搭建
安裝Android SDK 并配置環(huán)境變量
http://pan.baidu.com/s/1jIlifbS
什么是Monkey
顧名思義,Monkey就是猴子, Monkey測試,就像一只猴子, 在電腦面前,亂敲鍵盤在測試。 猴子什么都不懂, 只知道亂敲
通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、 按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發(fā)生異常
Monkey 用來做什么
Monkey 主要用于Android 的壓力測試 自動的一個壓力測試小工具, 主要目的就是為了測試app 是否會Crash.
Monkey程序介紹
(1) Monkey程序由Android系統(tǒng)自帶,使用Java詫言寫成,在Android文件系統(tǒng)中的存放路徑是: /system/framework/monkey.jar;
(2) Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執(zhí)行,shell腳本在Android文件系統(tǒng)中 的存放路徑是:/system/bin/monkey;
(3)Monkey 命令啟動方式:
a)可以通過PC機CMD窗口中執(zhí)行: adb shell monkey {+命令參數(shù)}來進行Monkey測試
b)在PC上adb shell 進入Android系統(tǒng),通過執(zhí)行 monkey {+命令參數(shù)} 來進行Monkey 測試
c ) 在Android機或者模擬器上直接執(zhí)行monkey 命令,可以在Android機上安裝Android終端模擬器
Monkey 架構(gòu)
Monkey 運行在設備或模擬器上面,可以脫離PC運行(普遍做法是將monkey作為一個像待測應用發(fā)送 隨機按鍵消息的測試工具。驗證待測應用在這些隨機性的輸入面前是否會閃退或者崩潰)

Monkey弱點
Monkey雖然可以根據(jù)一個指定的命令腳本發(fā)送按鍵消息,但其丌支持條件判斷,也丌支持讀取待測界 面的信息來執(zhí)行驗證操作。
Monkey 參數(shù)大全

Monkey 命令 基本參數(shù)介紹
-p <允許的包名列表>
用此參數(shù)指定一個或多個包。指定包之后,monkey將只允許系統(tǒng)啟動指定的app。如果丌指定包, monkey將允許系統(tǒng)啟動設備中的所有app。
指定一個包:adb shell monkey -p com.shjt.map 100
指定多個包:adb shell monkey -p fishjoy.control.menu –p com.shjt.map 100
-v
用亍指定反饋信息級別(信息級別就是日志的詳細程度),總共分3個級別,分別對應的參數(shù)如下 表所示:
Level 0 : adb shell monkey -p com.shjt.map -v 100 // 缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少量信息
Level 1 : adb shell monkey -p com.shjt.map -v -v 100 // 提供較為詳細的日志,包括每個發(fā)送到Activity的事件信息
Level 2 : adb shell monkey -p com.shjt.map -v -v -v 100 // 最詳細的日志,包括了測試中選中/未選中的Activity信息
-s(隨機數(shù)種子)
用亍指定偽隨機數(shù)生成器的seed值,如果seed相同,則兩次Monkey測試所產(chǎn)生的事件序列也相同的。 示例:
monkey測試1:adb shell monkey -p com.shjt.map –s 10 100
monkey測試2:adb shell monkey -p com.shjt.map –s 10 100
--throttle <毫秒>
用亍指定用戶操作(即事件)間的時延,單位是毫秒;如果丌指定這個參數(shù),monkey會盡可能快的 生成和發(fā)送消息。 示
例:adb shell monkey -p com.shjt.map --throttle 3000 100
Monkey 實例
用monkey 命令 對上海公交 app進行 性能測試
adb shell monkey –p com.shjt.map –throttle 100 –pct-touch 50 –pct-motion 50 –v –v 1000 >c:\monkey.txt
Monkey 查看包名
手機中安裝APK包名查看器
源碼下的AndroidManifest.xml文件查看
aapt命令查看
Monkey 日志分析
正常情況, 如果Monkey測試順利執(zhí)行完成, 在log的最后, 會打印出當前執(zhí)行事件的次數(shù)和所花費的時間; // Monkey finished 代表執(zhí)行完成\
異常情況
Monkey 測試出現(xiàn)錯誤后,一般的分析步驟
看Monkey的日志 (注意第一個swith以及異常信息等)
1. 程序無響應的問題: 在日志中搜索 “ANR”
2. 崩潰問題:在日志中搜索 “Exception” (如果出現(xiàn)空指針, NullPointerException) 肯定是有bug
Monkey 執(zhí)行中斷, 在log最后也能看到當前執(zhí)行次數(shù)
必須重視Crash
雖然Monkey測試有部分缺陷,我們無法準確地得知重現(xiàn)步驟, Monkey測試所出現(xiàn)的NullPointException, 都是可以在用戶使用時出現(xiàn)的, 何時出現(xiàn)只是時間問題
理論上來說, Monkey所有的Crash 都需要在發(fā)布前修復掉
以上就是對Android Monkey壓力測試的文章整理,后續(xù)繼續(xù)補充,謝謝大家的支持!
相關(guān)文章
android RecyclerView實現(xiàn)條目Item拖拽排序與滑動刪除
本篇文章主要介紹了android RecyclerView實現(xiàn)條目Item拖拽排序與滑動刪除,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03
Android應用開發(fā)中自定義ViewGroup的究極攻略
這里我們要演示的自定義ViewGroup中將實現(xiàn)多種方式排列和滑動等效果,并且涵蓋子View之間Touch Event的攔截與處理等問題,完全干貨,下面就為大家送上Android應用開發(fā)中自定義ViewGroup的究極實例攻略2016-05-05
android 9.0 launcher3 去掉抽屜式顯示所有 app(代碼詳解)
本文通過實例代碼給大家介紹了android 9.0 Launcher3 去掉抽屜式,顯示所有 app,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
android ListView和GridView拖拽移位實現(xiàn)代碼
有些朋友對android中ListView和GridView拖拽移位功能的實現(xiàn)不是很了解,接下來將詳細介紹,需要了解的朋友可以參考下2012-12-12
解決在eclipse中將android項目生成apk并且給apk簽名的實現(xiàn)方法詳解
本篇文章是對在eclipse中將android項目生成apk并且給apk簽名的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05
Android程序開發(fā)之ListView實現(xiàn)橫向滾動(帶表頭與固定列)
這篇文章主要介紹了Android程序開發(fā)之ListView實現(xiàn)橫向滾動(帶表頭與固定列)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-07

