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. Failed to start /etc/rc.d/rc.local Compatibility

    查看/var/log/message Jun :: root systemd: Started Network Manager. Jun :: root systemd: Starting LSB: ...

  2. 如何判断app的页面是原生的还是H5的webview页面

    1.看布局边界(在手机侧观察) 开发者选项->显示布局边界,页面元素很多的情况下布局是一整块的是h5的,布局密密麻麻的是原生控件.页面有布局的是原生的,否则为h5页面.(仅针对安卓手机试用)如下 ...

  3. SpringBoot标准Properties

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  4. plsql连接数据库出现乱码

    在windows中创 建一个名为"NLS_LANG"的系统环境变量,设置其值为"SIMPLIFIED CHINESE_CHINA.ZHS16GBK", sele ...

  5. FAST MONTE CARLO ALGORITHMS FOR MATRICES II (快速的矩阵分解策略)

    目录 问题 算法 LINEARTIMESVD 算法 CONSTANTTIMESVD 算法 理论 算法1的理论 算法2 的理论 代码 Drineas P, Kannan R, Mahoney M W, ...

  6. MySQL单向加密函数

    select encode('pual','zhangxueliang'); select md5('zhangxueliang'); 加密为null,不显示字段值: select ENCRYPT(& ...

  7. java多线程中 volatile与synchronized的区别-阿里面试

    volatile 与 synchronized 的比较(阿里面试官问的问题) ①volatile轻量级,只能修饰变量.synchronized重量级,还可修饰方法 ②volatile只能保证数据的可见 ...

  8. Visualize Code with Visual Studio

    In this post, App Dev Manager Ed Tovsen spotlight the features and benefits of Code Maps in Visual S ...

  9. C++/CLI泛型应用

    2019年01月16日, QQ群友不知道要折腾什么, 提出了以下问题: 样例代码中的是C#语言写的, 翻译成C++/CLI就不会了, 于是我试着谢了一下, 发现可以实现, 于是就贴出来与大家分享, 源 ...

  10. SD第九届省赛B题 Bullet

    Bullet Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description In G ...