App穩定性測試(Monkey)


一、什么是穩定性測試

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.  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM