一、什麼是穩定性測試
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
-