通过python调用adb命令对App进行性能测试方式
作者:WAIT Y 发布时间:2023-10-05 06:24:25
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'
来源:https://blog.csdn.net/x83853684/article/details/80643252


猜你喜欢
- 引言上次介绍到rank0的机器生成了ncclUniqueId,并完成了机器的bootstrap网络和通信网络的初始化,这节接着看下所有节点间
- 笔者在网上找了很多关于VSCODE配置Go语言的教程,但是由于版本等种种问题,最终都已失败告终。无奈只能在官方文档上寻求帮助,现在终于可以了
- 一.问题:太久没用mysql ,忘记了原先的root密码二:解决1.关闭mysql服务2.使用cd指令切换到mysql的bin目录使用mys
- 像素是计算机视觉中图像的重要属性。它们是表示图像 * 定空间中光的颜色强度的数值,是图像中数据的最小单位。图像中的像素总数是高度、宽度和通道的
- 在上篇文章给大家介绍了:MySQL8.0.20安装教程及其安装问题详细教程 https://www.jb51.net/artic
- 如何实现优惠打折? 代码及说明见下:<%@ LANG
- MYSQL中的分组和链接是在操作数据库和数据交互时最常用的两个在功能,把这两项处理好了,MYSQL的执行效率会非常高速。一、group by
- 本文实例讲述了PHP实现绘制二叉树图形显示功能。分享给大家供大家参考,具体如下:前言:最近老师布置了一个作业:理解并实现平衡二叉树和红黑树,
- 模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等复习一下基本的正则表达式吧 .:匹配除了换行符以为的任意单个字符&nbs
- 1.安装wkhtmltopdf下载地址:https://wkhtmltopdf.org/downloads.html我测试用的是window
- 在实际工作或面试中,我们经常会遇到“数组去重”问题,接下来就是使用js实现的数组去重的多种方法:1.将数组的每一个元素依次与其他元素做比较,
- 使用MSSQL的站长朋友都会被MSSQL数据库吃内存的能力佩服得五体投地,一个小小的网站,运行若干天之后,MSSQL就会把服务器上所有的内存
- ---- ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调
- 引言Python中的并发编程允许你同时执行多个任务,提高程序的运行效率。在本文中,我们将介绍Python中的asyncio库,它是一个基于异
- 问题分析在关闭数据库的命令发现mysql关不了,提示Warning: World-writable config file '/et
- 一、定义字典是一系列的键-值对,键与值之间用冒号隔开,而键-值对之间用逗号隔开,其中的“键”和&am
- 一、lower():将大写字母全部转为小写字母。如:name='G'b=name.lower()二、title”"
- 为了组织search线的设计师交流会,特地去准备了一些资料。《SERP 2010》是其中一个,但是由于时间关系没有进行讨论。原著是英文报告,
- 本文实例讲述了PHP封装的PDO数据库操作类。分享给大家供大家参考,具体如下:<?phpclass DatabaseHandler {
- 前言用过Pandas和openpyxl库的同学都知道,这两个库是相互互补的。Pandas绝对是Python中处理Excel最快、最好用的库,