• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Android 自動化測試及性能數據采集的 Python 腳本

    發表于:2018-06-05來源: Charming本尊作者: Charming本尊點擊數: 標簽:Androidpython
    文主要介紹一個基于 uiautomator2 封裝的一個 Python 庫 android-catcher ,該庫的功能主要有對 Android 設備進行 UI 自動化測試 和 采集手機性能數據 ,適用于如列表滑動、錄制視頻等各種測試場

    文主要介紹一個基于 uiautomator2 封裝的一個 Python 庫 android-catcher ,該庫的功能主要有對 Android 設備進行 UI 自動化測試 和 采集手機性能數據 ,適用于如列表滑動、錄制視頻等各種測試場景下 CPU、內存、幀率 等信息的捕獲,方便后續分析。 Github地址:https://github.com/CharmingW/android-catcher

    安裝

    安裝 Python

    自動化測試的腳本是用 Python 3 寫的,要運行腳本需要先安裝 Python 3 環境

    下載地址:Python 3.6.5

    安裝 android-catcher 依賴

    打開腳本目錄執行以下命令,安裝依賴

    pip install -r requirements.txt

    Usage

    uiautomator2 的使用方式

    安裝完 uiautomator2 之后,一般只需要執行以下命令對設備進行初始化,在設備上安裝 uiautomator2 服務

    python -m uiautomator2 init

    出現以下提示則表示安裝成功

    更多的 uiautomator2 的使用方式可參考:https://github.com/openatx/uiautomator2

    腳本文件說明

    這個腳本庫根目錄下主要的文件有

    • info.py :手機性能信息采集的腳本,其中定義了父類 Info,已實現的子類有 CPUInfo(CPU信息)、MemInfo(內存信息)、FPSInfo(幀率信息)、NetInfo(網絡流量信息) ,使用者可以從 Info 派生子類來實現自己的采集需求
    • task.py :測試場景的腳本,其中定義了父類 Task,因為沒有固定的測試場景,因此使用者需要從 Task 派生子類并重寫 Task#execute 方法來自定義的測試場景,自定義方式可參考:https://github.com/openatx/uiautomator2
    • info_task.py :測試場景和采集信息靈活結合的腳本,使用者不需要用到
    • utils.py :工具方法腳本
    • _main_.py :任務運行的入口腳本,當沒有具體的測試場景,只是想采集指定時間段的信息,直接運行該腳本

    參數說明

    • -s:必選參數,指定設備號,可通過 adb devices 獲取
    • -a:必選參數,要測試進程的 applicationId
    • -f:可選參數,采樣間隔,單位為秒,不建議設置太短,最好是大于 0.1s,默認是 1s
    • -d:可選參數,采樣持續時間,默認為10s
    • -i:可選參數,需要采集的信息,可以設置多個,目前可選的有四個,分別為 cpu、mem、fps、net ,用 "," 隔開,如 -i cpu,mem,fps,net
    • -o:可選參數,采集到的信息的輸出目錄,如 "." 表示當前腳本所在的目錄,默認為 "."

    生成文件說明

    采集到的信息根據信息類型分別存放在指定輸出目錄的 cpu_stats、mem_stats、fps_stats、net_stats 四個子目錄下,文件名為 信息類型_設備號_applicationId_版本號_測試場景名_時間戳 ,如 cpu_d3c2edaa_video.like_RecordVideo_1.9.9_1524122928.csv.csv ,實際效果大致如下圖

    輸出文件為 csv 文件,直接打開和用 Excel 打開的效果分別如下圖

    另外可以為測試的每個階段添加一個節點說明

    task.period = "idle"

    生成類似如下的圖

    無自定義測試場景的使用方式

    適用于沒有具體測試場景,在腳本運行之后一段時間內都處于采集狀態的情況,持續時間可以通過配置參數指定,過程中使用者可以隨意操作手機。通過命令行直接運行 _main_.py 腳本文件,并指定相關參數 比方說我要采集 applicationId 為 video.like 這個應用 10s 內的 cpu 信息和內存信息,采樣間隔為 200ms,輸出目錄為當前目錄,那么可以在腳本所在的目錄執行以下命令

    python _main_.py -s 設備號-a video.like -f 0.2 -d 10 -i mem,cpu -o .

    腳本運行結束之后可以在根目錄下看到如下圖所示的文件生成

    注:要帶 -d 參數,指定采集的持續時間,否則腳本默認運行 10s,并且無需 -t 參數,默認測試場景名為 Random

    自定義測試場景的使用方式

    自定義測試場景不能直接調用 _main_.py 腳本,需要創建新的腳本,繼承 task.py#Task 并重寫 Task#execute 方法,在 Task#execute 中實現自定義測試場景的邏輯,如下圖所示:

    這里創建了名為 start_app.py 的腳本,運行命令:

    python start_app.py -s 設備號-a 進程名 -f 0.1 -i cpu,mem -o .

    就可以啟動對應的 APP,并采集 CPU 信息和內存信息,采樣間隔為 100ms,輸出到當前目錄。注意這里沒有了 -d 參數,因為采集的持續時間以測試任務的持續時間的持續時間為準,設置的參數一定要按照說明來,否則不能采集到數據 如果想采集自定義的信息,可以繼承 info.py#Info 并重寫 Info#get_start_info 和 Info#get_end_info 方法,可參考已實現的四種信息采集的寫法,最后通過 Task#add_info 方法添加。

    自定義好測試場景之后,調用 _main_#main 方法,傳入測試場景實例,測試場景的名稱會作為輸出文件命名的一部分,這里最好取能準確表達測試場景的名稱,如某個 APP 錄制視頻測試場景的名稱為 RecordVideo 采集到的信息可通過 Excel 制成圖表,以下是完整錄制視頻這個測試場景的 CPU 占比和內存的變化

    通過圖表可以直觀分析應用不同版本和不同場景下的性能狀況

    寫在最后

    以上就是該庫的一些使用介紹。由于工作經驗尚淺,Python 也是現學現用,在寫這個庫時,可能會有許多考慮不周或不完善的地方,有能力的小伙伴可以直接修改該庫,以實現更多自定義功能,另外也希望大家能多用,多發現問題,歡迎 issue,歡迎 star,有新的使用需求和想法也歡迎提出,后續會不斷完善,感謝!

    原文轉自:https://juejin.im/post/5b0d29ea518825157653f947

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>