手机终端app内存CPU测试

1、Android端内存测试,可以通过adb命令:

adb shell dumpsys meminfo <package_name>

Dalvik : dalvik使用的内存
Native : native堆上的内存
Other dev: 除了dalvik和native的内存
Pss : 指将共享内存按比例分配到使用了共享内存的进程
Alloc: 已使用的内存
Free : 空闲的内存
Private Dirty : 非共享,又不能被换页出去的内存
Share Dirty : 共享,但有不能被换页出去的内存
Total 的 PSS 信息,这个值就是应用正真占用的内存大小

重点关注如下几个字段:
  1) Native/Dalvik 的 Heap 信息,具体在上面的第一行和第二行,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。
  2) Total 的 PSS 信息,这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。

2、Android端CPU测试

1)使用android提供的adb shell dumpsys cpuinfo |packagename来获取当前CPU使用率
2)使用top命令 adb shell top |grep packagename 来获取实时CPU使用率

top命令中每项参数含义:
PID:应用程序在系统中的ID;
CPU%:当前瞬时所以使用CPU占用率;

S:进程的状态,
其中S表示休眠,R表示正在运行;
Z:表示僵死状态,N表示该进程优先值是负数;
#THR:程序当前所用的线程数;
VSS : 虚拟耗用内存;
RSS : 实际使用物理内存;
PCY:前台(fg)和后台(bg)进程;
UID:运行当前进程的用户ID;
Name : 应用程序名称。

可以通过Python2脚本输出内存和CPU情况:

使用系统cmd命令,在一定时间内操作应用,实时监控内存CPU变化,最后计算出内存均值和峰值。

# encoding:utf-8
import os
import tempfile
import time
import re

def run_once_mem(cmd):
    #     out_file = ‘mem_out.tmp.txt.%s‘ % time.time()
    #     err_file = ‘mem_err.tmp.txt.%s‘ % time.time()
    #     cmd = ‘%(cmd)s 1>>%(out)s 2>>%(err)s‘ % {
    #             ‘cmd‘: cmd,
    #
    #             ‘out‘: out_file,
    #             ‘err‘: err_file
    #         }
    #     return_code = os.system(cmd)
    #
    #     f1 = open(out_file)
    #     stdout = f1.read()
    #     f2 = open(err_file)
    #     stderr = f2.read()
    #     f1.close()
    #     f2.close()

    result = os.popen(cmd)
    stdout = result.read()
    return stdout, 0, 0

def run_once_cpu(cmd):
    #     out_file = ‘cpu_out.tmp.txt.%s‘ % time.time()
    #     err_file = ‘cpu_err.tmp.txt.%s‘ % time.time()
    #     cmd = ‘%(cmd)s 1>>%(out)s 2>>%(err)s‘ % {
    #             ‘cmd‘: cmd,
    #             ‘out‘: out_file,
    #             ‘err‘: err_file
    #         }
    #     return_code = os.system(cmd)
    #     f1 = open(out_file)
    #     stdout = f1.read()
    #     f2 = open(err_file)
    #     stderr = f2.read()
    #     f1.close()
    #     f2.close()
    result = os.popen(cmd)
    stdout = result.read()
    return stdout, 0, 0

i = 0
file_name = ‘res2.txt‘
if os.path.exists(file_name):
    os.remove(file_name)
# f = open(file_name, ‘a+‘)
summem = countmem = 0
sumcpu = countcpu = 0
time1 = time.time()
tempcpu = 0
tempmem = 0

