手机APP测试常用技巧(adb、性能、功能测试要点)

1. 弱网测试

1.1. 出现状况
1.1.1. 高延迟,高丢包
1.2. Network Emulator Toolkit
1.2.1. 模拟网络丢包场景
新增过滤器

新增一条链路

设置上传

设置下载

设置配置生效

1.3. fiddler
1.3.1. 模拟网络延时场景
电脑fiddler设置

手机设置
打开WiFi,与电脑处于同一局域网下+修好网络+高级+手动、主机ip、端口+保存设置
模拟延迟

m_SimulateModem

设置配置生效

2. 内存测试

2.1. 内存泄露
2.1.1. 程序向系统申请分配内存空间后,使用完毕后未释放,一直占用内存单元,系统无法在使用该内存单元,直到程序结束
2.2. 内存溢出
2.2.1. 程序向系统申请的内存空间超过系统能够给的
2.2.2. 大量的内存泄露会导致内存溢出

3. adb组成

3.1. client
3.1.1. 运行在电脑上,通过adb命令调用客户端
3.2. server
3.2.1. 运行在电脑后台,负责管理client和daemon的通信
3.3. 守护进程daemon
3.3.1. 运行在模拟器或Android设备的后台

4. adb

4.1. 真机远程调试(root权限)
4.1.1. 1.手机与PC连接,处于同一WiFi下
4.1.2. 2.adb devices检测到设备
4.1.3. 3.adb tcpip 5555 确定手机和pc端的通讯端口号
4.1.4. 4.拔掉手机,adb connect 手机ip地址
4.1.5. adb shell netcfg
查看安卓设备ip(wlan0)
4.1.6. adb disconnect取消远程调试
4.2. 什么是adb
4.2.1. Android SDK的一个工具
4.3. 作用
4.3.1. 连接安卓手机和PC的一个桥梁
4.4. 功能
4.4.1. 安装/卸载apk
4.4.2. 拷贝推送文件
4.4.3. 查看设备硬件信息
4.4.4. 查看应用出现占用资源
4.4.5. 在设备执行shell命令
4.5. 命令
4.5.1. adb version
检测版本
4.5.2. adb -help
查看帮助手册
4.5.3. adb connect ip:port
连接设备
4.5.4. adb devices
检测电脑连接安卓设备
4.5.5. adb pull <手机路径> <本机路径>
从手机中拉去信息放到本地电脑
4.5.6. adb push <本机路径> <手机路径>
从本地推送信息到手机上去
4.5.7. adb logcat
打印日志
adb ;logcat > <日志输出位置>
4.5.8. adb shell
进入手机命令行模式
cd /sdcard
进入手机内部存储路径
exit
退出命令行模式
4.5.9. adb install <本地apk路径>
安装软件
4.5.10. adb uninstall <应用程序包名>
卸载软件
4.5.11. adb shell dumpsys window | findstr mCurrentFocus
adb shell dumpsys activity | find “mFocusedActivity”
查看当前运行应用程序信息
4.5.12. adb shell pm list package
查询手机内所有应用程序的包名
4.5.13. adb start-server
启动adb服务
4.5.14. adb kill-server
终止adb服务
4.6. logcat缓冲区
4.6.1. Radio
输出通信系统的log
4.6.2. System
输出系统组件的log
4.6.3. Events
输出event模块的log
4.6.4. Main
所有有Java层的log
4.6.5. adb logcat -b radio
输出通信系统的log
4.6.6. 日志分析
1.时间
2.优先级别
V Verbose
啰嗦 到最低级别 上线前关闭
D Debug
调试 用于调试信息 上线前关闭
I Info
信息 一般提示信息
W Warning
警告
E Error
错误 已经出现可能影响运行的错误
3.标签tag
标明日志发起者和方便日志过滤
4.PID
进程id。进程号
5.日志主体内容
4.6.7. bug定位
crash崩溃
FATAL EXCEPTION
ANR 应用无响应
ANR in
dropbox
多次ANR信息
/data/system/dropbox
Track
最近一次ANR信息
/data/anr/track.txt

5. 性能测试

