通過python呼叫adb命令對App進行效能測試方式
1 監聽啟動activity 資訊命令adb shell logcat | grep START 可以檢視apk包名和Activity名字
=========啟動時間============
2 冷啟動(第一次啟動)熱啟動(沒有退出,第二次開啟)命令 adb shell am start -W -n com.qihoo.appstore/.home.MainActivity
3 停止app命令(冷啟動) adb shell am force-stop com.qihoo.appstore
(熱啟動方式退出) adb shell input keyevent 3
python 來實現方式
1定義App類方法有startApp stopApp getStartTime
2 Manager類 方法 testRunTime(執行單次) run 開啟執行
==============cpu=================
檢視cpu資料
adb shell dumpsys cpuinfo | findstr com.qihoo.appstore
注意 window 下必須把grep 換成 findstr
==================記憶體=========================
第一種
adb shell dumpsys meminfo com.qihoo.appstore
第二種方式
1 執行adb shell top >f:/meminfo.txt 一段時間後
2 再 解讀檔案資訊
===============流量===================
1獲取當前程序的adb shell ps | findstr com.qihoo.appstore
adb shell cat /proc/pid/net/dev
=================電量======================
執行獲取電量的命令 adb shell dumpsys battery
設定手機進入非充電狀態 adb shell dumpsys battery set status 1
=================幀率===fps===================
adb shell dumpsys gfxinfo com.qihoo.appstore > f:/fps.txt
Draw:表示在Java中建立顯示列表部分中,OnDraw()方法佔用的時間。
Process:表示渲染引擎執行顯示列表所花的時間,view越多,時間就越長
Execute:表示把一幀資料傳送到螢幕上排版顯示實際花費的時間。其實是實際顯示幀資料的後臺快取區與前臺緩衝區交換後並將前臺緩衝區的內容顯示到螢幕上的時間。
Draw + Process + Execute = 完整顯示一幀 ,這個時間要小於16ms才能保證每秒60幀。
取得資料後,複製到excel中生成堆積柱狀圖。
補充知識:python呼叫adb命令進行手機操作
Python中執行cmd命令可以用到os和subprocess兩個模組。
區別在於os是阻塞式的,subprocess是非阻塞式的,所以一般我們使用subprocess是比較適合的。
接下來我先舉一個查詢連線裝置的命令來看看python中怎麼樣的寫法。用到的命令為 adb devices。
方式一:
import os
os.system('adb devices') #獲取連線裝置
執行結果
List of devices attached
Q8DCGQA6JBQRSAI device
方式二:
import subprocess order='adb devices' #獲取連線裝置 pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE) print(pi.stdout.read()) #列印結果
執行結果
b'List of devices attached\r\AQ8DCGQA6JBQRSAI\tdevice\r\n\r\n'
以上這篇通過python呼叫adb命令對App進行效能測試方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。