通过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

标签:python,adb,App,性能
0
投稿

猜你喜欢

  • Linux环境下安装MySQL8.0的完整步骤

    2024-01-22 05:26:47
  • 手把手带你走进Go语言之类型转换

    2024-02-14 23:25:05
  • Mysql给普通分页查询结果加序号实操

    2024-01-16 21:06:07
  • python DataFrame 取差集实例

    2021-06-06 01:22:24
  • Django migrations 默认目录修改的方法教程

    2021-10-15 20:17:59
  • 一文搞懂MySQL预编译

    2024-01-25 21:52:21
  • python带你探寻WSGI Application原理

    2022-03-25 19:35:55
  • 两个asp函数实现javascript的escape函数和unescape函数功能

    2009-02-04 15:47:00
  • 一篇文章告诉你如何用Python控制Excel实现自动化办公

    2022-02-03 17:07:59
  • Python中max函数用于二维列表的实例

    2022-07-04 15:49:55
  • VUE实现图片验证码功能

    2023-07-02 16:56:57
  • PyTorch Dataset与DataLoader使用超详细讲解

    2021-05-12 16:43:43
  • ChatGPT 帮我自动编写 Python 爬虫脚本的详细过程

    2021-09-09 09:13:50
  • asp如何写入超长的字符串?

    2010-06-09 18:53:00
  • 对python中基于tcp协议的通信(数据传输)实例讲解

    2023-04-18 14:36:10
  • Python学习笔记_数据排序方法

    2022-03-07 01:28:33
  • Python使用文件操作实现一个XX信息管理系统的示例

    2022-07-12 15:28:31
  • 对Python新手编程过程中如何规避一些常见问题的建议

    2021-04-01 19:27:16
  • i++循环与i-–循环的执行效率(递增与递减效率)

    2023-05-28 03:07:40
  • Python 如何在字符串中插入变量

    2023-02-16 11:06:27
  • asp之家 网络编程 m.aspxhome.com