1、什么是穩(wěn)定性測(cè)試?
通過(guò)隨機(jī)點(diǎn)擊屏幕一段時(shí)間,看看App會(huì)不會(huì)崩潰,能不能維持正常運(yùn)行。
2、什么是monkey?
Monkey是一個(gè)命令行工具,使用Android/ target=_blank class=infotextkey>安卓調(diào)試橋(adb)來(lái)運(yùn)行它,模擬用戶觸摸屏幕、滑動(dòng)、按鍵等隨機(jī)事件流來(lái)對(duì)設(shè)備上的程序進(jìn)行壓力測(cè)試,檢測(cè)程序多久的時(shí)間會(huì)發(fā)生異常,可以根據(jù)獲取的log信息進(jìn)行修復(fù)。
3、Monkey結(jié)構(gòu)
4、Monkey使用步驟
① 連接方式
有線連接:數(shù)據(jù)線連接設(shè)備
無(wú)線連接:輸入adb connect 192.168.199.152 IP地址
② 先確認(rèn)設(shè)備(模擬器或者真機(jī))是否連接成功
輸入命令:adb devices,出現(xiàn)設(shè)備號(hào)則表示連接成功
③ 確定待測(cè)應(yīng)用的包名
打開(kāi)待測(cè)應(yīng)用后,輸入命令:adb shell dumpsys activity | find "mFocusedActivity"查看包名 專業(yè)版包名: com.zhongyou.special.pad 169030
④ 執(zhí)行monkey測(cè)試命令
輸入命令:adb shell monkey -p com.zhongyou.special.pad -v -v 1000 --throttle 500 --pct-touch 50 –-pct-motion 50 >D:monkey.txt
⑤ 中斷monkey運(yùn)行
如果想中斷運(yùn)行中的monkey CTRL+C
adb shell ps | find “monkey” 返回進(jìn)程號(hào)
adb shell kill [剛才查到的進(jìn)程號(hào)]
5、Monkey 壓力測(cè)試參數(shù)
命令格式:adb shell monkey [限制命令 參數(shù)值][事件名 百分比] 事件次數(shù)
基礎(chǔ)參數(shù)
-p <允許的包名列表>
用此參數(shù)指定一個(gè)或多個(gè)包。指定包之后,monkey將只允許系統(tǒng)啟動(dòng)指定的app。如果沒(méi)有指定包, 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í)延,單位是毫秒;如果沒(méi)有指定這個(gè)參數(shù),monkey會(huì)盡可能快的生成和發(fā)送消息。
例:adb shell monkey -p com.shjt.map --throttle 3000 100
發(fā)送的事件類型
點(diǎn)擊事件百分比,即參數(shù)--pct-touch
滑動(dòng)事件百分比,即參數(shù)--pct-motion
軌跡球事件百分比,即參數(shù)--pct-trackball
基本導(dǎo)航事件百分比,即參數(shù)--pct-nav
系統(tǒng)按鍵事件百分比,即參數(shù)--pct-syskeys
其他事件百分比,即參數(shù)--pct-anyevent
調(diào)試選項(xiàng)(不常用)
--hprof:指定該項(xiàng)后在事件序列發(fā)送前后會(huì)立即生成分析報(bào)告
--ignore-crashes:忽略崩潰
--ignore-timeouts:忽略超時(shí)
--ignore-security-exceptions:忽略安全異常
--kill-process-after-error:發(fā)生錯(cuò)誤后直接殺掉進(jìn)程
--monitor-native-crashes:跟蹤本地方法的崩潰問(wèn)題
6、Monkey 日志分析
Monkey 測(cè)試出現(xiàn)錯(cuò)誤后,一般的分析步驟看Monkey的日志 (注意第一個(gè)swith以及異常信息等)
1. 程序無(wú)響應(yīng)的問(wèn)題: 在日志中搜索 “ANR”
2. 崩潰問(wèn)題:在日志中搜索 “Exception” (如果出現(xiàn)空指針, NullPointerException) 肯定是有bug
3、搜索"crash" 、"error"
7、應(yīng)用內(nèi)存使用日志
adb shell dumpsys meminfo com.zhongyou.special.pad | find " Dalvik Heap"
top [ -m ] [ -n ] [ -d ] [ -s ] [ -t ] [ -h ]
輸入命令:adb shell top -d 10 -m 1 -s rss >D:ram.txt
參數(shù)含義:
-m // 最多顯示多少個(gè)進(jìn)程-n // 刷新次數(shù)-d // 刷新間隔時(shí)間(默認(rèn)5秒)-s // 按哪列排序 -t // 顯示線程信息而不是進(jìn)程 -h // 顯示幫助文檔
參數(shù)含義:
PID : progress identification,應(yīng)用程序ID
S : 進(jìn)程的狀態(tài),其中S表示休眠,R表示正在運(yùn)行,Z表示僵死狀態(tài),N表示該進(jìn)程優(yōu)先值是負(fù)數(shù)
#THR : 程序當(dāng)前所用的線程數(shù)
VSS : Virtual Set Size虛擬耗用內(nèi)存(包含共享庫(kù)占用的內(nèi)存)
RSS : Resident Set Size實(shí)際使用物理內(nèi)存(包含共享庫(kù)占用的內(nèi)存)
PCY : 前臺(tái)(fg)和后臺(tái)(bg)進(jìn)程
UID : User Identification,用戶身份ID
Name : 應(yīng)用程序名稱






