关注上面的“测试开发技术”,选择星星标志,
干货技术,第一时间送货!
普遍的apk性能测试,主要是以下七类
1、响应
2、内存
3、cpu
4、FPS (app使用的流畅度)
5、GPU过度渲染
6、耗电
7、耗流
(APP除了这些性能测试之外,还有手机版本号兼容性、屏幕分辨率兼容性、稳定性测试、安全测试等,然后会持续更新…流量测试会与它们一起更新,但在此不做说明。)
一、响应
的响应时间和响应速度直接影响用户体验度,如果一个软件不能延迟加载,会直接影响到软件的日活、留存因此,在软件中,响应速度的测试是必不可少的。
主要测试点:
1、冷启动:第一次启动APP的时间间隔(只有启动时间,不包括页面加载) )。
2、热启动:第一次不启动APP的时间间隔(只有启动时间,不包括页面加载) )。
3、完全启动:从启动到首页完全加载的时间间隔
4、有网启动:从开始跳转到页面完全加载的时间间隔
5、无网启动:从开始跳转到页面完全加载的时间间隔
(在项目中,主要测试的关注点是冷启动、热启动)
测试方法:
1、使用adb命令
1 )冷启动
adbshellamstart-wpackagename/activity name (绝对路径,第一个activity ) ) ) ) ) ) ) )。
含义:
ThisTime:启动此活动需要时间;
total time : APP本身启动需要时间,this time APP APP等资源启动时间;
WaitTime:系统启动需要时间,TotalTime系统资源启动需要时间
按3358www.Sina.com/back键,然后启动adb命令
测试标准:冷启动时间不超过1.5s,热启动时间不超过1s。
2)热启动:
charles是一个功能非常强大的捕获工具,不仅可以截获请求,还可以模拟单接口压力测量、修改请求参数提出请求,以及无网、弱网、2G、3G、4G等。 可以解决APP的很多特别的测试。
必须使用charles来限制网络状况的功能之一: Throttle Setting
网速和包装可以获取启动时间,但有一定的误差。 在项目中,通常只需要测试冷启动、热启动。
3)完全启动,无网启动,有网启动都可以通过charles抓包来获取启动的时间
Android Monitor总共有五个模块:日志cat、内存、cpu、网络和GPU
可以通过logcat获取APP应用程序的响应时间(内存中介绍了使用方法)。
2、使用AndroidStudio的Android Monitor,查看手机日志系统输出
直接记录源代码并在每个位置输入源代码的耗时操作效果最好,需要源代码。
3、代码日志输入查看
原理:通过压力感应自动识别起点,播放图像判断终点。 (通常默认手机接口静止是结束点),键盘以按s键为开始点,按f键为结束点。
这里不介绍使用方法。
4、借用工具,高速相机,但是成本较高。
在Android系统中,每个APP进程除了使用共享内存的“shared dirty”之外,还使用专用内存“private dirty”。 通常,使用PSS“专用内存比例分配共享内存”测量单个APP的内存开销。 由于移动设备的内存是固定的,内存消耗过多会导致APP应用程序的纸箱和闪回,因此需要对内存进行测试。 通常,请勿占用APP应用程序
多的内存资源,且能够及时释放内存,保证整个应用内的稳定性和流畅性。测试点:
1、空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。
2、中强度状态:时间偏长的操作应用。
3、高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。
内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少
测试方法:
1、使用adb命令:adb shell dumpsys meminfo packageName
获取应用包名和Actively:
adb shell dumpsys window | findstr mCurrentFocus
测试关注点:
1、Native heap alloc
2、Dalvik heap alloc
3、PSS
2、使用性能测试工具:Emmagee(只支持Android)
Emmagee是网易开发的一款测安卓应用性能的测试apk
1、安装Emmagee.apk,打开。
2、选择需要测试性能的应用启动
3、被测应用界面会展示内存、CPU、电流、流量等数据
4、stop Test之后,在本地SD卡中保存一份性能测试数据,可以从里面获取内存信息。
5、可以通过execl将数据转化成图表,更直观的查看各性能指标的数据。
(保存地址:/sdcard/Emmagee/******* .csv文件)
生成的csv文件:
原理:Emmagee是使用Android自身提供的ActivityManager.MemoryInfo()方法获得
可查看:cpu 内存 流量 电量 FPS(流畅度)是一个相对比较好的选择
但是只支持安卓6.0及以下的版本
除了Emmagee,还有腾讯提供的一个同样测试性能的app, GT。使用与Emmagee大体一致,但是GT除了支持Android,同样支持ios。GT相对于Emmagee功能也更强大:性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计。
3、使用AndroidStudio 自带 CPU 和内存检测功能 – Android Monitor
(首先要下载并安装好Android Studio)
Android Monitor 可以检测CPU 和内存,能够绘制出变化图,可以直观明了的看出内存和cpu的变化曲线。
Android Monitor ,有5个模块 :logcat、Memory、CPU、Network、GPU。
关注点:
1、退出某个页面后,内存是否有回落。
如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题。
2、进行某个操作后,内存是否增长过快。
如果增长过快,也有可能存在风险,需重复操作确认。
三、CPU
CPU测试,主要关注的是cpu的占用率。很多时候,我们玩手机时,会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户体验就会很差,也容易引起ANR(application not responding, 主线程(UI线程)如果在规定时内没有处理完相应工作,就会出现ANR)等等一系列问题。
测试点:
1).在空闲时间(切换至后台)的消耗,基本没大应用使用cpu
2).在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况
3).在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)
具体场景:
1、应用空闲状态运行监测CPU占用率
空闲状态:应用按Home键退到后台,不再占用系统的状态(通常是灭屏半分钟后)
CPU占用率=0%
2、应用中等规格运行监测CPU占用率
中等规格:模拟用户最常见的使用场景
CPU占用率≤30%
3、应用满规格长时间正常运行监测CPU占用率
Monkey测试
CPU占用率≤30%
4、应用正常运行期间监测CPU占用率峰值
应用正常运行:打开应用进行基本操作
CPU占用率≤50%
测试方法:
1、使用adb命令:
1) top -m -s cpu |grep packageName
top cpu 参数:
-m 显示最大数
-s 按指定行排序
-t 显示进程名称
-n 在退出前刷新几次
-d 刷新间隔
如果反复进行某个操作,cpu占用过高且一直无法释放,那便可能存在风险。
2)dumpsys cpuinfo |grep packageName
2、使用第三方测试工具:Emmagee、GT等。
3、使用AndroidStudio自带的检测工具Android Monitor。
四、FPS(应用的使用流畅度)
FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。
´一般来说,Android设备的屏幕刷新率为60帧/s,要保持画面流畅不卡顿,要求每一帧的时间不超过1000/60=16.6ms,这就是16ms的黄金准则,如果中间的某些帧的渲染时间超过16ms,就会导致这段时间的画面发生了跳帧,因此原本流畅的画面变发生了卡顿。
测试方法:
1、adb命令
1)打开手机:开发者选项—>profile GPU rendering —> in adb shell dumpsys gfxinfo
2) 操作要测试的apk
3) cmd窗口输入命令:adb shell dumpsys gfxinfo packageName
4) 得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比
含义:
Draw: 表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。
Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长。
Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。
Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧。
5)通过execl进行表格处理可以直观的查看软件的流畅度
2、除了使用adb shell, 还可以直接使用开发者选项自带的图表
1)打开手机:开发者选项—>profile GPU rendering —> on screen as bars
2) 操作被测的软件
3)界面会显示如下的一个统计数据表
2、使用第三方测试工具:Emmagee、GT等。
3、使用AndroidStudio自带的检测工具Android Monitor。
五、GPU渲染
GPU渲染是指在一个像素点上绘制多次(超过一次):显示一个什么都没有做的activity界面算作画了1层,给activity加一个背景是第2层,在上面放了一个Text View(有背景的Text View)是第3层,Text View显示文本就是第4层仅仅只是为了显示一个文本,却在同一个像素点绘制了四次,这是一定要优化的。过度绘制对动画性能的影响是极其严重的,如果你想要流畅的动画效果,那么一定不能忽视过度绘制。
测试方法:
1、手机自动的Debug GPU overdraw
1)打开手机—>设置—>开发者选项—>Debug GPU overdraw—>show overdraw areas
2)打开被测的应用
GPU过渡渲染不同的颜色代表不同的绘制程度
1)、原色:无过渡绘制
2)、蓝色:绘制一次 (理想状态)
3)、绿色:绘制二次
4)、浅红:绘制三次 (可以优化)
5)、深红:绘制四次 (必须优化)
测试指标:
1、控制过渡绘制为2x
2、不允许存在4x过渡绘制
3、不允许存在面积超过屏幕1/4的3x过渡绘制
六、耗电量
测试应用对电量的消耗前需要对手机本身的电量消耗有个大概了解,测试前先看规定时间内手机正常待机下(重启后待机)电量消耗为多少。然后再启动待测试APP看看消耗的电量增加了多少取差值。
测试点:
测试手机安装目标APK前后待机功耗无明显差异;
常见使用场景中能够正常进入待机,待机电流在正常范围内;
长时间连续使用应用无异常耗电现象。
测试方法:
(先关闭所有的应用,再打开被测app)
1、使用第三方测试工具:Emmagee、GT等,只需要测试的电流静置一晚,待机电流在正常范围内即可。一般是被测应用对比待机电流<=2mA。
2、使用adb命令
adb shell dumpsys batterystats |grep packageName
转载自:
https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318
推荐阅读
测试技术的提升你只需要关注这个!年薪20W都不是梦!
测试经理 : 不想测就不测呗,摆什么臭架子!
测试干了5年,薪资不如刚入行1年的xqdmf?月薪28k真的是看工作年限吗?