APP性能测试之monkey
APP性能測試之monkey
1 monkey 是做什么的?
monkey 是 Android 中的一個命令行工具,由 java 編寫,可以運行在模擬器里或?qū)?際設(shè)備中。?
它向系統(tǒng)發(fā)送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現(xiàn) 對 APP 進行壓力測試。
monkey 測試是一種為了測試軟件的穩(wěn)定性、健壯性的快速有效的方法。?
安裝好SDK和avd模擬器,就直接可以允許monkey命令
2 monkey 的優(yōu)劣?
優(yōu)勢
脫離 Case 的依賴?
可封裝自動化執(zhí)行?
可封裝后作為客戶端性能測試的驅(qū)動?
缺陷
完全隨機,不可控?
3 monkey 命令?
adb shell monkey -p 包名 1 -p 包名 2 … 事件數(shù) ?
-p
如果用此參數(shù)指定了一個或幾個包,monkey 將只允許系統(tǒng)啟動這些包里 的 Activity。
如果你的應(yīng)用程序還需要訪問其它包里的 Activity,那些包也 需要在此同時指定。
如果不指定任何包,monkey 將允許系統(tǒng)啟動全部包
里的 Activity。
要指定多個包,需要使用多個 -p 選項,每個-p 選項只能 用于一個包。?
-v
指定打印信息的詳細(xì)級別,一個 -v 增加一個級別。?
日志級別 Level 0,缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少 量信息,-v;?
日志級別 Level 1,提供較為詳細(xì)的日志,包括每個發(fā)送到 Activity 的事 件信息,-v -v;?
日志級別 Level 2,最詳細(xì)的日志,包括了測試中選中/未選中的 Activity 信息,-v -v -v。?
adb shell monkey -p welab.bank.mobile.stage -v -v -v 100
將log保存至本地文件:adb shell monkey -p welab.bank.mobile.stage -v -v -v 500 > D:/monkey.txt
測試結(jié)果如下圖所示,顯示了一些參數(shù)
顯示事件的百分比
操作了哪100個事件
花費時間,總共事件統(tǒng)計,網(wǎng)絡(luò)連接狀態(tài),Monkey finished
4 monkey 結(jié)果分析?
adb shell monkey -p –v -v –v > log.txt ?可以將結(jié)果存儲起來?
正常情況,如果 monkey 測試順利執(zhí)行完成,在 log 最后,會打印出當(dāng)前執(zhí)行事件 的次數(shù)和所花費的時間?
Monkey finished?
打開 LOG,查看 log 的最下端,是否有類似以下字段:?
Network stats: elapsed time=5123ms (5123ms mobile, 0ms wifi, 0ms not connected)?
Monkey finished ?這個字段表明本次的 Monkey 沒有異常,測試通過。?
CRASH?
如果搜索到有結(jié)果,則表明有進程出現(xiàn)問題,測試不通過。?
CRASH: com.onekchi.downloadmanager (pid 12919)?
ANR?
如果有搜索結(jié)果,則表示測試過程中,測試對象出現(xiàn)了無響應(yīng)的現(xiàn)象,因 此測試不通過
一、Monkey介紹
顧名思義,Monkey就是猴子, ?Monkey測試,就像一只猴子, 在電腦面前,亂敲鍵盤在測試。 ?猴子什么都不懂, 只知道亂敲
通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、 按鍵等操作來對設(shè)備上的程序進行壓力測試,檢測程序多久的時間會發(fā)生異常
二、 Monkey用來做什么
Monkey 主要用于Android的穩(wěn)定性測試,自動的一個壓力測試小工具, 主要目的就是為了測試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 命令 基本參數(shù)介紹
1、使用monkey測試手機所有程序
命令:adb shell monkey 100(執(zhí)行100次)
2、 -p <允許的包名列表>
命令:
獲取手機中所有的第三方包名:adb shell pm list packages -3
執(zhí)行該包名:adb shell monkey -p com.kmxs.reader 1000
3、 顯示日志詳細(xì)程度
命令:adb shell monkey -p com.kmxs.reader -v 30 ? ? ? ?// 缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少量信息
命令:adb shell monkey -p com.kmxs.reader -v -v 30 ? ? ? ?// 提供較為詳細(xì)的日志,包括每個發(fā)送到Activity的事件信息
命令:adb shell monkey -p com.kmxs.reader -v -v -v 30 ? ? ? ?// 最詳細(xì)的日志,包括了測試中選中/未選中的Activity信息
4、Monkey日志分析
命令:adb shell monkey -p com.kmxs.reader -v -v 30 >D:/日志/1.txt
正常情況, ?如果Monkey測試順利執(zhí)行完成, 在log的最后, 會打印出當(dāng)前執(zhí)行事件的次數(shù)和所花費的時間; // Monkey finished 代表執(zhí)行完成\
5、-s 隨機數(shù)種子
命令:adb shell monkey -s 10 100
用亍指定偽隨機數(shù)生成器的seed值,如果seed相同,則兩次Monkey測試所產(chǎn)生的事件序列也相同的
6、--throttle <毫秒>
命令:adb shell monkey -p com.kmxs.reader --throttle 300 100
7、--pct-touch 觸摸事件 和 ?--pct-motion 手勢事件
命令:adb shell monkey -v --pct-touch 70 20
調(diào)整觸摸事件的百分比。(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下并抬起的操作)
–pct-touch:觸摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down(ACTION_DOWN)和Up(ACTION_UP)的坐標(biāo)臨近,但并非相同
如:adb shell monkey --pct-touch 67 -v 10
表示執(zhí)行10個偽隨機用戶事件流,并調(diào)整其中觸摸事件的百分比為67%。
注:此參數(shù)設(shè)置要適應(yīng)當(dāng)前被測應(yīng)用程序的操作,比如一個應(yīng)用80%的操作都是觸摸,那就可以將此參數(shù)的百分比設(shè)置成相應(yīng)較高的百分比
命令:adb shell monkey --pct-motion 67 -v 10
調(diào)整手勢事件motion事件百分比。(motion事件是由屏幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)
–pct-motion:動作事件。以Down(ACTION_DOWN)開始,Up(ACTION_UP)結(jié)尾,中間至少有一次Move(ACTION_MOVE)
如:adb shell monkey --pct-motion 67 -v 10
表示執(zhí)行10個偽隨機用戶事件流,并調(diào)整其中動作事件的百分比為67%。
注:這里的移動是直線滑動
Event percentages:
0:--pct-touch//touch
events percentage觸摸事件百分比(觸摸事件是一個在屏幕單一位置的按下-抬起事件)
1:--pct-motion//motion
events percentage手勢事件百分比(手勢事件是由一個在屏幕某處的按下事件、一系列的偽隨機移動、一個抬起事件組成)即一個滑動操作,但是是直線的,不能拐彎
2:--pct-pinchzoom//pinch
zoom events percentage二指縮放百分比,即智能機上的放大縮小手勢操作
3:--pct-trackball//trackball ?即單純的Move(ACTION_MOVE)
events percentage軌跡球事件百分比(軌跡球事件包括一個或多個隨機移動,有時還伴有點擊。軌跡球現(xiàn)在智能手機上已經(jīng)沒有了,就是類似手柄的方向鍵一樣)
4:--pct-rotation//screen
rotation events percentage屏幕旋轉(zhuǎn)百分比,橫屏豎屏
5:--pct-nav//nav 基本導(dǎo)航事件。即來自于方向輸入設(shè)備的上下左右操作。
events percentage”基本”導(dǎo)航事件百分比(導(dǎo)航事件包括上下左右,如方向輸入設(shè)備的輸入)老手機的上下左右鍵,智能機上沒有
6:--pct-majornav//major 即Navigation Bar的確認(rèn),菜單,返回鍵等
nav events percentage”主要”導(dǎo)航事件百分比(這些導(dǎo)航事件通常會引發(fā)UI的事件,例如5-way pad的中間鍵、回退鍵、菜單鍵)
7:--pct-syskeys//system(key)
operations percentage”系統(tǒng)”按鈕事件百分比(這些按鈕一般專供系統(tǒng)使用,如Home, Back, Start Call, End Call,音量控制)
8:--pct-appswitch//app
switch events percentage啟動activity事件百分比。在隨機的間隔里,Monkey會執(zhí)行一個startActivity()調(diào)用,作為最大程度覆蓋包中全部Activity的一種方法
9:--pct-flip//keyboard
flip percentage鍵盤輕彈百分比,如點擊輸入框,鍵盤彈起,點擊輸入框以外區(qū)域,鍵盤收回
10:--pct-anyevent//anyevents ?該事件可能包含其他上述事件。
percentage其他類型事件百分比。包括了其他所有的類型事件,如按鍵、其他不常用的設(shè)備上的按鈕等等
8、 --ignore-crashes
正常操作,不忽略異常
命令:adb shell monkey -p com.kmxs.reader 100 >D:/日志/2.txt
忽略異常
命令:adb shell monkey -p com.kmxs.reader --ignore-crashes 1000 >D:\日志\4.txt
9、 --ignore-timeouts(ANR)
命令:adb shell monkey --ignore-timeouts –v 10
10、Monkey 實例
命令:adb shell monkey -p com.kmxs.reader -s 23 ?--throttle 2000 --ignore-crashes --ignore-timeouts -v -v -v 10000 >D:/日志/log.txt
11、Monkey異常分析
一般我們可以一次發(fā)送5萬次隨機事件的請求,每個請求之間的間隔為150毫秒,測試大約會進行40min,完成以后就可以查看日志。?
日志中可能的錯誤:
1.程序奔潰,crash (ctrl+f搜索)
2.程序無響應(yīng),ApplicationNo Response(ctrl+f搜索‘ANR ’,加空格是為了屏蔽掉一些無效信息)
3.其他問題:在日志中搜索”Exception”。
Monkey 執(zhí)行中斷, 在log最后也能看到當(dāng)前執(zhí)行次數(shù)
?
?
總結(jié)
以上是生活随笔為你收集整理的APP性能测试之monkey的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Git】笔记1
- 下一篇: 第三次作业:PSP耗时