一、什么是穩定性測試
1:穩定性測試概念
穩定性測試就是指軟件長時間的持續運行,系統版本是否穩定,是否能否持續的為用戶提供服務。
穩定性測試其實也是性能測試范疇中的一種方式。
2:穩定性測試指標
異常的次數
異常的頻率
3:穩定性測試工具
1:首選Monkey
Monkey是向系統發送隨機的用戶事件流(如按鍵輸入、觸摸屏輸入和手勢輸入等),實現對正在開發的應用程序進行穩定性測試。可以更好的模擬用戶操作,確保App的穩定性。
通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、 按鍵等操作來對設備上的程序進行壓力測試,檢測程序多久的時間會發生異常
2:MonkeyRunner
monkeyRunner 對monkey 命令進行封裝后的api
3:Monkey 局限性
1)發送的事件無法指定,是隨機發送的
2)測試的應用只能是app
3)Monkey雖然可以通過指令來發送事件,但是沒有支持條件判斷,也不支持讀取待測界面的信息來執行驗證操作
4:Monkey原理
- Monkey 程序是由 Android 系統自帶,使用 Java 語言寫成,其本身是安卓系統下的一個monkey.jar文件。在Android文件系統中的存放路徑是: /system/framework/monkey.jar;
- Monkey.jar程序是由一個名為“monkey”的Shell腳本來啟動執行,shell腳本在Android文件系統中 的存放路徑是:/system/bin/monkey;
- Monkey 啟動方式:在 cmd 命令提示符里面輸入命令行來啟動 monkey 測試。
- 命令行:adb shell monkey——monkey.shell——monkey.jar——安卓進程——設備上執行測試
二、如何用Monkey進行穩定性測試
1:Monkey環境搭建
1)Android SDK環境:下載網址:http://www.androiddevtools.cn/
2)設備(真機/模擬器)
夜神、mumu等都可以
2:Monkey支持參數
1)連接設備
連接設備
設備:開啟USB調試選項
通過在命令行輸入adb devices來進行連接
2)事件數
Monkey支持的所有命令:adb shell monkey查看
必選的命令:COUNT:事件數 通過事件數量來測試穩定性
3)事件間隔時間設置
--throttle <milliseconds> 在事件之間插入固定延遲。通過這個選項可以控制Monkey發送事件的頻率。時間單位是ms
例1:發送10個事件,持續執行時間1分鍾
adb shell monkey --throttle 6000 10
例2:模擬用戶操作,持續執行時間1分鍾
adb shell monkey --throttle 500 120
4)指定執行apk包
-p <allowed-package-name> 此參數指定了一個包,Monkey將只允許系統啟動這些包里的Activity
-p <allowed-package-name1> -p <allowed-package-name2> 如果用此參數指定了幾個包,Monkey將只允許系統啟動這些包里的Activity
例3:對58同城進行穩定性測試,執行100次事件
adb shell monkey -p com.wuba 100
獲取包名
adb shell pm list packages
5)日志
-v Level 0 除啟動提示、測試完成和最終結果之外,提供較少信息
-v-v Level 1 提供較為詳細的測試信息,如逐個發送到Activity的事件
-v-v-v Level 2 提供更加詳細的設置信息,如測試中被選中的或未被選中的Activity。
例4:對58同城進行穩定性測試,執行100次事件,分別查看不同日志級別記錄的信息情況
adb shell monkey -p com.wuba -v 100
adb shell monkey -p com.wuba -v-v 100
adb shell monkey -p com.wuba -v -v -v 100
日志導出到本地
adb shell monkey -p com.wuba -v-v-v 100 >d:\wuba.txt
6)seed值
在Monkey運行過程中,肯定會發現異常、奔潰、無響應等問題,對於此類問題如何進行復現呢?
-s <seed> 偽隨機數生成器的seed值。如果用相同的seed值再次運行Monkey,它將生成相同的事件序列。
使用場景:
復現bug,回歸測試(驗證bug)
adb shell monkey -s 1593077384911 -p com.wuba -v-v-v 100 >d:\wuba4.txt
adb shell monkey -s 100 -p com.wuba -v-v-v 50
7)調試選項
在Monkey運行過程中,我們可以通過結束進程的方式來終止Monkey的執行,當然在運行過程中遇到異常、奔潰等情況Monkey也會停止。為了保證執行的事件數執行完整,我們可以通過調試選項的設置來防止在運行過程中Monkey命令的提前結束。
--ignore-crashes 忽略在應用程序出現crash時導致的monkey停止
--ignore-timeouts 忽略在應用程序出現ANR問題時導致monkey停止
--ignore-security-exceptions 忽略應用程序發生許可錯誤時導致monkey停止
例5:對58同城進行穩定性測試,執行50次事件,忽略過程中遇到的異常,直到50次事件完成
adb shell monkey -p com.wuba --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 50
三、Monkey事件類型
1:操作事件簡介
monkey所操作的隨機事件流中包含11大事件,分別是觸摸事件、手勢事件、二指縮放事件、軌跡球事件、屏幕旋轉事件、基本導航事件、主要導航事件、系統按鍵事件、啟動activity事件、鍵盤事件、其他類型事件
2:操作事件簡要說明
- 觸摸事件:指在屏幕某處按下並抬起的操作,可通過--pct-touch參數來配置其事件百分比。
- 手勢事件:指在屏幕某處的按下、隨機移動、抬起的操作,即直線滑動操作;可通過--pct-motion參數來配置其事件百分比
- 二指縮放事件:二指縮放事件是指在屏幕上的兩處同時按下,並同時移動,最后同時抬起的操作,即智能機上的放大縮小手勢操作;可通過--pct-pinchzoom參數來配置其事件百分比。
- 軌跡球事件:軌跡事件是由一個或多個隨機的移動組成的,有時會伴隨着點擊,即一系列的曲線滑動操作;可通過--pct-trackball參數來配置其事件百分比。
- 屏幕旋轉事件:模擬的Android手機的橫屏和豎屏切換;可通過--pct-rotation參數來配置其事件百分比。
- 基本導航事件:現在手機上很少有上、下、左、右按鍵,這種事件一般用得比較少;可通過--pct-nav參數來配置其事件百分比。 -- 用的比較少
- 主要導航事件:主要導航事件是指點擊“主要導航”按鍵的操作,這些按鍵通常會導致UI界面中的動作,如鍵盤的中間鍵、回退按鍵、菜單按鍵,可通過--pct-majornav參數來配置其事件百分比。
- 系統按鍵事件:系統按鍵事件是指點擊系統保留使用的按鍵的操作,如點擊Home鍵、返回鍵、音量調節鍵等。
- 啟動activity事件:啟動Activity事件是指在手機上啟動一個Activity的操作。在隨機的時間間隔中,Monkey將執行一個startActivity()方法,作為最大限度上覆蓋被測包中全部Activity的一種方法。可通過--pct-appswitch參數來配置其事件百分比。
- 鍵盤事件:鍵盤事件主要是一些與鍵盤相關的操作。比如點擊輸入框鍵盤彈起、點擊輸入框以外區域鍵盤收回等。可通過--pct-flip參數來配置其事件百分比。
- 其他類型事件:其他類型事件包括了除前面提到的10種事件外其他所有的事件,如按鍵、其他不常用的設備上的按鈕等。可通過--pct-anyevent參數來配置其事件百分比。 -- 用的比較少
指定執行觸摸事件--pct-touch 100次 adb shell monkey -v -v -v -s 6789 --throttle 300 --ignore-crashes --ignore-timeouts --pct-touch 100 -p com.android.calculator2 100 > 日期.log