做手机APP的性能测试,先决条件:Android手机需ROOT,iOS需越狱。

一、内存泄露

Android\iOS 使用top命令来检查各个场景下的内存变化情况

1、Android内存抓取步骤

准备:电脑需安装android adb 并将adb的目录加入到系统环境变量中

通过电脑命令窗口来查看内存变化状况,并记录内存数值,步骤如下:

adb devices 查看手机设备是否连接上,如下图所示:

android 性能测试初探 android手机性能测试_top命令

adb root 命令可以让已经root的手机进入到adb的root状态

     adb shell 命令进入手机的linux内核,出现“#”代表root权限,出现“$”代表普通用户权限。

用top命令查看内存如下图:

android 性能测试初探 android手机性能测试_性能_02

抓取特定的进程内存变化可以用命令:

adb shell top -d 1 –n 4 | find "进程名"

-d 指定刷新间隔时间

-n 指定刷新次数后退出

以qq的web进程为例:

adb shell top -d 1 -n 4 | find "com.tencent.mobileqq:web"

android 性能测试初探 android手机性能测试_top命令_03

想要将抓取的内容保存到本地:

adb shell top -d 1 -n 4 | find "com.tencent.mobileqq:web" >>C:\Users\58\Desktop\log.txt

 log.txt内容如下:

android 性能测试初探 android手机性能测试_性能_04

只需要记录RSS实际使用内存这列的数据,画成折线图,分析内存波动状态,就是上图中画红圈部分数值。

分析内存直线图:一般抓取每次抓取200300个数据,抓取3-5次,然后查看内存波动情况,在一定范围内的上下起伏波动证明内存没有泄露,如果出现内存数值持续增长,没有回落现象说明可能存在内存泄露。

2、ios内存抓取步骤

准备条件:PC需安装itools, SecureCRSecureFXPortable,ios越狱手机安装Cydia且在Cydia中搜索安装OpenSSH。

  1. 手机连接电脑,并打开itools
  2. 通过itools打通与手机的ssh通道。如下图:
  3. 记住上面的 连接地址、用户名及密码(一般默认是地址:127.0.0.1 用户名:root 密码:alpine)
  4. 通过连接远程的机器来进入ios内核(可用SecureCRSecureFXPortable/putty/Xshell等工具连接)。如下图:
  5. 之后通过top命令来抓取内存变化,并绘制成直线图分析。

ios使用top命令收集内存数据:

top -s 3 -l 20 | grep QQ > QQ.log

-s:指定刷新时间间隔

-l:指定次数

top命令:top命令可以获取到系统所有进程占用内存、cpu等状态,我们只需要关注RSIZE即实际占用内存值,如下:

android 性能测试初探 android手机性能测试_top命令_05

抓取QQ内存变化:top -s 3 -l 20 | grep QQ

 

android 性能测试初探 android手机性能测试_android 性能测试初探_06

抓取QQ内存变化并写入文件中:top -s 3 -l 20 | grep QQ > QQ.log

android 性能测试初探 android手机性能测试_top命令_07

抓取到的内存数据和android内存数据一样处理、分析。

8.抓取完后关闭ssh通道,只需在打通操作的位置再次点击itools上的ssh通道即可关闭。

二、是否存在资源的重复拉取

操作步骤如下:

1、打开fiddler

2、打开需要测试的页面

3、复制fiddler中抓取的全部资源(一个页面求情的所有资源)到excel,通过excel排重,获取的资源中不能有重复项

android 性能测试初探 android手机性能测试_抓包_08

如果存在重复值,则不合格 ,如下图:

android 性能测试初探 android手机性能测试_性能_09

三、无缓存/首屏总流量小于200K 

操作步骤如下:

  1. 清除手机相应软件缓存
  2. 打开fiddler
  3. 打开页面

android 性能测试初探 android手机性能测试_ios_10

 

Fiddler中流量就是Bytes Sent + Bytes Received 

图上红圈内的就是流量。要求抓包得到的流量小于200k

四、tcpdump抓包

ios用tcpdump抓包需要有mac本,通过mac及tcpdump抓包相关命令:

rvictl -s 7f876f4526dd162912dc257f02f47706c2110225

sudo tcpdump -i rvi0 -p -vv -s 0 -w zhengzu.pcap

rvictl –x 7f876f4526dd162912dc257f02f47706c2110225

 

前提:mac中有tcpdump文件

1、获取ios的设备标志号

ios手机连接电脑,打开itools,点击主面板中的“更多详情”,弹出的小窗口中有“设备标识”,如下图所示

android 性能测试初探 android手机性能测试_android 性能测试初探_11

 

2、在mac的命令窗口通过命令:rvictl -s “设备标识” 建立虚拟网卡

命令:rvictl -s 3c434cfff44beaab2135ec09c03da7c877c2cb4e

如果创建成功会在命令窗口出现success标识并显示创建成功的虚拟网卡ID号,失败会出现failure标识

3、创建成功后执tcpdump命令:

sudo tcpdump -i “虚拟网卡ID号”-p -vv -s 0 -w “名字”.pcap

如:sudo tcpdump -i rvi0 -p -vv -s 0 -w zhengzu.pcap

其中:rvi0 是虚拟网卡ID号,之后就通过该网卡开始监听手机的网络信息,开始抓包。

4、抓包完成后通过命令:rvictl –x “设备标识” 关闭这个虚拟网卡。

rvictl –x 3c434cfff44beaab2135ec09c03da7c877c2cb4e