阿里巴巴CI:CD之分层自动化实践之路

  • 时间:
  • 浏览:0



分层自动化

项目集成都不能使用,没人日常的产品回归也都不能用,图为阿里产品分层自动化持续集成全版示意图,集成自动化给日常回归产品做了赋能,将分层自动化工具平台和集成自动化串联,去保证日常产品质量的回归。

通过流程优化,在各个方面都得到了很大益处:





阿里分层自动化的实践



环境成本高:开发环境、运行环境、调度环境等等,接触过代码的同学都知道,一次环境的安装,没人大半天甚至一天是完不成的。同需要让自动化对接到项目自动化流程中,或定时监控等,还需要再开发调度平台,哪此成本对于从0到有的测试组,甚至是一家公司,曾经是多大?需要投入几条人日的工作量都不能完成哪此?



总结来看,自动化的烦恼包括以下四方面:

成本高:

节约劳力为(N-1)M,M为此项工作单次需要投入的资源,N为此项工作需要重复工作的次数。

使用这套体系,B2B研发测试配比达到了8:1,每段产品线13:1,却全年无故障。

曾经的流程,经过长期实践发现,研发测试比最多提升到3:1,与否还有改进空间呢?

图为阿里项目分层自动化持续集成全版示意图,亲戚亲戚当当让我们 多了集成自动化平台,该平台都不能把分层自动化工具串联在一起去,去做整个持续集成、持续交付操作,让工具具备了平台能力。不仅没人,亲戚亲戚当当让我们 还将分层自动化测试纳入到了拟发布流程中,开发同学提交环境部署后,会自动提交自动化测试,需要测试同学介入,曾经失败了才会通知测试人员排查,全版做到了CI/CD的理想效果。



时不时有同学抱怨自动化的覆盖率低,或多或少或多或少分支和逻辑无法覆盖,这大每段由于分析是哪此同学的理解偏差,或多或少或多或少人都将UI自动化作为自动化测试的全版。然而没人四种 自动化测试框架都不能覆盖有有一一个多系统的所有功能点的测试,或多或少或多或少老出自动化覆盖率低的观点。那该如何提高自动化的覆盖率呢?

曾经自动化没人好,为哪此亲戚亲戚当当让我们 没人全版做自动化呢?怪怪的是对于初创公司,自动化测试非常少,由于分析大致如图。

它都不能通过mock框架,模拟各种异常场景,内部人员依赖合适,且都不能做到测试粒度到最小的四种 测试依据 。也曾经依赖少,可方便随时随地执行,也让哪此的现象排查很简单。这是一切测试的地基。优点是可到最小可测单元、其功能明确,特定条件、特定场景均可测,测试性价比很高,缺点是基本依赖开发同学去做,开源工具多、测试代码多,要想全覆盖,需要投入较多时间;





开发环节:从拉分支开始英语 英文,到自测的部署环境与单元测试,全版平台工具化。一键拉分支、一键部署、一键触发单测集成,没人喝杯咖啡的时间,即可查看环境部署结果和findbugs、PMD、Sonar等代码扫描结果。

从图1分析就知道效果如何,然而图1还而是阿里某部门单周的有有一一个多采样,就曾经浪费了41次排查时间,曾经的自动化测试,若运行一年,那效果又会如何?能确保里面没人哪此干扰的失败吗?失败次数都不能和bug数成正比吗?

自动化的烦恼

上图不能自己看出,阿里该部门你你什儿 周的自动化失败次数不仅没人与发现bug数成正比,还浪费了测试人员41次自动化失败的排查时间,而哪此时间对于做自动化查bug的初衷,全版都是无意义之举。

覆盖率低:

及时性:

为哪此内部人员环境、业务变更、应用环境哪此的现象、执行机哪此的现象、数据哪此的现象、框架哪此的现象哪此都能引起没人多失败呢?而单单真正查出bug的概率没人低呢?

随着云计算、大数据、AI智能等前沿科技的发展,传统的研发传输效率没人难满足企业快速发展的需求,研发效能也成了继商业模式、技术突破曾经的另一核心竞争力。分层自动化测试倡导的而是将系统分层,不同层次需要用合适的自动化依据 进行测试的四种 测试策略。本文从亲戚亲戚当当让我们 熟知的单元测试、业务服务层的测试及UI自动化测试,进行优势和劣势的分析,一起去从执行传输效率、维护成本、测试依据 、完成优先级、覆盖范围及实施团队等多个维度,为亲戚亲戚当当让我们 提供一套分层自动化实施处理方案,最后重点分享了阿里分层自动化的实践,包括工具分层和流程优化等。一起去来了解下吧:

提到分层自动化,就会想到自动化经典的金字塔,第一层UI层针对页面系统,第二层服务层针对于业务集成,最后底层单元测试针对底层服务等。



除了单个工具的成本减少与效果提升,云效还优化了项目流程。如下图是亲戚亲戚当当让我们 常见的项目流程,其中自动化测试工作时不时没人单一自动化测试框架进行测试。

它是单元组装、功能组装、条件组装、场景组装的集合,要求测试人员对系统的行态和系统间的调度非常清楚,同需要了解接口逻辑关系,以后接口测试代码很容易遗漏或多或少异常场景。以后,亲戚亲戚当当让我们 需要测试人员的场景设计、构造测试数据、应用环境部署、一起去也依赖接口单元的质量。一起去,你你什儿 层曾经中含或多或少业务逻辑和多接口的有有一一个多集成,或多或少或多或少相对单元测试来说,多了或多或少外界依赖,由于分析哪此的现象定位太多再有单元测试层没人准确。以后,维护和哪此的现象排查上的投入会比单元测试多或多或少。

自动化测试框架,无论UI,接口还是单元,内部人员开源框架、收费软件等或多或少或多或少,各有利弊。阿里测试综合多种框架的实践,对其进行改良与创新,突破了传统自动化框架的众多哪此的现象,大大降低了自动化的成本、提升了自动化效果。如下图所示的四款重要工具,AUI主攻UI自动化,SAT主攻接口自动化,Amon主攻单元测试,以及Perf主攻性能,在传统测试框架基础的弱点上进行全面攻克与改造,最终实现鸟枪换大炮,全面提升测试工作传输效率。



以上而是分层自动化的主体三层,由此可见,分层自动化测试倡导的而是,将系统分层,根据层次特点用合适的自动化依据 进行测试的四种 测试策略。某个项目如何用自动化覆盖,根据项目技术特点与项目属性,设定合理的自动化测试补充与整个产品的自动化测试保障体系的结合保障。

手工测试传输效率低下,发布频繁,回归量大、成本高,重复劳动很枯燥。自动化测试,也太多再机器执行替代测试手工操作的四种 测试依据 ,不能帮助测试人员从重复、枯燥的手工测试中解放出来,从而节省人力、时间或硬件资源。

测试环节:手工测试中含用例和不够两款主打产品,平台沉淀,太多再再做或多或少文件传输,加在前面介绍的分层自动化相关测试平台与工具,在自动化测试工作上的传输效率提升,最终实现整体测试工作的平台与工具化。



不仅没人,阿里云效还从需求-开发-测试-发布整个项目流程中可工具化、平台化的手工工作,全面进行工具化、平台化的改造,如图所示。 

自动化的追求

假设亲戚亲戚当当让我们 的项目在合理运用分层自动化的测试策略后,并将其触发-哪此的现象排查-结果反馈都平台化地纳入到整个需求-开发-测试-发布你你什儿 项目流程中,会产生哪此样的效果呢?

效果差:

面对上述哪此哪此的现象,亲戚亲戚当当让我们 不禁自问:做自动化测试真的有必要吗?曾经有必要,那如何降低哪此成本,如何提高测试效果呢?经过不断的实践,亲戚亲戚当当让我们 引入了分层自动化测试的策略。

阿里巴巴分层自动化在经过策略的沉淀调整后,又经历了长期的工具与流程实践,并从自动化成本和效果这有有一一个多重要缺点上突破,进行分层自动化工具和项目流程的双重革命,最终达到业内领先的研发测试比。

分层自动化的特点比较如下:



为哪此要做自动化?

结合亲戚亲戚当当让我们 的多年自动化实践与总结,自动化趋于稳定如下图哪此缺点:

人员成本高:基本要懂四种 自动化框架的代码语言,要有一定的编码能力,一起去代码逻辑要清晰,以后如何能保证合理性、逻辑性、业务性与健壮性哪此大大影响自动化成功率的因素?如何能保证自动化测试脚本四种 没人bug?

虽然从图1中的10次业务变更引起的自动化失败,而是你你什儿 缺点的佐证。所谓业务变更,是指正常的项目变更,但脚本未及时更新引起的自动化失败。你你什儿 失败恰恰又证明自动化测试是有用的,而是测试覆盖到的内容,一旦有变,自动化就能测试出来。那如何提高亲戚亲戚当当让我们 的脚本及时性呢?

亲戚亲戚当当让我们 再看哪此流程,都不能看多测试工作,尤其是自动化测试工作,独立于开发项目流程。你你什儿 流程带来最直接的哪此的现象而是自动化发现哪此的现象不及时,对于开发自测项目也没人很好的介入保障,一起去全手工触发,人为因素影响非常大,这是限制开发测试比大幅提升的重要由于分析。



自动化



直播视频请点击

首先,分层自动化工具革命

其次,项目流程革命

它是最常见的黑盒自动化测试场景,能覆盖的场景全面、条件全面、环境全面,最接近用户。但也曾经测试范围全面,对测试人员、自动化脚本的健壮性等要求也会相对全面,需要考量场景设计能力、全面测试能力、框架选型成功、相关环境部署、业务逻辑清晰、功能测试边界、依赖底层质量。以后,而是有一环薄弱,就会大大增加自动化的失败率,而排查成本也曾经环境太多太错综复杂而成倍增加。

除了分层依据 与建议外,还有分层投入比,究竟花了几条时间作单测、几条时间作接口和UI?亲戚亲戚当当让我们 清楚知道,根据(N-1)M的劳力节约公式,全版都是所有项目都需要做自动化测试,主干核心、业务稳定、项目周期长和重复工作多的项目是需要做项目自动化测试的,图中展示了Google产品分层自动化投入比,它是比较完美的,当亲戚亲戚当当让我们 底层建设很完善的曾经,上层建筑的确都不能花费较少时间,维护成本也会相对降低。亲戚亲戚当当让我们 目前达没人,但可向你你什儿 比例去发展。