做手机APP的性能测试,先决条件:Android手机需ROOT,iOS需越狱。
一、内存泄露
Android\iOS 使用top命令来检查各个场景下的内存变化情况
1、Android内存抓取步骤
准备:电脑需安装android adb 并将adb的目录加入到系统环境变量中
通过电脑命令窗口来查看内存变化状况,并记录内存数值,步骤如下:
adb devices 查看手机设备是否连接上,如下图所示:
adb root 命令可以让已经root的手机进入到adb的root状态
adb shell 命令进入手机的linux内核,出现“#”代表root权限,出现“$”代表普通用户权限。
用top命令查看内存如下图:
抓取特定的进程内存变化可以用命令:
adb shell top -d 1 –n 4 | find "进程名"
-d 指定刷新间隔时间
-n 指定刷新次数后退出
以qq的web进程为例:
adb shell top -d 1 -n 4 | find "com.tencent.mobileqq:web"
想要将抓取的内容保存到本地:
adb shell top -d 1 -n 4 | find "com.tencent.mobileqq:web" >>C:\Users\58\Desktop\log.txt
log.txt内容如下:
只需要记录”RSS实际使用内存”这列的数据,画成折线图,分析内存波动状态,就是上图中画红圈部分数值。
分析内存直线图:一般抓取每次抓取200—300个数据,抓取3-5次,然后查看内存波动情况,在一定范围内的上下起伏波动证明内存没有泄露,如果出现内存数值持续增长,没有回落现象说明可能存在内存泄露。
2、ios内存抓取步骤
准备条件:PC需安装itools, SecureCRSecureFXPortable,ios越狱手机安装Cydia且在Cydia中搜索安装OpenSSH。
- 手机连接电脑,并打开itools
- 通过itools打通与手机的ssh通道。如下图:
- 记住上面的 连接地址、用户名及密码(一般默认是地址:127.0.0.1 用户名:root 密码:alpine)
- 通过连接远程的机器来进入ios内核(可用SecureCRSecureFXPortable/putty/Xshell等工具连接)。如下图:
- 之后通过top命令来抓取内存变化,并绘制成直线图分析。
ios使用top命令收集内存数据:
top -s 3 -l 20 | grep QQ > QQ.log
-s:指定刷新时间间隔
-l:指定次数
top命令:top命令可以获取到系统所有进程占用内存、cpu等状态,我们只需要关注RSIZE即实际占用内存值,如下:
抓取QQ内存变化:top -s 3 -l 20 | grep QQ
抓取QQ内存变化并写入文件中:top -s 3 -l 20 | grep QQ > QQ.log
抓取到的内存数据和android内存数据一样处理、分析。
8.抓取完后关闭ssh通道,只需在打通操作的位置再次点击itools上的ssh通道即可关闭。
二、是否存在资源的重复拉取
操作步骤如下:
1、打开fiddler
2、打开需要测试的页面
3、复制fiddler中抓取的全部资源(一个页面求情的所有资源)到excel,通过excel排重,获取的资源中不能有重复项
如果存在重复值,则不合格 ,如下图:
三、无缓存/首屏总流量小于200K
操作步骤如下:
- 清除手机相应软件缓存
- 打开fiddler
- 打开页面
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,点击主面板中的“更多详情”,弹出的小窗口中有“设备标识”,如下图所示
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