Android 性能测试之内存 --- 持续更新

测试步骤

思路

  1. 目前做的是酒店APP,另下载安装几个个第三方酒店的APP以方便对比(相当于可以做竞品测试)
  2. 将APP的包名添加到白名单,同时测试
  3. 运行Monkey,将日志记录到手机中
  4. 测试过程中记录APP占用内存和CPU的变化
  5. 测试完毕后查看Monkey日志,将内存和CPU数据用图表来分析。

疑问:

  1. 此APP是需要登录的,测试过程中退出账号后无法再进入程序内部,不知道其他公司是如何避免的?
    答:经咨询,目前常用两种做法:1. 让开发将退出按键给屏蔽掉 2.点击登录不检测账号和密码

  2. 针对不同APP都有什么策略还不是很清楚,比如延时、事件数量、事件比例 等设置成多少合适?

一、运行Monkey

  1. 将白名单push到手机 ``` adb push E:\01_AutomationTest\01_Monkey\05_NbBank\whitelist.txt data/local/tmp/
2. 运行Monkey(Monkey的意义不再解释,看上一个博客)

adb shell
monkey -pkg  "packageName" -whitelist-file /data/local/tmp/whitelist.txt --throttle 200 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v  15000  2>/sdcard/error.txt 1>/sdcard/info.txt


### 二、内存检测
内存检测用批处理脚本记录,约3秒记录一次:

@echo off &color 0a&setlocal enabledelayedexpansion&title %~n0
::@mode con lines=18 cols=50

set package1=com.XXXX
set package2=cn.com.sXXXX
set package3=com.chinXXXX
set package4=com.XXXX

adb shell dumpsys meminfo %package1% | findstr "Pss" > ./meminfo_1.txt
adb shell dumpsys meminfo %package1% | findstr "Pss" > ./meminfo_2.txt
adb shell dumpsys meminfo %package1% | findstr "Pss" > ./meminfo_3.txt
adb shell dumpsys meminfo %package1% | findstr "Pss" > ./meminfo_4.txt

:start
adb shell dumpsys meminfo %package1% | findstr "TOTAL" >> ./meminfo_1.txt
adb shell dumpsys meminfo %package2% | findstr "TOTAL" >> ./meminfo_2.txt
adb shell dumpsys meminfo %package3% | findstr "TOTAL" >> ./meminfo_3.txt
adb shell dumpsys meminfo %package4% | findstr "TOTAL" >> ./meminfo_4.txt

echo.
echo.
ping -n 5 127.1>nul
goto start

### 三、记录CPU百分比

@echo off &color 0a&setlocal enabledelayedexpansion&title %~n0
::@mode con lines=18 cols=50

set package1=com.nbbank
set package2=cn.com.spdb.mobilebank.per
set package3=com.chinamworld.bocmbci
set package4=com.cmbchina.ccd.pluto.cmbActivity

adb shell top -n 1 | findstr "PID" > ./cupInfo_1.txt
adb shell top -n 1 | findstr "PID" > ./cupInfo_2.txt
adb shell top -n 1 | findstr "PID" > ./cupInfo_3.txt
adb shell top -n 1 | findstr "PID" > ./cupInfo_4.txt
:start
adb shell top -n 1 | findstr %package1% >> ./cupInfo_1.txt
adb shell top -n 1 | findstr %package2% >> ./cupInfo_2.txt
adb shell top -n 1 | findstr %package3% >> ./cupInfo_3.txt
adb shell top -n 1 | findstr %package4% >> ./cupInfo_4.txt

echo.
echo.
ping -n 5 127.1>nul
goto start

**注意:**
命令adb shell top -n 1 | findstr %package1%  返回三行信息,暂未处理:

### 四、结果分析

将结果写入到EXCEL进行统计分析


MemoryInfo解析:

Naitve Heap Size: 从mallinfo usmblks获得,代表最大总共分配空间

Native Heap Alloc: 从mallinfo uorblks获得,总共分配空间

Native Heap Free: 从mallinfo fordblks获得,代表总共剩余空间 

Native Heap Size 约等于Native Heap Alloc + Native Heap Free

mallinfo是一个C库, mallinfo 函数提供了各种各样的通过C的malloc()函数分配的内存的统计信息。

Dalvik Heap Size:从Runtime totalMemory()获得,Dalvik Heap总共的内存大小。

Dalvik Heap Alloc: Runtime totalMemory()-freeMemory() ,Dalvik Heap分配的内存大小。

Dalvik Heap Free:从Runtime freeMemory()获得,Dalvik Heap剩余的内存大小。

Dalvik Heap Size 约等于Dalvik  Heap Alloc + Dalvik  Heap Free

OtherPss, include Cursor,Ashmem, Other Dev, .so mmap, .jar mmap, .apk mmap, .ttf mmap, .dex mmap, Other mmap, Unkown统计信息都可以在process的smap文件看到。

Objects and SQL 信息都是从Android Debug信息中获得。

其他类型               smap 路径名称            描述

Cursor                  /dev/ashmem/Cursor    Cursor消耗的内存(KB)

Ashmem               /dev/ashmem              匿名共享内存用来提供共享内存通过分配一个多个进程

                                                              可以共享的带名称的内存块

Other dev             /dev/                            内部driver占用的在 “Other dev”                                                 

.so mmap             .so                               C 库代码占用的内存

.jar mmap            .jar                               Java 文件代码占用的内存

.apk mmap           .apk                               apk代码占用的内存

.ttf mmap              .ttf                               ttf 文件代码占用的内存

.dex mmap             .dex                             Dex 文件代码占用的内存

Other mmap                                              其他文件占用的内存






猜你喜欢

转载自www.cnblogs.com/Ronaldo-HD/p/9292653.html