1. adb shell top
top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序.
top 用法

>adb shell top -h
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [-t ] [ -h ]-m num  Maximum number of processes to display. 最多显示多少个进程-n num  Updates to show before exiting.  刷新次数 -d num  Seconds to wait between updates. 刷新间隔时间(默认5秒)-s col  Column to sort by (cpu,vss,rss,thr). 按哪列排序 -t      Show threads instead of processes. 显示线程信息而不是进程-h      Display this help screen.  显示帮助文档

adb shell top

User 13%, System 5%, IOW 0%, IRQ 0%
User 85 + Nice 0 + Sys 37 + Idle 509 + IOW 0 + IRQ 0 + SIRQ 0 = 631

PID PR CPU% S #THR VSS RSS PCY UID Name
0 13% S 56 423416K 88160K fg u0_a92 com.tmall.wireless
1 2% R 1 1232K 536K root top
0 1% S 46 341712K 40872K fg u0_a90 com.wandoujia.phoenix2.usbproxy
1 1% S 31 319976K 33284K fg u0_a74 com.android.Chinpower
0 1% S 32 67320K 20552K fg system /system/bin/surfaceflinger
0 1% S 112 445876K 80304K fg system system_server

0 0% S 1 0K 0K root watchdog/0
1 0% S 1 0K 0K root khelper
1 0% S 1 0K 0K root suspend_sys_syn
1 0% S 1 0K 0K root suspend

第一组数据的含义:

User 处于用户态的运行时间,不包含优先值为负进程
Nice 优先值为负的进程所占用的CPU时间
Sys 处于核心态的运行时间
Idle 除IO等待时间以外的其它等待时间
IOW IO等待时间
IRQ 硬中断时间
SIRQ 软中断时间

第二组数据的含义:

PID 进程id
PR 优先级
CPU% 当前瞬时CPU占用率
S 进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程
#THR 程序当前所用的线程数
VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PCY 调度策略优先级,SP_BACKGROUND/SP_FOREGROUND
UID 进程所有者的用户id
Name 进程的名称

监控CPU的命令使用实战
C:\Users\THINK>adb shell top -m 5 -n 2 -d 3 -s cpu | findstr phone >d:\app\phone.txt
打印 top命令,并查找包含 phone 的命令行,输出至 d:\phone.txt

2. adb logcat
常用命令

1.adb logcat -v time
2.adb logcat -v time > D:\log.txt
3.adb logcat -c     #查看日志前,最好先清除以前的日志
查看app上正在运行的进程
C:\Users\THINK>adb shell "ps | grep qqmusic"
u0_a41    4817  1625  1536108 177820 ffffffff b765f07b S com.tencent.qqmusic
u0_a41    4876  1625  1444484 126760 ffffffff b765f07b S com.tencent.qqmusic:QQPlayerService

3. 查看第三方包:adb shell pm list packages -3
查看启动activity.

C:\Users\THINK>adb shell monkey -p com.tencent.qqmusic -vvv 1

在日志中查找:cmp=com.tencent.qqmusic/.activity.AppStarterActivity

4. 启动app:adb shell am start -W -n package/.activity

C:\Users\THINK>adb shell am start -W -n com.tencent.qqmusic/.activity.AppStarterActivity
Starting: Intent { cmp=com.tencent.qqmusic/.activity.AppStarterActivity }
Status: ok
Activity: com.tencent.qqmusic/.activity.AppStarterActivity
ThisTime: 1178
TotalTime: 1178
Complete

5.关闭app:adb shell am force-stop package

C:\Users\THINK>adb shell am force-stop com.tencent.qqmusicC:\Users\THINK>

6.实战
1):编写python 脚本统计vwill app的启动时间。
代码如下:

import csv
import os
import timeclass AppStartTime(object):def __init__(self, count):self.count = countself.alldata = [("timestamp", "elapsetime")]# 单次启动过程def monitoring(self):#result1 = os.popen("adb shell am start -W -n com.tencent.qqmusic/.activity.AppStarterActivity")result = os.popen("adb shell am start -W -n com.xyy.vwill/.MainActivity")qqtime=-1for line in result.readlines():#注意:有可能出现启动超时,引发异常try:if 'TotalTime' in line:qqtime=line.split(":")[1].strip()except:print('Status: timeout')print(line)currenttime = self.getCurrentTime()print("current time is:"+currenttime)self.alldata.append([currenttime, qqtime])time.sleep(1)#关闭appos.popen("adb shell am force-stop com.xyy.vwill")#后台运行#os.popen("adb shell input keyevent 3")print(self.alldata)# 多次执行监控过程def run(self):while self.count > 0:self.monitoring()self.count = self.count - 1time.sleep(5)# 获取当前的时间戳def getCurrentTime(self):currentTime = time.strftime("%H:%M:%S", time.localtime())return currentTime# 数据的存储def SaveDataToCSV(self):csvfile = open('appstarttime.csv', 'w',encoding='utf8',newline='')writer = csv.writer(csvfile)writer.writerows(self.alldata)csvfile.close()if __name__ == "__main__":appstart=AppStartTime(10)appstart.run()appstart.SaveDataToCSV()

运行结果及分析:

2)编写python脚本收集QQ音乐 app cup使用情况。
代码如下:

import csv
import os
import time# 监控CPU资源信息
class MonitoringCPUResources(object):def __init__(self, count):self.count = countself.alldata = [("timestamp", "cpustatus")]# 单次执行监控过程def monitoring(self):result = os.popen("adb shell dumpsys cpuinfo | findstr com.tencent.qqmusic")cpuvalue = result.readline().split("%")[0].strip()currenttime = self.getCurrentTime()print("current time is:"+currenttime)print("cpu used is:" + cpuvalue)self.alldata.append([currenttime, cpuvalue])# 多次执行监控过程def run(self):while self.count > 0:self.monitoring()self.count = self.count - 1time.sleep(3)# 获取当前的时间戳def getCurrentTime(self):currentTime = time.strftime("%H:%M:%S", time.localtime())return currentTime# 数据的存储def SaveDataToCSV(self):csvfile = open('cpustatus.csv', 'w',encoding='utf8',newline='')writer = csv.writer(csvfile)writer.writerows(self.alldata)csvfile.close()def count_cpu():monitoringCPUResources = MonitoringCPUResources(30)monitoringCPUResources.run()monitoringCPUResources.SaveDataToCSV()
if __name__ == "__main__":count_cpu()

运行结果:

【app性能测试】Python脚本监控app指标相关推荐

  1. 写了个Python脚本监控nginx进程

    写了个Python脚本监控nginx进程 « Xiaoxia[PG] 写了个Python脚本监控nginx进程 接上一文用iptables让SSH服务对陌生人说不.还是有点担心这个学期内,nginx可 ...

  2. python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客

    python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客 python脚本监控网站状态 2013-01-09 09:21:02 标签:监控 python 原创作品,允许转载,转载时请 ...

  3. APP性能测试的6项关键指标及测试获取手段

    如何把rom测试和手机预装APP测试得更好,用户体验.流畅度.功耗.启动时长等指标是中兴努比亚手机产品线最关注的层面.本文将从APP性能维度.性能测试平台等维度全面讲解中兴努比亚APP专项性能测试和监 ...

  4. App性能测试——使用GT监控手机流量

    使用GT测试流量: 对流量要求没有那么严格的话可以在安卓的设置里面查看 Wireshark:抓包分析工具,也提供了安卓手机的抓包实现,GT中抓包的功能就是 在其提供的实现基础上的易用性封装起来,在本次 ...

  5. 移动App性能测试包含哪些内容?App性能测试工具有哪些?

    随着互联网高科技的蓬勃发展,移动app的的需求量和供给量都较大.但一款好app的成功上线以及为用户带来高效体验,性能测试起着关键性的作用.性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条 ...

  6. python可以开发app吗-python可以写APP吗(python能做手机软件吗)

    一枚程序媛程序媛2 人赞同了该文章用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲这里介绍几款可以在手机上编程的a ...

  7. python脚本监控docker容器

    脚本功能: 监控CPU使用率 监控内存使用状况 监控网络流量 #!/usr/bin/env python # --*-- coding:UTF-8 --*-- import sys import ta ...

  8. python脚本监控mysql数据库_Python脚本监控mysql数据库,Python脚本监控mongo数据库

    任务:应帅气的领导要求,需要监控生产环境mysql和mongo数据库服务.不仅要connect successful还要进行数据交互进一步确认数据库服务正常. 思路: mysql和mongo 数据库i ...

  9. Android app+ESP32-CAM实现远程监控app

    文章目录 目录 前言 一.ESP32-CAM设备准备 二.设备接线 三. Arduino获取视频IP地址以及端口 四.在Android studio上代码实现 总结 前言 最近打比赛创新点需要在app ...

最新文章

  1. Bit-Z为什么成为熊市之光?
  2. 无法复制winevt中的文件_u盘文件无法复制怎么解决 u盘文件无法复制解决方法【详细步骤】...
  3. img、列表和table标签
  4. IDBI的完整格式是什么?
  5. Spring+Spring Boot+Mybatis框架注解解析
  6. SQL允许你用EXECUTE执行一个变量中定义的SQL语句,并且允许你在被执行的SQL语句中,再次嵌套入一个变量定义的语句,并且再次在其中用EXECUTE执行它...
  7. Linux Kernel代码艺术——数组初始化
  8. (4.10)mysql备份还原——利用binlog+全备恢复误删表【不推荐使用】
  9. 堆(基本介绍,代码实现,以及例题)
  10. SQL Sever 2008 R2安装步骤
  11. nginx 映射ip端口服务
  12. linux 网桥代码分析之网桥端口设备接收数据包处理分析Ⅴ
  13. 写好一份属于自己的简历
  14. 【FTP】FTP连接时出现“227 Entering Passive Mode”的解决方法
  15. 8种网页数据的采集工具
  16. 802.11成帧封装实现(五)
  17. 感光法制作PCB(手工制板)
  18. php 银行支付通道_使用php实现快钱支付功能(涉及到接口)
  19. eclipse汉化方式(下载,安装,中英切换)
  20. Android学习——广告植入

热门文章

  1. BigDecimal实现末尾去掉无用0
  2. java之简介ASCII码表
  3. sdcard-dma
  4. 微信小程序使用MQTT.JS中遇到的问题
  5. mysql 同步 结构_mysqlSync
  6. 自媒体运营要素有哪些
  7. 重生云计算机,云清的重生
  8. SpringCloud Alibaba 学习
  9. Net core学习系列(一)——Net Core介绍
  10. Outlook中添加中国农历节日