5.1. 响应
5.1.1. 冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)
adb shell am start -W packageName/ActivityName(绝对路径,首个Activity)
ThisTime: 该Activity的启动耗时;
TotalTime: 应用自身启动耗时, ThisTime+应用application等资源启动时间
WaitTime: 系统启动应用耗时, TotalTime+系统资源启动时间
5.1.2. 热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)
热启动:按back按键后再启动adb命令
5.1.3. 测试标准
测试标准:冷启动时间不超过1.5s, 热启动不超过1s.
5.1.4. 完全启动:从启动到首页完全加载出来的时间间隔
5.1.5. 有网启动:从发起跳转,到页面完全加载出来的时间间隔
5.1.6. 无网启动:从发起跳转,到页面完全加载出来的时间间隔
5.1.7. charles抓包工具
除了截取请求还能进行单接口压测,修改请求参数并发出请求,以及模拟无网,弱网,2G,3G,4G等。能解决app的很多专项测试。
限制网络情况需要用到charles的一个功能:Throttle Setting
5.2. 内存
5.2.1. 测试点
空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。
中强度状态:时间偏长的操作应用。
高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)
内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少。
5.2.2. adb命令
adb shell dumpsys meminfo packageName

5.2.3. Emmagee性能测试工具
1、安装Emmagee.apk,打开。
2、选择需要测试性能的应用启动
3、被测应用界面会展示内存、CPU、电流、流量等数据
4、stop Test之后,在本地SD卡中保存一份性能测试数据,可以从里面获取内存信息。
5、可以通过execl将数据转化成图表,更直观的查看各性能指标的数据。
保存地址:/sdcard/Emmagee/******* .csv文件
可查看:cpu 内存 流量 电量 FPS(流畅度)是一个相对比较好的选择,但是只支持安卓6.0及以下的版本。
5.2.4. GT性能测试工具
使用与Emmagee大体一致,但是GT除了支持Android,同样支持ios
支持Android,同样支持ios。GT相对于Emmagee功能也更强大
:性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计
5.2.5. AndroidStudio
Android Monitor 可以检测CPU 和内存,能够绘制出变化图,可以直观明了的看出内存和cpu的变化曲线
Android Monitor ,有5个模块 :logcat、Memory、CPU、Network、GPU。
关注点
1、退出某个页面后,内存是否有回落。如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题。
2、进行某个操作后,内存是否增长过快。如果增长过快,也有可能存在风险,需重复操作确认。
5.3. CPU
5.3.1. 测试点
1).在空闲时间(切换至后台)的消耗,基本没大应用使用cpu
2).在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况
3).在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)
5.3.2. 具体场景
1、应用空闲状态运行监测CPU占用率
空闲状态:应用按Home键退到后台,不再占用系统的状态(通常是灭屏半分钟后),CPU占用率=0%
2、应用中等规格运行监测CPU占用率
中等规格:模拟用户最常见的使用场景。CPU占用率≤30%
3、应用满规格长时间正常运行监测CPU占用率
Monkey测试,CPU占用率≤30%
4、应用正常运行期间监测CPU占用率峰值
应用正常运行:打开应用进行基本操作,CPU占用率≤50%
5.3.3. 测试方法
adb命令
top -m -s cpu |grep packageName

如果反复进行某个操作,cpu占用过高且一直无法释放,那便可能存在风险
top cpu 参数
-m 显示最大数
-s 按指定行排序
-t 显示进程名称
-n 在退出前刷新几次
-d 刷新间隔
dumpsys cpuinfo |grep packageName
5.4. FPS
5.4.1. 应用的使用流畅度
Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间不超过1000/60=16.6ms
5.4.2. adb命令
1)打开手机:开发者选项—>profile GPU rendering —> in adb shell dumpsys gfxinfo
2) 操作要测试的apk
3) cmd窗口输入命令:adb shell dumpsys gfxinfo packageName

含义
Draw: 表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。
Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长。
Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。
Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧。
4) 得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比
5)通过execl进行表格处理可以直观的查看软件的流畅度

5.5. GPU渲染
5.5.1. 测试方法
手机自动的Debug GPU overdraw
1)打开手机—>设置—>开发者选项—>Debug GPU overdraw—>show overdraw areas
2)打开被测的应用

5.5.2. 测试指标:
1、控制过渡绘制为2x
2、不允许存在4x过渡绘制
3、不允许存在面积超过屏幕1/4的3x过渡绘制
5.6. 耗电量
5.6.1. 试前先看规定时间内手机正常待机下(重启后待机)电量消耗为多少。然后再启动待测试APP看看消耗的电量增加了多少取差值。
5.6.2. 测试点
测试手机安装目标APK前后待机功耗无明显差异;
常见使用场景中能够正常进入待机,待机电流在正常范围内;
长时间连续使用应用无异常耗电现象。
5.6.3. 测试方法 :(先关闭所有的应用,再打开被测app)
1、使用第三方测试工具:Emmagee、GT等,只需要测试的电流静置一晚,待机电流在正常范围内即可。一般是被测应用对比待机电流<=2mA。
2、使用adb命令
adb shell dumpsys batterystats com.package

思维导图

手机软件测试

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章