通过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结合API实现即时天气信息
Jan 19 Python
Pycharm学习教程(7)虚拟机VM的配置教程
May 04 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
Python之list对应元素求和的方法
Jun 28 Python
设置python3为默认python的方法
Oct 31 Python
python中实现控制小数点位数的方法
Jan 24 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Python文件操作基础流程解析
Mar 19 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
如何基于matlab相机标定导出xml文件
Nov 02 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
php中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
Using the TextRange Object
2006/10/14 Javascript
javascript 控制弹出窗口
2007/04/10 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
JS 判断代码全收集
2009/04/28 Javascript
JavaScript null和undefined区别分析
2009/10/14 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
浅谈python多线程和队列管理shell程序
2015/08/04 Python
关于Python的一些学习总结
2018/05/25 Python
python读取和保存图片5种方法对比
2018/09/12 Python
浅谈Python中的bs4基础
2018/10/21 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
python里反向传播算法详解
2020/11/22 Python
CSS3 简写animation
2012/05/10 HTML / CSS
墨西哥网上超市:Superama
2018/07/10 全球购物
联想C++笔试题
2012/06/13 面试题
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
办理退休介绍信
2014/01/09 职场文书
七年级生物教学反思
2014/01/30 职场文书
初二学习计划书范文
2014/04/27 职场文书
委托函范文
2015/01/29 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
护士医德医风心得体会
2016/01/25 职场文书