通过python调用adb命令对App进行性能测试方式
作者:WAIT Y
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进行性能测试方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。