Android 性能優化:不可忽視的電量,Monkey 電量測試基本操作

Android 性能優化:不可忽視的電量,Monkey 電量測試基本操作

monkey測試簡介

  1. 存放路徑:Monkey程序是Android系統自帶的,由Java語言寫成,在Android文件系統中的存放路徑是: /system/framework/monkey.jar。

  2. 大致操作流程:通過名為“monkey”的Shell腳本去啟動Monkey.jar程序(shell腳本在Android文件系統中 的存放路徑是:/system/bin/monkey),在你指定的APP應用上模擬用戶點擊,滑動,輸入等操作以極快的速度來對設備程序進行壓力測試,檢測程序是否會發生異常,然後通過日誌進行排錯。

  3. 主要目的:測試app 是否會是否會Crash。

  4. 操作命令格式:adb shell monkey {+命令參數}

獲取Android包名方法:(注意:請開啟手機開發者模式,請開啟手機USB調試模式)

  • 查看正在運行的程序的包名:adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p' (例如:我清理手機後臺之後,開啟了QQ,輸入命令之後,就會出現QQ的進程,框的地方就是qq的包名)

Android 性能優化:不可忽視的電量,Monkey 電量測試基本操作

monkey常用操作命令簡介

  1. -p 包名:指定應用程序。例如:adb shell monkey -p 包名 事件總數

  2. -v:打印log級別,-v越多日誌信息越詳細,最多支持3個。例如:adb shell monkey -p 包名 -v -v -v 事件總數

  3. -s:偽隨機數生成器的 seed 值,通俗的說就是個標記,後面跟數字,例如:執行adb shell monkey -s 1 -p 包名 事件總數,這個我標記了-s 1,命令操作完之後,我發現有日誌報錯,我想重新執行這個monkey操作,那你就可以繼續執行這個命令,排錯時常用。

  4. -f:後接測試腳本名,例如:adb shell monkey -f 腳本名 事件總數

  5. --throttle:翻譯減速的意思,後面接時間,單位為ms,,表示事件之間的固定延遲,如果不接該項,monkey將不會延遲,例如:adb shell monkey --throttle 500 -p 包名 事件總數

  6. --pct-事件類別 11個事件百分比控制(有的是9種事件,沒有--pct-pinchzoom,--pct-rotation事件)由安卓SDK決定

  • 11種事件,按順序羅列的

    --pct-touch {+百分比}:0

    翻譯觸摸,觸摸事件泛指發生在某一位置的一個down-up事件,點擊

    --pct-motion {+百分比}:1

    翻譯動作,動作事件泛指從某一位置接下(即down事件)後經過一系列偽隨機事件後彈出(即up事件)

    --pct-pinchzoom {+百分比}:2

    翻譯二指縮放,智能機上的放大縮小手勢操作事件

    --pct-trackball {+百分比}: 3

    翻譯軌跡,軌跡事件包括一系列的隨機移動,以及偶爾跟隨在移動後面的點擊事件

    --pct-rotation {+百分比}:4

    翻譯屏幕旋轉,橫屏豎屏事件

    --pct-nav {+百分比}:5

    翻譯基本導航,基本導航事件主要來自方向輸入設備的上、下、左、右事件

    --pct-majornav {+百分比}:6

    翻譯主要導航,主要導航事件通常指引發圖形界面的一些動作,如鍵盤中間按鍵、返回按鍵、菜單按鍵等

    --pct-syskeys {+百分比}:7

    翻譯系統按鍵,系統按鍵事件通常指僅供系統使用的保留按鍵,如HOME鍵、BACK鍵、撥號鍵、掛斷鍵、音量鍵等

    --pct-appswitch {+百分比}:8

    翻譯應用啟動,應用啟動事件(activity launches)即打開應用,通過調用startActivity()方法最大限度地開啟該package下的所有應用

    --pct-flip {+百分比}:9

    翻譯翻轉,鍵盤輕彈百分比,如點擊輸入框,鍵盤彈起,點擊輸入框以外區域,鍵盤收回

    --pct-anyevent {+百分比}:10

    翻譯其他類型,其他類型事件指上文中未涉及的所有其他事件,如keypress、不常用的button等

  • 百分比控制以及使用

  • 首先注意一點,這個Event percentages在不同版本的SDK版本中順序可能會不一樣。

  • 如果在monkey參數中不指定事件參數,這些動作都是隨機分配的,11個動作其分配的百分比之和為100%,通過添加命令選項來控制每個事件的百分比。

  • 添加事件百分比之後的情況,舉例添加--pct-touch事件百分比為100:

  • 命令: adb shell monkey -v -p 包名 --pct-touch 100 100

  • 結果:

  • 說明:尷尬啊,我這個vent percentages竟然有12種,多了一種什麼我也不知道,但我敢肯定這跟SDK版本有關係,想知道的同學可以自己從安卓SDK中反編譯出monkey源碼,通過查看源碼中的MonkeySourceRandom.java文件獲知!查出來的同學可以告知我下,我想做伸手黨

