Android性能测试的基础,给大家介绍下测试思路!
响应速度:是指终端中的APP/应用的启动时间(包含冷启动和热启动 ,补充概念:”冷启动”:是指APP/应用第一次开启;”热启动”:是指APP/应用第二次以后开启;);
这里的启动方式有两种:1.人工手动点击打开;2.通过命令启动该应用;(这两者启动肯定是有误差的,实际上在手机面向客户,所以经常采用人工启动应用开始计时)
测试方法1:
我们可以采用秒表计时方式,从人点击开始计时到应用打开后计算时间,但是这种计时方式是最最不准确的,误差和错误非常大,一般这种方法不推荐;
更精准点的方法是借用仪器,类似高速摄像机,误差可以减少至毫秒级,有录像和截图,从截图和录像中,从你手机中开始点击的那一刻开始计算,而且可以直观看到用户主观的感受,非常推荐这种方式,即准确又接近用户体验,但是这种仪器非常昂贵,几十万一台不等。
测试方法2:
通过我们终端本身日志或logcat,查看应用的启动时间,可这种启动方式也是有点误差,但是误差也很小,不比借用仪器精确。
测试方法3:
通过第三方工具/APK(你有能力可以自己写一个),网上看有没有相关的APK下载,这个是最简单的,但不知道准确率如何,只能用于参考;
测试方法4:
通过命令和脚本去监听应用的启动时间,这种方法常适用于该应用是通过命令启动的,如:
adb shell am start -w com.QQ.com的方式查看
(可以去搜索相关adb命令:adb命令检测apk启动时间、内存、CPU使用情况、流量、电池电量等——常用的adb命令)
若是批量测试多个或单个压力测试,那就要写脚本了,这个相关的脚本编写就看自个了。
推荐网址:简单获取一系列APP的冷启动时间_张长长的博客-CSDN博客_app冷启动时间
最后,测试除的结果,数据怎么判定它的标准,这个根据自己公司的规定或者情况,这里建议采用对比机,参考业界同平台对比机进行对比; 流畅度:这个分为系统级和app/应用级,是指终端操作即手滑动的界面流畅程度,一般情况下人为是很难感受出来,能感受出来的,说明你的手机或平板等设备已经很卡顿了,也就是我们常说的手机卡。
在系统界面、app/应用左滑/右滑/上下滑动的流畅度,终端的界面其实是通过帧率,你所看到的界面都是一针针的帧率形成的,跟电视电脑显示器一样;
测试方法1:
这里给大家推荐systrace工具,这个是Android超强大的流畅度测试工具,可以看到帧率的程度情况,看单位时间内的掉帧情况;
可以网上自行下载该工具, 下载后连接终端,这个工具使用前,要在终端界面打开GPU模式,勾选adb shell....这个选项,然后开启这个工具,在你要测试的界面,进行滑到操作(一般是10秒左右),滑到完后会生成新报告度案例;推荐:面试Tip之Android优化工具Systrace - 掘金
常用的比较通用的命令: ./systrace.py -t 10 -a -o xxtrace.html app sched gfx view am wm dalvik binder_driver freq idle load sync
还可以通过eclipse中操作,推荐:https://jingyan.baidu.com/article/fdffd1f86dc77df3e88ca149.html
,生成的新报告可以从谷歌浏览器中查看,在文件里也会生成表格,还有html格式(用谷歌浏览器打开),如下面是测试微信界面的流畅
这个表格显示的是不是更明显,这个是要通过python自己写出的脚本,自己统计的哦!
这图可以放大,你看在单位时间内丢了多少帧,每一帧间隔多大。
具体如何分析:性能优化工具(二)-Systrace - 简书
这具体的工具使用,自己查找相关资料学习。
测试方法2:
自身自带的工具,如GPU,这个要先调出开发模式选项,每个手机厂商的方式都不一样,最通用的是在设置--》关于手机--》多点版本号多次,就会调出开发者选项;
进入到开发者选项,可以看到有“GPU呈现模式分析”的选项,开启后即可以条形图和线形图的方法显示系统的界面响应速度,可以用以观察系统流畅度。那么要如何根据曲线判断系统是否流畅呢?实际上这个曲线表达的是GPU绘制每一帧界面的时间,只要不超过顶部绿线,都可以视为足够流畅。
开启GPU呈现模式分析
只要下方的曲线不超过绿线,都可以视之为流畅
使用系统自带方法测试流畅度的好处很多,首先是数据准确,系统肯定最知道自己的帧率如何;其次是不占资源,对流畅度测试的影响比较小。那么这个方法是否万无一失呢?其实还是有一些缺点的。比如说利用CPU渲染UI的App界面,就无法得到测试结果(当然这些界面基本无一例外卡顿无比,不用测也知道不流畅);当系统停顿了一下,例如微博加载图片时,响应速度会大幅增加,曲线瞬间突破绿线——这情况不能说不流畅,因为这属于内容和界面先后响应的机制,如果光凭曲线是否突破绿线判断是否流畅,未免太过局限。
测试方法3:
手机自带的Show GPU Overdraw和Profile GPU Rendering 、 Hierarchy Viewer
这种方法也需要打开上面的GPU开关,但是选择的是:,具体步骤如下:
1.在设置里打开GPU呈现模式分析。点击Android设备的“设置”->"开发者选项",然后勾选“GPU显示配置文件”。
2. 操作步骤:
(1.)重启我们的应用。启动应用以后,在系统界面或APP/应用的页面上做滑动
( 2.)lijiedeMacBook-Air:~ lijie$ adb shell dumpsys gfxinfo com.dianping.v1>fps.txt
(3.)打开生成的fps.txt,找到Profile data in ms这部分数据。
3.为了看得更直接,我们可以把数据放到Excel中,然后以图表的形式进行查看。
4.从图中可以看出来,我这个应用的流畅度是很低的,正常情况下帧率应该在16ms左右,如果1秒60帧的话,而且Execute时间太长!所以是需要进行优化的。
点评APP:
a: "Draw" : 创建显示列表(display lists,记录所有view对象的绘制指令)的时间开销。
b: "Process" : 执行显示列表中绘制指令的时间。UI视窗中的View数量越多,需要执行的绘画命令就越多。
c: "Execute" : 将一帧图像交给合成器compostior的时间。这部分占用的时间通常比较少
测试方法4:
通过第三方工具/APK(你有能力可以自己写一个),网上看有没有相关的APK下载,这个是最简单的,但不知道准确率如何,只能用于参考;
推荐FPS Meter工具(可能需要root终端):http://dl.pconline.com.cn/download/76451.html
当然还有很多的工具,如:Tiny Dancer、Takt、BlockCanary/Android Performance Monitor
Tiny Dancer:这个工具可以实时的显示app的帧率(GPU在一秒内绘制操作的帧数,标准是60fps)