手動測試與自動化測試
為了說明這兩個概念,舉個例子:
此時我們要進(jìn)行一個修改昵稱的操作侯谁,我們需要進(jìn)行手動測試需走一遍事件流程:
1.點(diǎn)擊修改昵稱按鈕
2.輸入框輸入昵稱
3.點(diǎn)擊保存
如果換成自動化測試定硝,那么就要模擬手動測試的“事件流程”疗绣,如圖:
手動測試與自動化測試對照
壓力測試
- 目的:提高產(chǎn)品的穩(wěn)定性與留存率鳖谈,進(jìn)而增加應(yīng)用的使用率創(chuàng)造更大的價值秩命。
- 結(jié)果:Crash(崩潰,使用過程中非正常退出)侥加,ANR(應(yīng)用程序無響應(yīng))
Monkey
通過向系統(tǒng)發(fā)送偽隨機(jī)事件流(如按鍵輸入叫潦、觸摸屏輸入、手勢輸入等)隨機(jī)觸發(fā)界面事件來測試應(yīng)用的穩(wěn)定性與健壯性官硝,Android SDK 自帶
Android APP壓力測試的步驟
Step 1.
- 在手機(jī)開發(fā)者選項中打開USB調(diào)試
Step 2.
- 確認(rèn)手機(jī)與電腦成功連接,使用命令adb devices查看
Step 3.
- 安裝測試APP短蜕,使用命令adb install package.apk
Step 4.
- 獲取APP包名氢架,使用命令adb logcat | grep START,(“ | ”是管道朋魔,將上一個命令的輸出作為下一個命令的輸入岖研,抓取START標(biāo)簽的Log信息)。
- 輸入命令警检,點(diǎn)Return/Enter孙援,點(diǎn)擊APP,cmp=package_name/即可看見APP包名扇雕。
Step 5.
- 給指定包“加壓力”拓售,常用命令adb shell monkey -p <package_name> -v <event_count>
常見參數(shù)
1. v參數(shù)
- 命令行的每增加一個 -v 將增加反饋信息的級別。
- Level 0( 缺省值 ) 除啟動提示镶奉、測試完成和最終結(jié)果之外础淤,提供較少信息。
- Level 1 提供較為詳細(xì)的測試信息哨苛,如逐個發(fā)送到 Activity 的事件鸽凶。
- Level 2 提供更加詳細(xì)的設(shè)置信息,如測試中被選中的或未被選中的 Activity 建峭。
1. throttle參數(shù)
- 在事件之間插入固定延遲玻侥。通過這個選項可以減緩 Monkey 的執(zhí)行速度。
- 使用命令adb shell monkey **--throttle <millisecond> **
2. seed參數(shù)
- 如果出現(xiàn)了Cras亿蒸、ANR等凑兰,設(shè)定 seed 值(數(shù)值隨便設(shè)置)掌桩,使用相同的seed值和事件數(shù)可以復(fù)現(xiàn)這些 bug。
- 使用命令adb shell monkey** -s <seed> **
3. 觸摸事件
- 觸摸事件是一個 down-up 事件票摇,它發(fā)生在屏幕上的某單一位置
- 調(diào)整觸摸事件的百分比使用命令adb shell monkey **--pct-touch <100以內(nèi)正整數(shù)> **
4. 動作事件
- 動作事件由屏幕上某處的一個 down 事件拘鞋、一系列的偽隨機(jī)事件和一個 up 事件組成。
- 調(diào)整動作事件的百分比使用命令adb shell monkey **--pct-motion <100以內(nèi)正整數(shù)> **
5. 軌跡事件
- 軌跡事件由一個或幾個隨機(jī)的移動組成矢门,有時還伴隨有點(diǎn)擊盆色。
- 調(diào)整軌跡事件的百分比使用命令adb shell monkey **--pct-trackball <100以內(nèi)正整數(shù)> **
6. 基本導(dǎo)航事件
- 導(dǎo)航事件由來自方向輸入設(shè)備的 up/down/left/right 組成 。
- 調(diào)整“基本”導(dǎo)航事件的百分比使用命令adb shell monkey **--pct-nav <100以內(nèi)正整數(shù)> **
7. 主要導(dǎo)航事件
- 這些導(dǎo)航事件通常引發(fā)圖形界面中的動作祟剔,如: 回退按鍵隔躲、菜單按鍵 。
- 調(diào)整“主要”導(dǎo)航事件的百分比使用命令adb shell monkey **--pct-majornav <100以內(nèi)正整數(shù)> **
8. 系統(tǒng)導(dǎo)航事件
- 這些按鍵通常被保留物延,由系統(tǒng)使用宣旱,如 Home 、 Back 叛薯、 Start Call 浑吟、 End Call 及音量控制鍵 。
- 調(diào)整“系統(tǒng)”導(dǎo)航事件的百分比使用命令adb shell monkey **--pct-syskeys <100以內(nèi)正整數(shù)> **
9. 啟動Activity事件
- 在隨機(jī)間隔里耗溜, Monkey 將執(zhí)行一個 startActivity () 調(diào)用组力,作為最大程度覆蓋包中全部 Activity 。
- 設(shè)置啟動Activity事件的百分比使用命令adb shell monkey **--pct-appswitch <100以內(nèi)正整數(shù)> **
10. 不常用事件
- 無法與上述事件劃分到一起抖拴,它包羅了所有其它類型的事件燎字,如:按鍵、其它不常用的設(shè)備按鈕阿宅、等等候衍。
- 設(shè)置不常用事件的百分比使用命令adb shell monkey **--pct-anyevent <100以內(nèi)正整數(shù)> **
注:各事件的百分比相加為100%
Crash與ANR結(jié)果析取
Crash:崩潰事件
- 當(dāng)應(yīng)用程序崩潰或發(fā)生任何失控異常時, Monkey 將停止運(yùn)行洒放。
- 如果使用命令adb shell monkey **--ignore-crashes **蛉鹿, Monkey 將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成往湿。
ANR:用用程序無響應(yīng)榨为,超時
- 當(dāng)應(yīng)用程序發(fā)生任何超時錯誤 ( ANR對話框 ) 時, Monkey 將停止運(yùn)行煌茴。
- 如果使用命令adb shell monkey **--ignore-timeouts **随闺, Monkey 將繼續(xù)向系統(tǒng)發(fā)送事件,直到計數(shù)完成蔓腐。
- 自動測試的時候如果出現(xiàn)ANR矩乐,查看Log信息即可。
- 手動測試出現(xiàn)ANR,查看信息散罕,可以依次使用如下命令:
- adb shell
- cd data/anr/
- ll traces.txt