通过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多进程共享变量
Apr 06 Python
python实现的多线程端口扫描功能示例
Jan 21 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
Python实现购物车程序
Apr 16 Python
在CMD命令行中运行python脚本的方法
May 12 Python
mac 安装python网络请求包requests方法
Jun 13 Python
numpy.where() 用法详解
May 27 Python
python保存字典和读取字典的实例代码
Jul 07 Python
对python中list的五种查找方法说明
Jul 13 Python
Python 爬虫的原理
Jul 30 Python
Python爬虫之爬取某文库文档数据
Apr 21 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应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
python操作gmail实例
2015/01/14 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
利用Python实现图书超期提醒
2016/08/02 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
Python面向对象之继承代码详解
2018/01/29 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
宣传部部长竞选演讲稿
2014/04/26 职场文书
物业品质提升方案
2014/06/08 职场文书
保险公司演讲稿
2014/09/02 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
先进个人自荐书
2015/03/06 职场文书
确保工程质量承诺书
2015/04/29 职场文书
社区低保工作总结2015
2015/07/23 职场文书
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL