前言:

1.该内容为APP应用客户端的性能测试,未涉及后台,所以并非针对API或数据接口

2.测试的目标项:资源消耗、内存泄露、电量功耗、响应时间

3.客户端的性能指标:内存、CPU、流量

4.本系列主要是讲述 如何获取安卓APP应用的性能指标,并简单分析,定位问题

一、查看 内存 指标:

执行命令:adb   shell   ps   -A    |findstr    com.wawj.app.t

C:\Users\del>adb shell ps -A |findstr com.wawj.app.t

u0_a165          19335            557             5582292                     264620              0               0            S com.wawj.app.t

u0_a165          19531            557             4574096                     88564                 0              0            S com.wawj.app.t:pushcore
u0_a165           23819          19335           4878692                    207928              0                0            S com.wawj.app.t

C:\Users\del>

得到的进程(PID):19335

查询内存信息:

可通过两种方式获取:

a.通过 “ dumpsys meminfo  包名/pid ” 命令获取,输入:dumpsys meminfo 30017

adb shell dumpsys meminfo 19335        或者       adb shell dumpsys meminfo com.wawj.app.t

Pss Total :实际使用的物理内存

private dirty:私有驻留内存

Heap Size:    占用总内存(Heap  堆)(扩展:进程内存空间是虚拟内存,区分于物理内存,进程无法直接操作物理内存RAM。

必要时,操作系统对其进行映射,使进程能应用到物理内存)

Heap Alloc:   分配内存

Heap Free:   空闲内存

native process和java process占据内存的大小(扩展:c++申请的内存为native process,java申请的内存:java process)

内存大小:  native process:13004

dalvik process:10448

注:因为Android系统对dalvik的vm heapsize作了硬性限制,当java进程申请的java空间超过阈值时,就会抛出OOM异常(这个阈值可以是48M、24M、16M等,视机型而定)

查看单个应用最大内存限制,输入命令:adb    shell    getprop    |findstr    heapgrowthlimit。dalvik process 超过就会抛OOM异常

执行命令:adb    shell     getprop     |findstr     heapgrowthlimit

=================================================================================================

可直接通过:procrank 。

手机中的sh是经过精简过的,有些手机可能没有 procrank 命令,可以使用genymotion模拟器,或是自己安装procrank命令。

(我也没这个命令,没有装好,这部分内容未操作,为网络直接获取)

VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)——是单个进程全部可访问的地址空间

RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)——单个进程实际占用的内存大小,不是精确描述

PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)——对于系统中的整体内存使用是一个很好的描述

USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)——单个进程的全部私有内存大小,亦即全部被该进程独占的内存大小。

一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS。

USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字

====================================================================================================

代码获取内存数据:

java调用Adb shell dumpsys meminfo再用字符串截取方式获取内存,可对其数据进行返回打印,实现监控。

传入参数为:应用包名,这个不可变。

