Android终端系统APP应用性能测试之响应速度&流畅度

淺唱寂寞╮ 提交于 2020-08-18 21:35:00

Android性能测试的基础,给大家介绍下测试思路!

响应速度:

是指终端中的APP/应用的启动时间(包含冷启动和热启动 ,补充概念:”冷启动”:是指APP/应用第一次开启;”热启动”:是指APP/应用第二次以后开启;);

这里的启动方式有两种:1.人工手动点击打开;2.通过命令启动该应用;(这两者启动肯定是有误差的,实际上在手机面向客户,所以经常采用人工启动应用开始计时)

 

测试方法1:

        我们可以采用秒表计时方式,从人点击开始计时到应用打开后计算时间,但是这种计时方式是最最不准确的,误差和错误非常大,一般这种方法不推荐;

        更精准点的方法是借用仪器,类似高速摄像机,误差可以减少至毫秒级,有录像和截图,从截图和录像中,从你手机中开始点击的那一刻开始计算,而且可以直观看到用户主观的感受,非常推荐这种方式,即准确又接近用户体验,但是这种仪器非常昂贵,几十万一台不等。

 

测试方法2:

       通过我们终端本身日志或logcat,查看应用的启动时间,可这种启动方式也是有点误差,但是误差也很小,不比借用仪器精确。

 

测试方法3:

       通过第三方工具/APK(你有能力可以自己写一个),网上看有没有相关的APK下载,这个是最简单的,但不知道准确率如何,只能用于参考;

 

测试方法4:

       通过命令和脚本去监听应用的启动时间,这种方法常适用于该应用是通过命令启动的,如:

adb shell am start -w com.QQ.com的方式查看

(可以去搜索相关adb命令:http://www.mamicode.com/info-detail-2161372.html

       若是批量测试多个或单个压力测试,那就要写脚本了,这个相关的脚本编写就看自个了。

推荐网址:https://blog.csdn.net/weixin_38010398/article/details/77750925

 

最后,测试除的结果,数据怎么判定它的标准,这个根据自己公司的规定或者情况,这里建议采用对比机,参考业界同平台对比机进行对比;

 

流畅度:

       这个分为系统级和app/应用级,是指终端操作即手滑动的界面流畅程度,一般情况下人为是很难感受出来,能感受出来的,说明你的手机或平板等设备已经很卡顿了,也就是我们常说的手机卡。

      在系统界面、app/应用左滑/右滑/上下滑动的流畅度,终端的界面其实是通过帧率,你所看到的界面都是一针针的帧率形成的,跟电视电脑显示器一样;

 

测试方法1:      

      这里给大家推荐systrace工具,这个是Android超强大的流畅度测试工具,可以看到帧率的程度情况,看单位时间内的掉帧情况;

       可以网上自行下载该工具, 下载后连接终端,这个工具使用前,要在终端界面打开GPU模式,勾选adb shell....这个选项,然后开启这个工具,在你要测试的界面,进行滑到操作(一般是10秒左右),滑到完后会生成新报告度案例;推荐:https://juejin.im/post/5b3cce09e51d45198651069f

       常用的比较通用的命令:
./systrace.py -t 10 -a <package_name> -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自己写出的脚本,自己统计的哦!

Image3.png   

这图可以放大,你看在单位时间内丢了多少帧,每一帧间隔多大。 

  具体如何分析:https://www.jianshu.com/p/fa6cfad8ccc2

这具体的工具使用,自己查找相关资料学习。

 

测试方法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)

链接:https://github.com/friendlyrobotnyc/TinyDancer

Takt:同样是实时显示帧率

链接:https://github.com/wasabeef/Takt

BlockCanary/Android Performance Monitor:用于检测主线程上的各种卡慢问题,并通过组件提供的各种信息分析出原因并进行修复。

链接:https://github.com/markzhai/AndroidPerformanceMonitor

 

最后,测试除的结果,数据怎么判定它的标准,这个根据自己公司的规定或者情况,跟响应速度有点点区别,这里可以采用对比机,参考业界同平台对比机进行对比,但是这个帧率丢帧太大,很明显的卡顿,那么这个不用对比机也会知道卡顿的厉害。

 

大家还有其他更好的方法吗?可以留言讨论

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!