1. <div id="f8mbs"></div>
        您好,欢迎来到源码搜藏网!分享精神,快乐你我!
        [加入VIP] 设为首页 | 收藏本站 | 网站地图 | Sitemap | TAG标签
      2. 首 页
      3. 在线工具
      4. jquery手册
      5. 当前位置:首页 > 安卓源码 > 技术博客 >

        Android开发从探索到突破:网易云音乐Android自动化性能测试实践

        时间:2019-03-29 07:07 来源:互联网 作者:源码搜藏 浏览:收藏 挑错 推荐 打印

        某些平台上输出的性能监控报告,数据没有统一标准、进一步分析无法进行,自动化测试往往成为鸡肋,你是否满意? 那么,面对复杂的线上环境,如何才能完成性能相关的自动化测试?面对线下环境,又该如何模拟?#27809;?#25805;作,制定一个面向对象的标准? 本章内容,网

        某些平台上输出的性能监控报告,数据没有统一标准、进一步分析无法进行,自动化测试往往成为鸡肋,你是否满意?

        那么,面对复杂的线上环境,如何才能完成性能相关的自动化测试?面对线下环境,又该如何模拟?#27809;?#25805;作,制定一个面向对象的标准?

        本章内容,网易云音乐高级Android工程师李宗骏为您解读《云音乐Android自动化性能测试实践》。

        概述

        本章将从卡顿监控的角度,介绍网易云音乐在性能方面的自动化测试实践。
        内容涵盖三方面:

        1、明确平台架构的搭建目标;
        2、云音乐在卡顿监控中的实践经验;
        3、从测试闭环到开发闭?#20998;?#30340;实践经验。

        云音乐的目标

        提出目标前,先要了解清楚我们想处理什么样的问题,收集什么样的问题,达成什么样的目的?
        反复的思考和探讨后,网易云音乐在性能自动化测试上提出了以下目标:

        • 可执行的标准:标准可量化、面向线下环境、面向?#27809;?#20307;验;

        • 可分析的问题:保证收集的问题可被分析,能产出在代码逻辑上的优化修?#27169;?/p>

        • ?#20013;?#38598;成能力;

        • 向开发侧闭环:对开发过程有一定约束。

        以下是云音乐的目标规划图——
        Android开发从探索到突破:网易云音乐Android自动化性能测试实践

        在卡顿监控中的实践

        在卡顿监控中,BlockCanary是一个比较高效的分析方法,最初云音乐采用的就是这一方案,但在实践中遇到了一些问题:

        • 颗粒度较大,无法细分具体?#26576;?#26223;,导致分析困难;

        • 无法监控非msg和多个msg耗时。
          BlockCanary的原理是它能监控主线程的Message执行耗时,同时在判断发生卡顿的同时开始采集?#39068;?#20449;息。所以这决定了它的本质就是——一个场景(主线程Message耗时)+ 可分析的内容(?#39068;?#20449;息)。

        因此,沿着这种思路,我们可以想到监控卡顿问题,主要就是找到一些场景,然后收集场景中可分析的内容。
        在这一思路的启发下,我们尝试做了一个组合的模式:
        Step1?#33322;?#38382;题按照场景进行细分,总结常见的发生卡顿?#26576;?#26223;。
        Android开发从探索到突破:网易云音乐Android自动化性能测试实践
        但在执行一段时间之后发?#32456;?#31181;思路也有一定不足: 场景过于细分,导致分体不够内聚; 很多卡顿问题?#26576;【安?#26159;单一的,而是多个场景的组合。 以上都对问题最终的分类和定位造成一定困难。
        又做了进一步改进——

        Step2:让所有的检测向BlockCanary聚合。
        Android开发从探索到突破:网易云音乐Android自动化性能测试实践
        这种做法有两个?#20040;Γ?/p>

        • 能够根据场景制定不同标准,增加有效性;

        • 通过收集关键信息,提高分析效率。
          首先,问题的输入不再限制是BlockCanary,而是我们任意定义的卡顿场景都可?#28304;?#21457;信息收集。

        另外,所有与性能相关的环境信息都会被抽象成?#24405;?#32479;计发生卡顿前后整个时间段内的所有发生过的性能?#24405;?#21644;对应的时间点,比如生命周期?#24405;?#32472;制?#24405;?#24067;局加载?#24405;琁nput、动画?#24405;?#31561;。
        通过类比可以发现,这种信息采集的方式刚好相当于systrace和traceview的结合,明确目标之后,可以参考systrace所收集的信息,进一步优化采集的策略、丰富采集的信息。

        Step3:对采集信息进行分类。
        目前网易云音乐采用的分类方法比较简单,即从下向上建立?#39068;唬?#25214;到第一个耗时卡顿总时间二分之一的业务代码,?#31361;?#23558;其标记为问题的核心方法,然后根据核心方法归类问题,如果几个问题的核心方法一致,就将其归为一类。

        从测试闭环到开发闭环

        Android开发从探索到突破:网易云音乐Android自动化性能测试实践
        上图可以看到,这是我们团?#21448;?#21069;开发和测试之间的流程关系:
        通过自动化的测试解析发现bug——开发消解bug——投入到下一轮测试
        这种方法的缺点在于测试结果没?#24615;?#22242;?#21448;?#21516;步,开发过程缺乏约束。
        针对以上问题,团队回顾了性能测试从最初到最后的过程,进行问题分类,得到结论如下图:
        Android开发从探索到突破:网易云音乐Android自动化性能测试实践
        分析出这些Top级的问题后,发现可以更进一步:除了?#35272;?#20043;前的BlockCanary流程发现问题,?#37096;?#20197;直接按照所发现的问题进行统计和问题定位。
        同时,Top级问题也会加入到静态代码检查中,这样在开发过程中就可以预先消解潜在的性能问题,对开发产生约束。
        通过这种方式,形成了一个开发过程的新闭环,最终达到了下图的流程:
        Android开发从探索到突破:网易云音乐Android自动化性能测试实践
        即出现bug后提取Top问题——将Top问题一方面作为新的测试项?#23458;?#20837;到测试当中,另一方面把它作为代码扫描输入。
        这种方法就能够利用静态代码检测,增加开发过程的约束。

        总结

        在团队的自动化性能测试工作中,总结出以下经验:
        1、要制定一个比较明确的目标:想做什么?是以线上环境为主还是测试为主?怎样采集数据?制定稳定的标准?
        2、性能测试本身虽然是一个闭环,但也是可以被?#20013;?#38598;成的,可以随着测试方法动态发生发展。这一过程中不仅要可以做到测试过程闭环,?#37096;?#20197;做到开发环境闭环,去约束开发。

        Android开发从探索到突破:网易云音乐Android自动化性能测试实践转载<\/script>' );
        辽宁十一选五单双