package com.hss.performanceTest;
/*** from hss* data:2017/9/8* project:getMemory*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class getMemory {public static String GetMemory(String packageName) throws IOException, InterruptedException {String str3=null;Runtime runtime = Runtime.getRuntime();Process proc = runtime.exec("adb shell dumpsys meminfo "+packageName);try {if (proc.waitFor() != 0) {System.err.println("exit value = " + proc.exitValue());}BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));StringBuffer stringBuffer = new StringBuffer();String line = null;while ((line = in.readLine()) != null) {stringBuffer.append(line+" ");}String str1=stringBuffer.toString();String str2=str1.substring(str1.indexOf("Objects")-60,str1.indexOf("Objects"));     str3=str2.substring(0,10);str3.trim();} catch (InterruptedException e) {System.err.println(e);}finally{try {proc.destroy();} catch (Exception e2) {}}return str3 ;}public static void main(String args[]) {System.out.println("开始运行...");try {String resurt = getMemory.GetMemory("com.hundsun.stockwinner.sxzq");System.out.println("山西证券的内存:"+resurt);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}             } }

运行截图:

参考网址:https://blog.csdn.net/heshushun/article/details/77893817

APP——内存测试——参考01相关推荐

  1. 安卓app内存测试脚本(分场景测试)

    #!/bin/bashResultPath="/Users/mft/性能测试/结果/内存结果.txt" PackageName="cn.babyfs.android&qu ...

  2. monkey测试===通过monkey测试检查app内存泄漏和cpu占用

    最近一直在研究monkey测试.网上资料很多,但都是一个抄一个的.原创的很少 我把检查app内存泄漏的情况梳理一下: 参考资料: Monkey测试策略:https://testerhome.com/t ...

  3. APP性能测试--内存测试

    一. 内存占用 对于智能手机而言,内存大小是固定的:因此,如果单个app的内存占用越小,手机上可以安装运行的app就越多:或者说app的内存占用越小,在手机上运行就会越流畅.所以说,内存占用的大小,也 ...

  4. 软件测试黑马工程师---Android app测试(01)

    手机,现在已经完全的融进了现代的生活里.现在只要你带一部手机,基本上已经可以完成生活的基本需求了,衣----淘宝.天猫等各大网络商店送货之你家门口,食---美团.饿了么恨不得把美食送到你嘴边.住--- ...

  5. 用python对某校园热水服务app进行测试,实现自动免费用水(仅供参考)

    前言 本文只是对某校园热水服务app做个测试,其实本人并没有做大坏事,并未传播相关技术,文章以下内容的敏感部分会打码,并且相关厂商已经正在进行漏洞修复,大家看看就好.文章后会提供"Pytho ...

  6. APP渗透测试准备(一)

    APP渗透测试准备(一) 文章目录 APP渗透测试准备(一) 环境准备 安装adb 安装frida frida hook实例 环境准备 Windows10 X64 Python 3.7 OppoR9s ...

  7. android应用测试机型,app兼容测试选择哪些机型才够全面呢?

    原标题:app兼容测试选择哪些机型才够全面呢? 各位搜狗测试的小伙伴们,我们又相遇在一个美好的周末了,今天让我们一起讨论一下如何选择兼容机型. 01 首先,我们先了解一下什么是兼容测试,兼容测试的表现 ...

  8. 有哪些好用的App云测试平台

    文章目录 有哪些好用的App云测试平台 有哪些好用的App云测试平台 目前对移动App的测试主要指的是下面几部分: 兼容性测试--App对不同手机.操作系统版本的兼容- 性测试,包括安装.启动.卸载等 ...

  9. 移动应用/APP的测试流程及方法

    1. APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先 ...

最新文章

  1. (Shadow,Gradient)
  2. 百度:I am from China, wait, am I?
  3. PHP远程DoS漏洞深入分析及防护方案
  4. 机试记不住头文件_计算机考研机试攻略
  5. top99 slam
  6. 蓝桥杯java第六届决赛第二题--五星填数
  7. C++ BUILDER 消息处理的深入探索
  8. centos 7.x 实现免密登录
  9. web前端开发的好工具sublime
  10. python扩展文件_1. 使用 C 或 C++ 扩展 Python
  11. 数据流图怎么画_概率图模型怎么画?5个步骤完成专业模型图
  12. php jumppage加载网址,php 分页类 扩展代码
  13. 如何把测试库的统计信息导入到生产库
  14. php页面防刷,PHP防止刷新重复提交页面的示例代码
  15. LintCode_44 最小子数组
  16. php高德地图计算距离接口,高德地图计算两坐标之间距离
  17. iOS CoreData (二) 版本升级和数据库迁移
  18. qemu前后端features协商过程分析(vhost_user后端)
  19. Tilemap瓦片资源
  20. 【路由器】OpenWrt 简介和安装

热门文章

  1. java 适合练手的java项目
  2. java foreach标签_Java中Velocity foreach循环标签详解
  3. 避障机器人程序c语言,移动机器人的避障实验设计+源程序+流程图.doc
  4. 苹果电脑打开wps云文档方法
  5. [Error Code: 904, SQL State: 42000] ORA-00904 : 标识符无效
  6. EventBus使用详解的
  7. 怎样快速锁定计算机加密硬盘,教你如何进行BitLocker加密
  8. 微软业务生产力平台基础架构优化(BPIO)之企业项目管理(EPM)解决方案
  9. C语言编程>第三周 ④ 求100之内的素数。
  10. 一文解读电压放大器(电压放大器原理)