通过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通过索引遍历列表的方法
May 04 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
Python中的字符串操作和编码Unicode详解
Jan 18 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
python批量复制图片到另一个文件夹
Sep 17 Python
Python如何实现转换URL详解
Jul 02 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
python与js主要区别点总结
Sep 13 Python
Python使用tkinter实现小时钟效果
Feb 22 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_Flame(Version:Progress)的原代码
2006/10/09 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
js活用事件触发对象动作
2008/08/10 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
jQuery实现菜单栏导航效果
2017/08/15 jQuery
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
node使用mysql获取数据库数据中文乱码问题的解决
2019/12/02 Javascript
python实现一个简单的并查集的示例代码
2018/03/19 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
Python中过滤字符串列表的方法
2020/12/22 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
Bibloo罗马尼亚网站:女装、男装、童装及鞋子和配饰
2019/07/20 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
费用会计岗位职责
2014/01/01 职场文书
请假条格式范文
2014/04/10 职场文书
住房抵押登记委托书
2014/09/27 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
质量整改报告范文
2014/11/08 职场文书
经济纠纷起诉状
2015/05/20 职场文书
投资入股协议书
2016/03/22 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
用JS实现飞机大战小游戏
2021/06/09 Javascript
java项目构建Gradle的使用教程
2022/03/24 Java/Android
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python