目錄:導讀
前言
是一個命令,是發(fā)送偽隨機用戶事件的。這里特別要說明,既然是隨機事件也就是說你沒法控制ta點擊哪里。如果你想控制那就去修改源碼。
需要安裝(好多人問這個問題)?其實都帶著呢。。。。只需要通過adb就可以和手機進行交互了
adb又是啥?其實就是電腦和手機建立通訊的橋梁。
上面說的所有的一切只需要安裝并配置好 sdk就ok了!
一、工具
是 中的一個命令行工具,由 java 編寫,可以運行在模擬器里或?qū)?際設備中。
它向系統(tǒng)發(fā)送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現(xiàn) 對 APP 進行壓力測試。
測試是一種為了測試軟件的穩(wěn)定性、健壯性的快速有效的方法。
安裝好SDK和avd模擬器,就直接可以允許命令
二、的優(yōu)劣
優(yōu)勢
脫離 Case 的依賴
可封裝自動化執(zhí)行
可封裝后作為客戶端性能測試的驅(qū)動
缺陷
完全隨機,不可控
三、 命令
adb shell -p 包名 1 -p 包名 2 … 事件數(shù)
-p
如果用此參數(shù)指定了一個或幾個包, 將只允許系統(tǒng)啟動這些包里 的 。
如果你的應用程序還需要訪問其它包里的 ,那些包也 需要在此同時指定。
如果不指定任何包, 將允許系統(tǒng)啟動全部包
里的 。
要指定多個包,需要使用多個 -p 選項,每個-p 選項只能 用于一個包。
-v
指定打印信息的詳細級別,一個 -v 增加一個級別。
日志級別 Level 0,缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少 量信息,-v;
日志級別 Level 1,提供較為詳細的日志,包括每個發(fā)送到 的事 件信息,-v -v;
日志級別 Level 2,最詳細的日志,包括了測試中選中/未選中的 信息,-v -v -v。
adb shell monkey -p welab.bank.mobile.stage -v -v -v 100
將log保存至本地文件:adb shell -p welab.bank..stage -v -v -v 500 > D:/.txt
四、結(jié)果分析
adb shell -p –v -v –v > log.txt 可以將結(jié)果存儲起來
正常情況,如果 測試順利執(zhí)行完成,在 log 最后,會打印出當前執(zhí)行事件 的次數(shù)和所花費的時間
打開 LOG,查看 log 的最下端,是否有類似以下字段:
stats: time= ( , 0ms wifi, 0ms not )
這個字段表明本次的 沒有異常,測試通過。
CRASH
如果搜索到有結(jié)果,則表明有進程出現(xiàn)問題,測試不通過。
CRASH: com.. (pid 12919)
ANR
如果有搜索結(jié)果模擬人生2應用程序崩潰,則表示測試過程中,測試對象出現(xiàn)了無響應的現(xiàn)象,因 此測試不通過
五、詳細
顧名思義,就是猴子, 測試,就像一只猴子, 在電腦面前,亂敲鍵盤在測試。 猴子什么都不懂, 只知道亂敲
通過程序模擬用戶觸摸屏幕、滑動、 按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發(fā)生異常
六、用來做什么
主要用于的穩(wěn)定性測試,自動的一個壓力測試小工具, 主要目的就是為了測試app 是否會Crash(崩潰)
七、程序介紹
1、 程序由系統(tǒng)自帶,使用Java語言寫成,在文件系統(tǒng)中的存放路徑是: ///.jar;
2、 .jar程序是由一個名為“”的Shell腳本來啟動執(zhí)行,shell腳本在文件系統(tǒng)中 的存放路徑是://bin/;
3、 命令啟動方式:
a、可以通過PC機CMD窗口中執(zhí)行: adb shell {+命令參數(shù)}來進行測試
b、在PC上adb shell 進入系統(tǒng),通過執(zhí)行 {+命令參數(shù)} 來進行 測試
c、在機或者模擬器上直接執(zhí)行 命令,可以在機上安裝終端模擬器
八、命令基本參數(shù)
1、使用測試手機所有程序
命令:adb shell 100(執(zhí)行100次)
2、 -p
命令:
獲取手機中所有的第三方包名:adb shell pm list -3
執(zhí)行該包名:adb shell -p com.kmxs. 1000
3、 顯示日志詳細程度
命令:adb shell -p com.kmxs. -v 30 // 缺省值,僅提供啟動提示、測試完成和最終結(jié)果等少量信息
命令:adb shell -p com.kmxs. -v -v 30 // 提供較為詳細的日志,包括每個發(fā)送到的事件信息
命令:adb shell -p com.kmxs. -v -v -v 30 // 最詳細的日志,包括了測試中選中/未選中的信息
4、日志分析
命令:adb shell -p com.kmxs. -v -v 30 >D:/日志/1.txt
正常情況, 如果測試順利執(zhí)行完成, 在log的最后, 會打印出當前執(zhí)行事件的次數(shù)和所花費的時間; // 代表執(zhí)行完成\
5、-s 隨機數(shù)種子
命令:adb shell -s 10 100
用亍指定偽隨機數(shù)生成器的seed值,如果seed相同,則兩次測試所產(chǎn)生的事件序列也相同的
6、–
命令:adb shell -p com.kmxs. – 300 100
7、–pct-touch 觸摸事件 和 –pct- 手勢事件
命令:adb shell -v –pct-touch 70 20
調(diào)整觸摸事件的百分比。(觸摸事件是指在屏幕中的一個down-up事件,即在屏幕某處按下并抬起的操作)
–pct-touch:觸摸事件。即在某一位置的Down-Up(手指的放下和抬起)事件。Down()和Up()的坐標臨近,但并非相同
如:adb shell –pct-touch 67 -v 10
表示執(zhí)行10個偽隨機用戶事件流,并調(diào)整其中觸摸事件的百分比為67%。
注:此參數(shù)設置要適應當前被測應用程序的操作,比如一個應用80%的操作都是觸摸,那就可以將此參數(shù)的百分比設置成相應較高的百分比
命令:adb shell –pct- 67 -v 10
調(diào)整手勢事件事件百分比。(事件是由屏幕上某處一個down事件、一系列偽隨機的移動事件和一個up事件組成)
–pct-:動作事件。以Down()開始,Up()結(jié)尾,中間至少有一次Move()
如:adb shell –pct- 67 -v 10
表示執(zhí)行10個偽隨機用戶事件流,并調(diào)整其中動作事件的百分比為67%。
注:這里的移動是直線滑動
九、Event 分析
0:–pct-touch//touch
觸摸事件百分比(觸摸事件是一個在屏幕單一位置的按下-抬起事件)
1:–pct-//
手勢事件百分比(手勢事件是由一個在屏幕某處的按下事件、一系列的偽隨機移動、一個抬起事件組成)即一個滑動操作,但是是直線的,不能拐彎
2:–pct-//pinch
zoom 二指縮放百分比,即智能機上的放大縮小手勢操作
3:–pct-// 即單純的Move()
軌跡球事件百分比(軌跡球事件包括一個或多個隨機移動,有時還伴有點擊。軌跡球現(xiàn)在智能手機上已經(jīng)沒有了,就是類似手柄的方向鍵一樣)
4:–pct-//
屏幕旋轉(zhuǎn)百分比,橫屏豎屏
5:–pct-nav//nav 基本導航事件。即來自于方向輸入設備的上下左右操作。
”基本”導航事件百分比(導航事件包括上下左右,如方向輸入設備的輸入)老手機的上下左右鍵,智能機上沒有
6:–pct-//major 即 Bar的確認,菜單,返回鍵等
nav ”主要”導航事件百分比(這些導航事件通常會引發(fā)UI的事件,例如5-way pad的中間鍵、回退鍵、菜單鍵)
7:–pct-//(key)
”系統(tǒng)”按鈕事件百分比(這些按鈕一般專供系統(tǒng)使用,如Home, Back, Start Call, End Call,音量控制)
8:–pct-//app
啟動事件百分比。在隨機的間隔里,會執(zhí)行一個()調(diào)用,作為最大程度覆蓋包中全部的一種方法
9:–pct-flip//
flip 鍵盤輕彈百分比,如點擊輸入框,鍵盤彈起,點擊輸入框以外區(qū)域,鍵盤收回
10:–pct-// 該事件可能包含其他上述事件。
其他類型事件百分比。包括了其他所有的類型事件,如按鍵、其他不常用的設備上的按鈕等等
十、異常處理
–-
正常操作,不忽略異常
命令:adb shell -p com.kmxs. 100 >D:/日志/2.txt
忽略異常
命令:adb shell -p com.kmxs. –- 1000 >D:\日志\4.txt
–-(ANR)
命令:adb shell –- –v 10
十一、實例
命令:adb shell -p com.kmxs. -s 23 – 2000 –- –- -v -v -v 10000 >D:/日志/log.txt
十二、穩(wěn)定性測試
怎么使用開展穩(wěn)定性測試:
每次執(zhí)行5萬次模擬人生2應用程序崩潰,每次間隔500毫秒 執(zhí)行時間約為:7個 小時執(zhí)行過程中指定運行的包名,并設置報錯后繼續(xù)運行,監(jiān)視系統(tǒng)中本地代碼發(fā)生的崩潰日志級別 -v-v
4.第二天早上查看執(zhí)行日志
答案:adb shell -p com..eif.. – 500 –- –- –-- -v -v 50000 > E:\\.txt 十三、日志錯誤分析
日志中可能的錯誤:
1.程序奔潰,crash (ctrl+f搜索)
2.程序無響應, (ctrl+f搜索‘ANR ’,加空格是為了屏蔽掉一些無效信息)
3.其他問題:在日志中搜索””。
執(zhí)行中斷, 在log最后也能看到當前執(zhí)行次數(shù)
十四、總結(jié)
有些人一生沒有輝煌,并不是因為他們不能輝煌,而是因為他們的頭腦中沒有閃過輝煌的念頭,或者不知道應該如何輝煌。
機會,需要我們?nèi)ふ摇W屛覀児钠鹩職猓\用智慧,把握我們生命的每一分鐘,創(chuàng)造出一個更加精彩的人生。
趁著年輕,多出去走走看看。讀萬卷書,不如行萬里路,行萬里路,不如閱人無數(shù)。愿你邁著青春的腳步,走向成功的人生!