一澈蚌、基礎(chǔ)知識
慕課網(wǎng)視頻:http://www.imooc.com/learn/729
1. 為什么要開展壓力測試亦镶?
- 提高產(chǎn)品的穩(wěn)定性
- 提高產(chǎn)品的留存率
2. 什么時候開展壓力測試日月?
- 首輪功能測試通過后
- 下班后的夜間進行
3. 什么是Monkey?Monkey在哪缤骨?
monkey是發(fā)送偽隨機用戶事件的工具爱咬,就在我們的手機系統(tǒng)里面,但是沒有顯示的icon绊起。
4. 我們用什么來操作monkey呢精拟?
5. 什么是MonkeyScript?
MonkeyScript是一組可以被monkey識別的命令集合
MonkeyScript可以完成重復(fù)固定的操作
6. 什么是MonkeyRunner工具虱歪?
MonkeyRunner提供了一系列的API
MonkeyRunner可以完成模擬事件及截圖操作
7. Monkey和MonkeyRunner的區(qū)別蜂绎?
Monkey:在adb shell中,生成用戶或是系統(tǒng)的偽隨機事件
MonkeyRunner:通過api定義特定命令和事件控制設(shè)備
8. MonkeyRunner都包括哪些APIs呢笋鄙?
- MonkeyRunner:用來連接設(shè)備或模擬器
- MonkeyDevice:提供安裝卸載應(yīng)用师枣,發(fā)送模擬事件
- MonkeyImage:完成圖像保存,及對比操作
9. MonkeyRunner都能測試哪些類型萧落?
- 多設(shè)備控制
- 功能測試
- 回歸測試
10. 壓力測試的結(jié)果:
crash:崩潰
ANR:application not responding
二践美、手機壓力測試步驟:
step1:
在手機開發(fā)者選項中,將usb調(diào)試選上找岖。
step2:
確認手機和電腦已經(jīng)成功連接
cmd中輸入:adb devices陨倡,如果連接成功會顯示手機的序列號,如下
step3:
安裝測試的app
adb install packagename.apk(注意:需要進入apk所在的目錄執(zhí)行命令)
step4:
發(fā)送壓力指令
adb shell monkey 1000
這里的數(shù)字1000是指monkey隨機發(fā)出的1000個指令
step5:
獲取app的包名
adb logcat | grep START (注意:這樣輸入會說grep不是內(nèi)部命令宣增,看下面的解釋)
grep 是linux下的命令玫膀,windows系統(tǒng)可以使用 findstr 替代 grep矛缨〉ⅲ或者執(zhí)行adb shell進入到手機帖旨,在手機系統(tǒng)下,執(zhí)行l(wèi)ogcat | grep START灵妨。android系統(tǒng)是linux的解阅,所以支持grep。
輸入上面的命令后泌霍,如果你想知道哪個app的包名是什么货抄,你就打開哪個app,我打開了魅族手機原帶的計算器朱转,如圖蟹地,這樣我們就知道了計算器的包名。
step6:
給指定的包打壓力
adb shell monkey -p package 1000
比如我用魅族手機原帶的計算器測試藤为,就輸入:adb shell monkey -p com.meizu.flyme.calculator 1000怪与,這樣就對計算器進行了壓力測試。下圖為測試的結(jié)果缅疟,注意標(biāo)紅的部分分别,翻譯過來就是注入了1000個事件,如果這樣顯示說明測試沒用問題存淫,如果那個數(shù)小于你原來輸入的值耘斩,說明有問題。
三桅咆、Monkey高級參數(shù)的應(yīng)用
1.throttle參數(shù):指定事件之間的間隔
adb shell monkey --throttle <延時時間>
比如:adb shell -p com.meizu.flyme.calculator --throttle 1000 100
這是給魅族自帶的計算器執(zhí)行100個事件括授,每1秒一次
2. seed參數(shù):指定隨機生成數(shù)的seed值
adb shell monkey -s<seed> event-count
比如:adb shell monkey -p com.meizu.flyme.calculator -s 100 50
為什么需要seed值,比如我們用monkey發(fā)現(xiàn)了異常岩饼,需要開發(fā)人員處理刽脖,這時我們需要復(fù)現(xiàn)異常。由于monkey的命令是隨機的所以很難復(fù)現(xiàn)忌愚。seed值相當(dāng)于一個標(biāo)示曲管,相同的seed值和相同的事件次數(shù),monkey會執(zhí)行相同的序列操作硕糊,就會復(fù)現(xiàn)問題院水。
3.觸摸事件參數(shù):設(shè)定觸摸事件的百分比
adb shell monkey --pct-touch<percent>
解釋:monkey是隨機事件,現(xiàn)在我們只想讓monkey來操作點擊事件简十,其他的什么滑動事件都不處理檬某,怎么辦?這里就用我們的觸摸事件參數(shù)螟蝙。
4.動作事件:設(shè)定動作事件的百分比
** adb shell monkey --pct-motion<percent>**
解釋:比如我們只想測試三種事件恢恼,那么我們要讓三種事件的百分比加起來為100,如果不等于100胰默,比如等于80场斑,那么剩余的20monkey還是隨機測試漓踢。
下圖就是touch事件50,motion事件30漏隐,這是占比喧半,20%的時間是隨機的。
還有一些命令青责,在課程的4-5節(jié)挺据,需要自己仔細看下。
5.崩潰事件:忽略崩潰和異常
正常情況下脖隶,如果monkey發(fā)現(xiàn)崩潰和異常扁耐,就會停止繼續(xù)操作。為了能讓monkey繼續(xù)執(zhí)行产阱,我們就引入這個參數(shù)做葵。
adb shell monkey --ignore-crashes <event-count>
6.超時事件(ANR):忽略超時事件
adb shell monkey --ignore-timeouts <event-count>
四、CRASH結(jié)果取析:
- step1:安裝可以一起crash的app
- step2:執(zhí)行壓力命令
- step3:析取crash的Execption信息
上圖為ANR的異常信息心墅,同樣crash也會顯示CRASH的一異常信息酿矢。
五、Monkey script:
執(zhí)行monkey腳本的命令怎燥,可以執(zhí)行我們想要的有序命令
adb shell monkey -f <scriptfile> <event-count>
monkey script有許多命令瘫筐,這里不詳細說了,可以看課程的4-9铐姚。