# import  os
# result = os.popen("ipconfig")
# print (result.read())
while i < 250:#根据时间修改
    tempsum = 0
    i = i + 1
    #     time.sleep(1)
    cmdmem = ‘adb shell dumpsys meminfo <package_name>‘#修改自己的应用
    outmem, std_errmem, codemem = run_once_mem(cmdmem)

    cmdcpu = ‘adb shell top  -n 1 -d 0.02 |findstr <package_name>‘#修改自己的应用
    outcpu, std_err, codecpu = run_once_cpu(cmdcpu)
    #print(outcpu)
    print i
    # print out
    # print std_err
    # print code

    if codemem == 0:
        #         f.write(outmem)
        mem = re.compile(‘TOTAL[ ]+(\d+)[ ]+.*‘)
        resmem = mem.findall(outmem)
        print (resmem)
        if len(resmem):
            summem += int(resmem[0])
            countmem += 1
            if (tempmem < int(resmem[0])):
                tempmem = int(resmem[0])

    if codecpu == 0:
        cpu = re.compile(‘(\d+)\%.*‘)
        rescpu = cpu.findall(outcpu)
        #print rescpu
        if len(rescpu):
            for iter in range(len(rescpu)):
                tempsum = tempsum + float(rescpu[iter])
            print (tempsum)
            sumcpu += tempsum
            countcpu += 1
            if (tempcpu < tempsum):
                tempcpu = tempsum
time2 = time.time()
time = time2 - time1

print (‘运行时间:‘ + str(time) + ‘ s‘)
print (‘内存均值:‘+str(summem/countmem/1024.0)+‘ MB‘)
print (‘内存峰值:‘+str(tempmem/1024.0)+‘ MB‘)
print (‘cpu均值:‘+str(sumcpu/countcpu)+‘ %‘)
print ‘cpu峰值:‘+str(tempcpu)+‘ %‘

3、iOS端内存CPU测试

使用工具,手机连接电脑,使用xcode-open developer tool - instrument-activity monitor,选择对应的手机对应的应用。查看下方待测应用对应的 %CPU ,CPU time,Real Mem列。

开始后,手机上按照测试用例操作待测应用;
每操作一步,记录real Mem的值 即内存,查看%CPU的值,记录操作过程中的最大值,即峰值;
操作一定时间后,如5分钟;
CPU峰值即为操作过程中记录的最大值;
CPU均值为CPU time/操作时间(S);
内存峰值为操作过程中Real Mem记录的最大值;
内存均值为操作过程中Ream Mem记录下所有值(比如N个值)的和/N。

谢谢查看,持续修改完善!

2019-10-05

原文地址:https://www.cnblogs.com/yuntimer/p/11624245.html

时间: 2024-10-24 20:26:36

手机终端app内存CPU测试的相关文章

APP性能测试工具GT的使用总结:app内存测试

APP性能测试工具GT的使用总结:app内存测试 GT(随身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug Environment).利用GT,仅凭一部手机,无需连接电脑,您即可对APP进行快速的性能测试(CPU.内存.流量.电量.帧率/流畅度等等).开发日志的查看.Crash日志查看.网络数据包的抓取.APP内部参数的调试.真机代码耗时统计等.如果您觉得GT提供的功能还不够满足您的需要,您还可以利用GT提供的基础API自行开发有

手机终端高级测试工程师经验总结

终端测试的生命周期: 无线通信 包括协议.2G/3G/4G.机卡的一致性 2.业务应用 功能模块测试:首先应分析功能模块的功能项,测试每个功能项是否能够实现对应的功能.一般根据测试案例(Test Case)或软件本身的流程就可以完成基本功能测试.(相对简单,故障也较容易解决) 交叉事件测试:又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试.例如通话过程中接收到短信或来响闹.应该以执行干扰的冲突事件不会导致手机死机或花屏等严重的问题. 交叉事件测试非常重

Android性能优化系列---管理你的app内存

 文章出处:http://developer.android.com/training/articles/memory.html#YourApp Random-access memory(RAM)在任何软件开发环境都是稀有资源,在移动操作系统物理内存有限的情况下将显得更加珍贵.虽然Android的Dalvik虚拟机优化了内存回收机制,但我们也要关注你的app的内存分配合和释放 为了垃圾回收器能回收你系统的内存,你应该避免引起内存泄露(通常由全局成员hold了对象引用),而且要在合适的时间点(如生

