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