性能测试中 空闲内存如何计算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试中 空闲内存如何计算相关的知识,希望对你有一定的参考价值。
android应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度等。我们将在这个月陆续为大家简单介绍一下每个测试点的常见测试方法及简单的定位思路,仅供参考。本期我们介绍内存&CPU的测试方法。内存和CPU测试主要是为了检测应用在用户不同使用强度下消耗手机内存和CPU的情况,如果内存消耗过大会造成手机使用时卡顿,闪退等现象,进而影响用户体验,甚至会影响日活数据和用户留存等情况。因此,应用的内存占用大小也是产品体验好坏一个重要指标和测试重点。正常情况下,应用不应占用过多的内存资源,且能够及时释放内存,保证整个应用内的稳定性和流畅性。根据手机的使用应用频度和强度不同,可将应用使用强度分为如下几种状态:
l 空闲状态:指启动应用后,不做任何操作或切换到后台运行的情况称为空闲状态,该情况为应用对内存的消耗是最小的。
l 中强度状态:该情况用户使用应用的强度和时间长短不确定,相对来说使用时长偏长。
l 高强度状态:该种情况为应用内高频率的使用,用户很少达到,跑monkey时可认为高强度状态,该种情况常用来测试应用内存泄漏的情况测试时,可根据用户的操作习惯模拟应用使用频率和强度等级。
使用adb命令
1、 测试方法
手机连接电脑开启 USB调试模式,进入 adbshell
(1)查看 CPU占用率
使用命令top-m 10 -s cpu(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量),如下图:
图1
参数含义:
PID:progressidentification,应用程序ID
S: 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
#THR:程序当前所用的线程数
VSS:VirtualSet Size虚拟耗用内存(包含共享库占用的内存)
RSS: ResidentSet Size实际使用物理内存(包含共享库占用的内存)
UID:UserIdentification,用户身份ID
Name:应用程序名称
在测试过程中,QA需要关注对应包的cpu占用率,反复进行某个操作,cpu占用过高且一直无法释放,此时可能存在风险。 参考技术A 车子的负荷增大了,所以才导致了车子怠速抖动吧,于是小编专门请教了一个有经验的修车师傅,修车师傅说,如果汽车一开空调就怠速抖动,可能是因为这几个地方该检查了
常用性能测试工具和命令汇总
测试大块 | 测试子块 | 工具或命令 | 用途和说明 |
APP前端 | Android端 | ||
应用性能(CPU) | 命令:adb shell(dumpsys cpuinfo) | 测试在空闲、中等消耗、高消耗下cpu的运行情况 | |
命令:top -m 5 -s cpu | |||
应用性能(内存) | 命令:adb shell(dumpsys meminfo ) | 测试内存的运行情况 | |
命令:getprop |grep dalvik.vm.heapgrowthlimit | |||
应用性能(电量) | 命令:adb shell(dumpsys batterystats) | 测试电量的运行情况 | |
工具:gsam battery monitor3.2、GT2.2 | |||
应用性能(流量) | 命令: adb shell cat /proc/net/进程名/stats |grep uid |
测试在操作APP及不操作APP时流量的运行情况 | |
命令: adb shell cat /proc/uid_stat/uid/tcp_snd cat /proc/uid_stat/uid/tcp_rcv |
|||
命令:cat /proc/pid/net/dev) | |||
工具:tcpdump+wireshark | |||
代码:TrafficStats | |||
启动加载时间 | 命令:am start 或logcat | 测试在首次启动APP及非首次启动APP时启动加载时间的消耗情况 | |
页面渲染(fps) | 工具:手机中显示GPU过度绘制设置项 | 测试APP中某个功能模块的页面是否存在过度绘制 | |
手机卡顿(TraceView) | 工具:ddms25.2或代码埋点 | 测试APP中某个功能模块是否存在造成手机卡顿 | |
内存泄露 | 工具:ddms25.2 | 测试APP中某个功能模块是否存在内存泄露 | |
需分3次收集应用消耗手机内存数据 | |||
弱网测试 | 工具:Network Emulator for Windows Toolkit2.1 | 模拟在各类网络情况下,测试系统处理请求的能力 | |
需关注应用有无卡死、崩溃、无响应、闪退及交互数据的正确性 | |||
代码静态扫描 | 工具:lint | adt中自带工具,可分析出代码结构上的问题 | |
工具:FindBugs3.1 | 可发现java代码层面的问题 | ||
综合工具 | 工具:GT、Emmagee | 可测试应用的CPU 内存 电量 流量等特性 | |
h5页面 | 工具:ChromDevTools(基于Chrome57) | 谷歌浏览器中的开发者工具,按前端优化的14个规则进行监控和分析 | |
IOS端 | 工具:xcode6 | 可测试苹果APP应用中CPU、内存、流量、电量、弱网等方面的性能 | |
APP后端 | 同PC后端 | ||
PC后端 | 压力测试工具 | 工具:jmeter3.1或loadrunner11 | 性能压力和负载测试工具 |
应用服务器 (jvm和配置) |
工具:jvisualvm(基于jdk1.7) | 监控和分析应用服务器(如:Tomcat7、Apache2.4、nginx1.1、WebLogic10、redis3.2)中JVM的资源占用情况,参数文件配置项中是否有不合理的配置 | |
工具:MemoryAnalyzer1.6 | |||
命令:jps jinfo jstat jcmd | |||
数据库 (mysql5.5) |
命令:show processlist | 检查数据库中执行的SQL语句是否存在死锁的情况 | |
命令:mysqldumpslow | 分析和收集数据库中慢查询SQL语句数据 | ||
命令:explain | 分析数据库中SQL语句的执行计划 | ||
操作系统 (liunx3.1) |
命令:top free vmstat | 分析和收集CPU使用率、内存使用率、磁盘IO | |
命令:iostat sar netstat | 分析和收集网络IO、进程数、系统负载等 | ||
命令:tcpdump dstat | 堆转出存储和综合指标数据收集工具 | ||
PC前端 | web页面 | 工具:YSlow3.1 | web页面性能分析工具 |
工具:FireBug2.0 | web页面BUG分析工具 |
以上是关于性能测试中 空闲内存如何计算的主要内容,如果未能解决你的问题,请参考以下文章