Android 终端性能测试——内存篇

前言 做Android QQ性能测试时,内存测试中遇到不少困惑,"各种"内存术语,到底什么意思,怎么获取,这里总结一下. 进行的内存测试主要有两个方面,一,OOM的发现和定位,二,同历史版本或竞品的对比测试.关于oom可以用MAT进行分析,具体分析方法参见susanwu在km上的文章<如何使用Memory_Analyzer分析内存泄漏>.下面主要总结一下Android性能测试中常用的方法及解释 一:running services"查看service进程内存 从A

浏览器端javascript调用手机终端本地功能实现02-功能点汇总

上篇博文已经说明,本篇直接进入主题.本篇大致说明总体功能以及代码用途,下篇将功能点逐一详细说明. 功能点包括: 拍照相关接口(camera) 功能函数名称 作用 备注 invokeCamera() 调用摄像头拍照 requestAlbum() 调用相册功能 requestAlbumMulti() 相册多选 requestAlbumMultiUpload() 相册多选完后上传 2. 录音相关接口(media) 功能函数名称 作用 备注 startRecord() 录制音频 stopRecord()

身份证识别,手机银行APP必备插件

手机银行APP(Mobile Banking Service)也可称为移动银行APP,是利用移动通信网络及终端办理相关银行业务的简称.作为一种结合了货币电子化与移动通信的崭新服务,手机银行APP业务不仅可以使人们在任何时间.任何地点处理多种金融业务,而且极大地丰富了银行服务的内涵,使银行能以便利.高效而又较为安全的方式为客户提供传统和创新的服务.但是这种手机银行APP需要手动录入用户身份证件等信息,而手动录入信息很容易出错,所以,如果能集成身份证识别OCR技术,那就大大的提升了用户的体验效果.

APP功能点测试

一.移动互联网特点: 1,用户体验至上:精准的用户体验 2,核心竞争力:市场占有率和业务创新能力 3,营销模型:通过口碑传播吸引客户,随之参与互动(如分享等,对接口测试要求高) 二.项目特点: 1,开发周期短 2,创意高于一切 3,项目研发成本相对较低 4,需求多变且不明确 5,常采用敏捷开发模型 三.测试关注: 终端: 1, 整机测试 2, App测试 服务端: 1, 服务端软件测试 2, 大数据分析与挖掘 四.测试类型: 功能,性能,自动化 五.app测试点 1,安全测试 A,软件权限 B,

iOS开发中,怎么打包为ipa格式的软件包以及怎么安装到手机终端上

iOS开发中,怎么打包为ipa格式的软件包以及怎么安装到手机终端上. (我的开发环境为Xcode6.1.1 ) 作为个人开发者(当然我的开发者帐号为个人开发者帐号,而不是企业开发者帐号),对于自己来说,我们只需要真机调试就可以将应用安装到自己的手机上:如果你在发布前想给更多的测试或朋友使用你的APP(关键是他们并不在你的身边,如果在你的身边,你当然可以通过真机调试一个一个的将应用安装到他们的手机上:此时你的APP还没有上线,Appstore还没有),你该怎么做呢?想想吧! 在开发者中心中,你可能

基于汉澳sinox物联网操作系统的手机终端设计

最近写一个程序,类似股票监控程序,出现异动立即通知,放在家里运行,联网监控,出现异动信息的时候把异动信息发送到手机上,在手机看到消息就用智能手机联网操作,实现移动的无时无刻的办公.我曾经想把监控程序放在手机运行上带出去,但是外出可能网络不好,比如在深山老林,可能通信不畅,而且手机电源也不够用,而监控是实时监控.要完成整个系统设计,在目前的技术和网络环境,是不可以做到的. 系统设计包括几个部分 1.24小时联网运行的监控程序 2.异动信息传送网络 3.手机接收并上网 看起来这些功能目前都有,但是要