通过python调用adb命令对App进行性能测试方式


Posted in Python onApril 23, 2020

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进行性能测试方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用item()方法遍历字典的例子
Aug 26 Python
Python中类型检查的详细介绍
Feb 13 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
使用PYTHON解析Wireshark的PCAP文件方法
Jul 23 Python
python实现贪吃蛇游戏源码
Mar 21 Python
Python tornado上传文件的功能
Mar 26 Python
Python自带的IDE在哪里
Jul 01 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
解决python3中os.popen()出错的问题
Nov 19 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
解决python存数据库速度太慢的问题
Apr 23 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 #Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 #Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 #Python
Django调用百度AI接口实现人脸注册登录代码实例
Apr 23 #Python
Anaconda和ipython环境适配的实现
Apr 22 #Python
Django框架获取form表单数据方式总结
Apr 22 #Python
Anaconda的安装及其环境变量的配置详解
Apr 22 #Python
You might like
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
2012/03/26 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
laravel异步监控定时调度器实例详解
2019/06/21 PHP
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
python生成器表达式和列表解析
2016/03/10 Python
python简单验证码识别的实现方法
2019/05/10 Python
django 类视图的使用方法详解
2019/07/24 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
python实现与redis交互操作详解
2020/04/21 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
HTML5标签大全
2016/11/23 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
教师职称自我鉴定
2014/02/12 职场文书
十岁生日答谢词
2015/01/05 职场文书
英语读书笔记
2015/07/02 职场文书
消费者理赔投诉书
2015/07/02 职场文书
Python time库的时间时钟处理
2021/05/02 Python
Python合并pdf文件的工具
2021/07/01 Python
Oracle 多表查询基本语法实例
2022/04/18 Oracle
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL