CPU---监控值的获取方法、脚本实现和数据分析

1、获取CPU状态数据

adb shell dumpsys cpuinfo | findstr packagename

自动化测试脚本见cpustatus.py

数据分析:做曲线图,可看出随着用户使用,CPU使用率逐渐增高,达到40%多,40%多是否是合理的值呢?

需要取经验值,再测20-30分钟,看CPU使用率是不是恒定的,如果是恒定的,并且这个值又在当前系统支持下的一个合理的范围,那么就是合理的。如果CPU使用率一直上升不下降到80%多,那么这个软件就有问题,应该去找开发人员解决。

流量--监控值的获取方法、脚本实现和数据分析

1、获取当前进程ID 指令

adb shell ps | findstr packagename

2、获取进程ID 流量数据

adb shell cat/proc/id/net/dev

Receive  代表APP接受的数据  Transmit 代表App发出的请求的数据

流量 = Receive + Transmit

lo:代表本地(localhost),不用统计

eth0, eth1:代表有两个网卡,都会有流量的输出,需要统计流量值。

滑动页面,使它有流量消耗,前后流量的差值(两次获取流量数据)就是流量消耗值。

3、代码见traffic.py ,代码有问题,还没解决

电量--监控值的获取方法

获取电量

adb shell dumpsys battery   (看level值)

首先保证手机是非充电状态

切换非充电状态

adb shell dumpsys battery set status 1

代码power.py

内存--监控值的获取方法

获取内存

adb shell top

VSS - Virtual Set Size  虚拟耗用内存

RSS - Resident Set Size 实际使用物理内存

数据的采集:

adb shell top -d 1  #数据每一秒刷新一次

把数据重定向到meminfo

adb shell top -d 1 > meminfo

#/usr/bin/python#encoding:utf-8import csvimport osimport time
#控制类class Controller(object):    def __init__(self, count):        #定义测试的次数        self.counter = count        #定义收集数据的数组        self.alldata = [("timestamp", "power")]
    #单次测试过程    def testprocess(self):        #执行获取电量的命令        result = os.popen("adb shell dumpsys battery")        #获取电量的level        for line in result:            if "level" in line:                power = line.split(":")[1]
        #获取当前时间        currenttime = self.getCurrentTime()        #将获取到的数据存到数组中        self.alldata.append((currenttime, power))
    #多次测试过程控制    def run(self):        #设置手机进入非充电状态        os.popen("adb shell dumpsys battery set status 1")        while self.counter >0:            self.testprocess()            self.counter = self.counter - 1            #每5秒钟采集一次数据            time.sleep(5)
    #获取当前的时间戳    def getCurrentTime(self):        currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())        return currentTime
    #数据的存储    def SaveDataToCSV(self):        csvfile = file('meminfo.csv', 'wb')        writer = csv.writer(csvfile)        writer.writerows(self.alldata)        csvfile.close()
if __name__ == "__main__":    controller = Controller(5)    controller.run()    controller.SaveDataToCSV()

Android App性能测试之二:CPU、流量的更多相关文章

  1. Android App性能测试之adb命令

    本篇文章总结了Android App性能测试过程中常用的adb命令.通过这些adb命令,可以查看App的性能数据,为评判性能好坏作参考. CPU相关 显示占用CPU最大的5个应用 adb shell ...

  2. Android APP 性能测试之 GT 工具

    一.介绍: GT(随身调)是 APP 的随身调测平台,它是直接运行在手机上的"集成调测环境"(IDTE, Integrated Debug Environment).利用 GT,仅 ...

  3. Android APP 性能优化的一些思考

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  4. Android app 性能优化的思考--性能卡顿不好的原因在哪?

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  5. 包建强的培训课程(9):Android App性能优化

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  6. android app性能优化大汇总

    这里根据网络上各位大神已经总结的知识内容做一个大汇总,作为记录,方便后续“温故知新”. 性能指标: (1)使用流畅度:  图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染.高的帧率可以 ...

  7. Android APP性能分析方法及工具

    近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借 ...

  8. 十大技巧优化Android App性能

    无论锤子还是茄子手机的不断冒出,Android系统的手机市场占有率目前来说还是最大的,因此基于Android开发的App数量也是很庞大的. 那么,如何能开发出更高性能的Android App?相信是软 ...

  9. 优化Android App性能?十大技巧必知!

    无论锤子还是茄子手机的不断冒出,Android系统的手机市场占有率目前来说还是最大的,因此基于Android开发的App数量也是很庞大的.那么,如何能开发出更高性能的Android App?相信是软件 ...

随机推荐

  1. Linux中Tomcat设置开机启动

    设置方法 1.修改/etc/rc.d/rc.local,使用vi /etc/rc.d/rc.local 命令 2.在/etc/rc.d/rc.local文件最后添加下面两行脚本 export JAVA ...

  2. koa 路由配置

    Koa 路由 路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET.POST 等) 组成的,涉及到应用如何响应客户端对某个网站节点的访问. 通俗的讲:路由就是根据不 ...

  3. SQL 和 NoSQL 的区别

    一.概念 SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源). No ...

  4. 【转】Android中保持Service的存活

    这几天一直在准备考试,总算有个半天时间可以休息下,写写博客. 如何让Service keep alive是一个很常见的问题. 在APP开发过程中,需要Service持续提供服务的应用场景太多了,比如闹 ...

  5. MariaDB第三章:数据库设计与备份--小白博客

    数据库设计 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 2.第二范式(确保表中的每列都和主键相关) 第 ...

  6. 安卓调试工具adb返回的png截图,直接输出到控制台的修复问题

    原始出处:www.cnblogs.com/Charltsing/p/adbpngfix.html QQ:564955427 adb由于兼容性问题,会把0a替换成0d0a输出到控制台,这会造成png图片 ...

  7. 布局无法发送,布局发布状态停留在“Transferring”,进度停留在 0%

    按顺序检查如下: 1. 检查Player是否在线?不在线则无法发送任何内容,进度会停留在0%,待Player下次在线时,任务自动开始传输. Player在线,Messenger上可以看到Player名 ...

  8. Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool

    Apache Tomcat 7 Configuration Reference (7.0.93) - The Executor (thread pool)https://tomcat.apache.o ...

  9. Django(一) 安装使用基础

    大纲 安装Django 1.创建Django工程 2.创建Django app 3.写一个简单的登录注册相应页面 4.获取用户请求信息并处理 5.前后端交互 6.Django 请求 生命周期  跳转到 ...

  10. deepin配置Oracle JDK

    这里记录一下入手deepin后,安装JDK的过程,和之前的CentOS有些不同 本篇参考了两篇博客 1 2 第一篇有些问题,在第二篇中找到了解决方案 接下来是操作过程: 检查本机自带的OpenJDK, ...