1. 程式人生 > >App穩定性測試

App穩定性測試

一、什麼是穩定性測試

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:操作事件簡要說明

 

  1. 觸控事件:指在螢幕某處按下並抬起的操作,可通過--pct-touch引數來配置其事件百分比。
  2. 手勢事件:指在螢幕某處的按下、隨機移動、抬起的操作,即直線滑動操作;可通過--pct-motion引數來配置其事件百分比
  3. 二指縮放事件:二指縮放事件是指在螢幕上的兩處同時按下,並同時移動,最後同時抬起的操作,即智慧機上的放大縮小手勢操作;可通過--pct-pinchzoom引數來配置其事件百分比。
  4. 軌跡球事件:軌跡事件是由一個或多個隨機的移動組成的,有時會伴隨著點選,即一系列的曲線滑動操作;可通過--pct-trackball引數來配置其事件百分比。
  5. 螢幕旋轉事件:模擬的Android手機的橫屏和豎屏切換;可通過--pct-rotation引數來配置其事件百分比。
  6. 基本導航事件:現在手機上很少有上、下、左、右按鍵,這種事件一般用得比較少;可通過--pct-nav引數來配置其事件百分比。    -- 用的比較少
  7. 主要導航事件:主要導航事件是指點選“主要導航”按鍵的操作,這些按鍵通常會導致UI介面中的動作,如鍵盤的中間鍵、回退按鍵、選單按鍵,可通過--pct-majornav引數來配置其事件百分比。
  8. 系統按鍵事件:系統按鍵事件是指點選系統保留使用的按鍵的操作,如點選Home鍵、返回鍵、音量調節鍵等。
  9. 啟動activity事件:啟動Activity事件是指在手機上啟動一個Activity的操作。在隨機的時間間隔中,Monkey將執行一個startActivity()方法,作為最大限度上覆蓋被測包中全部Activity的一種方法。可通過--pct-appswitch引數來配置其事件百分比。
  10. 鍵盤事件:鍵盤事件主要是一些與鍵盤相關的操作。比如點選輸入框鍵盤彈起、點選輸入框以外區域鍵盤收回等。可通過--pct-flip引數來配置其事件百分比。
  11. 其他型別事件:其他型別事件包括了除前面提到的10種事件外其他所有的事件,如按鍵、其他不常用的裝置上的按鈕等。可通過--pct-anyevent引數來配置其事件百分比。  -- 用的比較少
  12. 指定執行觸控事件--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
  13.