Android Monkey壓力測(cè)試詳細(xì)介紹
Monkey 是Android SDK提供的一個(gè)命令行工具, 可以簡(jiǎn)單,方便地運(yùn)行在任何版本的Android模擬器和實(shí)體設(shè)備上。 Monkey會(huì)發(fā)送偽隨機(jī)的用戶事件流,適合對(duì)app做壓力測(cè)試
閱讀目錄
- 環(huán)境搭建
- 什么是Monkey
- Monkey 用來做什么
- Monkey程序介紹
- Monkey 架構(gòu)
- Monkey弱點(diǎn)
- Monkey 參數(shù)大全
- Monkey 命令 基本參數(shù)介紹
- Monkey 實(shí)例
- Monkey 查看包名
- Monkey 日志分析
- 必須重視Crash
環(huán)境搭建
安裝Android SDK 并配置環(huán)境變量
http://pan.baidu.com/s/1jIlifbS
什么是Monkey
顧名思義,Monkey就是猴子, Monkey測(cè)試,就像一只猴子, 在電腦面前,亂敲鍵盤在測(cè)試。 猴子什么都不懂, 只知道亂敲
通過Monkey程序模擬用戶觸摸屏幕、滑動(dòng)Trackball、 按鍵等操作來對(duì)設(shè)備上的程序進(jìn)行壓力測(cè)試,檢測(cè)程序多久的時(shí)間會(huì)發(fā)生異常
Monkey 用來做什么
Monkey 主要用于Android 的壓力測(cè)試 自動(dòng)的一個(gè)壓力測(cè)試小工具, 主要目的就是為了測(cè)試app 是否會(huì)Crash.
Monkey程序介紹
(1) Monkey程序由Android系統(tǒng)自帶,使用Java詫言寫成,在Android文件系統(tǒng)中的存放路徑是: /system/framework/monkey.jar;
(2) Monkey.jar程序是由一個(gè)名為“monkey”的Shell腳本來啟動(dòng)執(zhí)行,shell腳本在Android文件系統(tǒng)中 的存放路徑是:/system/bin/monkey;
(3)Monkey 命令啟動(dòng)方式:
a)可以通過PC機(jī)CMD窗口中執(zhí)行: adb shell monkey {+命令參數(shù)}來進(jìn)行Monkey測(cè)試
b)在PC上adb shell 進(jìn)入Android系統(tǒng),通過執(zhí)行 monkey {+命令參數(shù)} 來進(jìn)行Monkey 測(cè)試
c ) 在Android機(jī)或者模擬器上直接執(zhí)行monkey 命令,可以在Android機(jī)上安裝Android終端模擬器
Monkey 架構(gòu)
Monkey 運(yùn)行在設(shè)備或模擬器上面,可以脫離PC運(yùn)行(普遍做法是將monkey作為一個(gè)像待測(cè)應(yīng)用發(fā)送 隨機(jī)按鍵消息的測(cè)試工具。驗(yàn)證待測(cè)應(yīng)用在這些隨機(jī)性的輸入面前是否會(huì)閃退或者崩潰)
Monkey弱點(diǎn)
Monkey雖然可以根據(jù)一個(gè)指定的命令腳本發(fā)送按鍵消息,但其丌支持條件判斷,也丌支持讀取待測(cè)界 面的信息來執(zhí)行驗(yàn)證操作。
Monkey 參數(shù)大全
Monkey 命令 基本參數(shù)介紹
-p <允許的包名列表>
用此參數(shù)指定一個(gè)或多個(gè)包。指定包之后,monkey將只允許系統(tǒng)啟動(dòng)指定的app。如果丌指定包, monkey將允許系統(tǒng)啟動(dòng)設(shè)備中的所有app。
指定一個(gè)包:adb shell monkey -p com.shjt.map 100
指定多個(gè)包:adb shell monkey -p fishjoy.control.menu –p com.shjt.map 100
-v
用亍指定反饋信息級(jí)別(信息級(jí)別就是日志的詳細(xì)程度),總共分3個(gè)級(jí)別,分別對(duì)應(yīng)的參數(shù)如下 表所示:
Level 0 : adb shell monkey -p com.shjt.map -v 100 // 缺省值,僅提供啟動(dòng)提示、測(cè)試完成和最終結(jié)果等少量信息
Level 1 : adb shell monkey -p com.shjt.map -v -v 100 // 提供較為詳細(xì)的日志,包括每個(gè)發(fā)送到Activity的事件信息
Level 2 : adb shell monkey -p com.shjt.map -v -v -v 100 // 最詳細(xì)的日志,包括了測(cè)試中選中/未選中的Activity信息
-s(隨機(jī)數(shù)種子)
用亍指定偽隨機(jī)數(shù)生成器的seed值,如果seed相同,則兩次Monkey測(cè)試所產(chǎn)生的事件序列也相同的。 示例:
monkey測(cè)試1:adb shell monkey -p com.shjt.map –s 10 100
monkey測(cè)試2:adb shell monkey -p com.shjt.map –s 10 100
--throttle <毫秒>
用亍指定用戶操作(即事件)間的時(shí)延,單位是毫秒;如果丌指定這個(gè)參數(shù),monkey會(huì)盡可能快的 生成和發(fā)送消息。 示
例:adb shell monkey -p com.shjt.map --throttle 3000 100
Monkey 實(shí)例
用monkey 命令 對(duì)上海公交 app進(jìn)行 性能測(cè)試
adb shell monkey –p com.shjt.map –throttle 100 –pct-touch 50 –pct-motion 50 –v –v 1000 >c:\monkey.txt
Monkey 查看包名
手機(jī)中安裝APK包名查看器
源碼下的AndroidManifest.xml文件查看
aapt命令查看
Monkey 日志分析
正常情況, 如果Monkey測(cè)試順利執(zhí)行完成, 在log的最后, 會(huì)打印出當(dāng)前執(zhí)行事件的次數(shù)和所花費(fèi)的時(shí)間; // Monkey finished 代表執(zhí)行完成\
異常情況
Monkey 測(cè)試出現(xiàn)錯(cuò)誤后,一般的分析步驟
看Monkey的日志 (注意第一個(gè)swith以及異常信息等)
1. 程序無響應(yīng)的問題: 在日志中搜索 “ANR”
2. 崩潰問題:在日志中搜索 “Exception” (如果出現(xiàn)空指針, NullPointerException) 肯定是有bug
Monkey 執(zhí)行中斷, 在log最后也能看到當(dāng)前執(zhí)行次數(shù)
必須重視Crash
雖然Monkey測(cè)試有部分缺陷,我們無法準(zhǔn)確地得知重現(xiàn)步驟, Monkey測(cè)試所出現(xiàn)的NullPointException, 都是可以在用戶使用時(shí)出現(xiàn)的, 何時(shí)出現(xiàn)只是時(shí)間問題
理論上來說, Monkey所有的Crash 都需要在發(fā)布前修復(fù)掉
以上就是對(duì)Android Monkey壓力測(cè)試的文章整理,后續(xù)繼續(xù)補(bǔ)充,謝謝大家的支持!
- monkeyrunner環(huán)境搭建及實(shí)例教程(3)
- monkeyrunner 腳本錄制實(shí)例詳解
- Android自動(dòng)測(cè)試工具M(jìn)onkey的實(shí)現(xiàn)方法
- 詳解Python編程中對(duì)Monkey Patch猴子補(bǔ)丁開發(fā)方式的運(yùn)用
- Monkey Patch猴子補(bǔ)丁編程方式及其在Ruby中的運(yùn)用
- Ruby使用Monkey Patch猴子補(bǔ)丁方式進(jìn)行程序開發(fā)的示例
- Android自動(dòng)測(cè)試工具M(jìn)onkey
- Android SDK命令行工具M(jìn)onkey參數(shù)及使用解析
相關(guān)文章
Android7.0中關(guān)于ContentProvider組件詳解
本文描述了Android7.0中關(guān)于ContentProvider組件實(shí)現(xiàn)原理以及ContentProvider發(fā)布者和調(diào)用者這兩在Framework層是如何實(shí)現(xiàn)的。2017-11-11Flutter下Android Studio配置gradle的方法
這篇文章主要介紹了Flutter下Android Studio配置gradle的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Android利用Flutter?path繪制粽子的示例代碼
端午將至,作為中華民族的非常重要的傳統(tǒng)節(jié)日,粽子那是必不可少的。今天跟隨本篇文章用Flutter?path畫一個(gè)會(huì)科普節(jié)日的的粽子吧2022-05-05Android通過應(yīng)用程序創(chuàng)建快捷方式的方法
這篇文章主要介紹了Android通過應(yīng)用程序創(chuàng)建快捷方式的方法,涉及Android基于應(yīng)用程序創(chuàng)建快捷方式的圖標(biāo)及動(dòng)作等技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09簡(jiǎn)單了解Android性能優(yōu)化方向及相關(guān)工具
這篇文章主要介紹了簡(jiǎn)單了解Android性能優(yōu)化方向及相關(guān)工具,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Android 詳解自定義圓角輸入框和按鈕的實(shí)現(xiàn)流程
對(duì)于安卓程序員來說,自定義view簡(jiǎn)直不要太重要,畢竟有很多功能,譬如圓形頭像這些,用單純的原生非常難以實(shí)現(xiàn),而用自定義view,簡(jiǎn)直分分鐘,今天我們來實(shí)現(xiàn)自定義圓角輸入框和按鈕,大家可以跟著練習(xí),掌握技巧2021-11-11淺扒Android動(dòng)態(tài)設(shè)置字體大小的示例
本篇文章主要介紹了淺扒Android動(dòng)態(tài)設(shè)置字體大小的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12Android上使用ZXing識(shí)別條形碼與二維碼的方法
這篇文章主要介紹了Android上使用ZXing識(shí)別條形碼與二維碼的方法,需要的朋友可以參考下2014-08-08