Android 性能優化:不可忽視的電量,Monkey 電量測試基本操作

  • 說明:尷尬啊,我這個vent percentages竟然有12種,多了一種什麼我也不知道,但我敢肯定這跟SDK版本有關係,想知道的同學可以自己從安卓SDK中反編譯出monkey源碼,通過查看源碼中的MonkeySourceRandom.java文件獲知!查出來的同學可以告知我下,我想做伸手黨

7.--ignore-crashes:翻譯忽略崩潰,當應用程序崩潰或發生失控異常時,monkey將繼續運行直到計數完成。如果不設置此項,monkey遇到上述崩潰或異常將停止運行。

8.--ignore-timeouts:翻譯忽略超時,當應用程序發生任何超時錯誤(如ANR,即Application Not Responding)時,monkey將繼續運行直到計數完成。如果不設置此項,monkey 遇到此類超時將停止運行。

monkey測試中,如何終止運行:

方法一:

  • 新建一個窗口

  • 執行: adb shell

  • 再執行ps | grep monkey,返回來的第一個數字,即是monkey的進程號

  • 然後kill pid 進程號。如圖

Android 性能優化:不可忽視的電量,Monkey 電量測試基本操作

方法二:對手機進行重啟

  • 新建一個窗口

  • 執行adb reboot

log日誌導出

  • 保存到電腦上。

    執行:adb shell monkey -p 包名 -v 1000 > /Users/weixiangyang/Desktop/monkey.txt

Android 性能優化:不可忽視的電量,Monkey 電量測試基本操作

  • 例如:保存到電腦上標準流與錯誤流分開保存,分別命名為info.txt,error.txt

  • info.txt:此文件在手機上的SDCARD中,主要記錄了MONKEY測試時發送的各種事件,如觸摸事件的位置等等。

  • error.txt:此文件在手機上的SDCARD中,主要記錄了MONKEY測試時產生的一些ANR、強制關閉等異常。 執行:adb shell monkey -p 包名 -v 1000 1>/Users/weixiangyang/Desktop/info.txt 2>/Users/weixiangyang/Desktop/error.txt

Android 性能優化:不可忽視的電量,Monkey 電量測試基本操作

  • 例如:保存到電腦上並命名為monkey.txt

  • 保存到手機上。注意:手機要root

例如:保存到手機上並命名為monkey.txt

執行:

adb shell說明:進入adb shell後就相當於進入linux的root下面,但是沒有權限在裡面創建文件,所以手機要root

monkey -p 包名 -v 1000 > /mnt/sdcard/monkey.txt

注意:我的 adb shellmonkey XXX是分開執行的,分兩行!!!

  • 例如:保存到電腦上標準流與錯誤流分開保存,分別命名為info.txt,error.txt

    執行:adb shell monkey -p 包名 -v 1000 1>/mnt/sdcard/info.txt 2>/mnt/sdcard/error.txt


程序爬蟲抓取有用資源共享給大家

關注後,私信回覆【資源包】獲取如下內容,

測試資料、測試工具、Python、效率軟件、自動化測試報告、梯子 等


分享到:


相關文章: