构建高效Presubmit卡点,落地测试左移最佳实践

樊登有一节课讲的挺有意思,说中国有个组织叫绩效改进协会,专门研究用技控代替人控的事情。其用麦当劳来举例子,他说麦当劳其实招人标准很低,高中文凭就能够,可是培养出来的人,三五年以后,每个都是你们争抢的对象。为何呢?由于麦当劳的标准化作的很好。其中有一个例子是说,麦当劳的汉堡,出炉以后,15分钟以后没卖掉就扔了。你们想一想,若是你是领导,你如何让员工遵循这个标准?而麦当劳的解决方案提及来也简单,汉堡作出来以后就放入保温箱,15分钟后保温箱就会报警,通知餐厅经理该批次的汉堡过时了须要丢弃。html

人是组织不肯定性的最大来源,让人去记每一个汉堡的出炉时间铁定不行。而咱们作工程效能,质量保障的,也一样须要思考如何用技术手段消弭不肯定性,以确保更好的作组织升维。git

借此,今天就想谈谈如何经过强化Presubmit卡点模式,落地实实在在的测试左移,让提效言之有物。github

PS: 针对PR(github叫法)/MR(gitlab叫法)触发的CI检查就是Presubmit模式工具

Presubmit卡点模式能够包含哪些检查?

  • 单元测试,必需要有。行业内的基本认知,普及度很高。
  • 静态检查,必需要有。每种语言都有其推荐的检查工具,建议配上。
  • 集成测试/e2e,强烈建议有。
  • 系统性能基准测试,若是你在Presubmit阶段,可以针对系统的核心KPI,持续自动化的作性能基准测试,用于辅助Code Review阶段的代码合入。恭喜,你当属于行业领先地位。

相信单测、静态检查,大部分项目都有,此处不表。本篇想重点谈谈为何要在Presubmit阶段引入后几种测试类型,以及行业参考。gitlab

为何要在Presubmit阶段跑集测、e2e、甚至性能基准测试?

笔者有如下几点认知:性能

  • 提早发现回归问题,下降修复成本。Presubmit阶段,是研发的编码阶段,在这个阶段,若是在测试未介入的状况下,就能提供充分、即时的质量反馈,必然能够极大的提升研发迭代效率。要知道不少时候,QA和研发都是在并行工做,手上会有不少事情在排队处理。而若是一个回归缺陷在QA验收阶段才被发现,那可能已通过去一段时间了。研发须要从新将需求拾起,修复并再提测,极可能会浪费不少时间。这种情形下,隐性的成本损耗会很是大。
  • 保障提测标准,创建和谐产研关系。不少QA团队都会要求研发在提测上,要有必定的质量标准。这很好,但人非圣贤,孰能无过。尤为在时间紧,任务重时,必然会发生研发自测不充分,遗漏低级问题到QA手上的状况。因此,与其主观约定,不如用自动化创建标准。
  • 强化测试价值,增长曝光度 不少时候,QA同窗写了不少自动化,可是业务无感,研发无感。这时候,你会发现,自动化就成了QA同窗手里的玩物,不能有效交付。可是若是在Presubmit阶段就充分执行,不断执行,尤为是能早早的检测出bug时,整个团队必然会更加关注集测产物。久而久之,承认度就会比较高。
  • 测试左移,真正优雅的保障入库代码质量。谈到测试左移,我看到了太多的流程范,意识流。你们不少时候会放大主观能动性,强调尽早的参与到项目早期。这一点没错,但流程仍是依赖于人的值守,但人最是喜新善变。针对回归问题,若是可以创建行之有效的检测手段,必然能够极大的下降心智负担。

在Presubmit阶段落地复杂测试类型,有哪些挑战?

好处不少,但落地也非易事。单元测试

  • 被测系统怎么建设? 不论是集成测试仍是e2e,被测对象都是较为完整的业务系统。而要在Presubmit阶段执行起来,就须要经过代码,自动构建和部署整套系统。另,业务一般会有多个仓库,多PR/MR同时执行,因此被测环境应该是按需而起,多套并行。
  • 资源哪里来? 既然是多套环境,必然会涉及到不少资源,资源哪里来,环境如何有效管理?PR合并以后是否是应该自动回收等等问题。
  • 使用什么样的系统和姿式来构建? Presubmit阶段对应的是CI系统,而CI的执行必然须要足够的快。毕竟,提个PR,等十几分钟才有结果反馈,有点不雅。笔者经验认为,对于绝大部分的业务,CI要控制在10分钟之内。

其实深刻分析,问题还会有不少。可是挑战即机遇,方法总比困难多。只要价值足够大,收获才能足够多。测试

业界有哪些能够参考的?

七牛云google

七牛云比较早的开始围绕Presubmit阶段建设各类质量反馈,落地测试左移。而且还进一步作了测试覆盖率收集和受影响服务分析,以及devops建设等工做。其使用的方案和工具大部已开源,比较有借鉴价值。编码

PS:想进一步了解细节的同窗,能够搜索 MTSC2020 Topic: 基于云原生的测试左移技术实践 by 储培

开源工具:

谷歌

谷歌建设Presubmit模式的历史由来已久,其代码大仓的工做模式,也让其在这方面多了一些推陈出新。好比经过Machine Learning / Probabilistic Safety来筛选有效的执行用例,减小Flaky tests等。具体能够参考:

往期推荐

以为不错,欢迎关注:

相关文章
相关标签/搜索