共计 2118 个字符,预计需要花费 6 分钟才能阅读完成。
本文作者:程胜聪 – CODING 产品经理
时代带给测试的挑战
测试始终是软件研发过程品质的重要保障,而在传统研发模式中,测试流动总是处于软件生命周期中绝对滞后的环节,置信咱们对以下对话场景不会感到生疏:
- 布局好需要之后:
“这个版本的 X 性能很要害,测试肯定不能漏掉!”
“好的,咱们曾经在需要列表中做了备注。” - 开发过程中:
“这次的性能做完了吗?”
“开发实现了,然而还没有测完。” - 邻近公布日期了:
“性能曾经上线了吗?”
“到预公布环境了,回归测试还在进行中、之后比照剖析还须要工夫。”
以上提到的问题:“测了什么”、“测完了没”、和“测得快吗”,堪称是团队常常面临的“灵魂三拷问”。而 随着麻利 & DevOps 模式在软件行业的推广落地,更频繁的交付更是减轻了业界对测试的担心,测试不够高效往往成为导致交付延期的首要起因,测试环节也就成为了企业进行 DevOps 转型的最大瓶颈。
为了应答这样的挑战,“继续测试”(或者“麻利测试”)概念被提出并缓缓成为了业界的必然谋求。继续测试可能满足以下几个外围诉求:
- 测了什么:不能实现 100% 回归测试笼罩的前提下,基于业务价值来划分测试子集。
- 测完了没:在继续交付的过程中,按需进行测试并且提供疾速反馈。
- 测得快吗:让测试执行的足够快。
什么是继续测试?
来自维基百科的定义:在软件交付流水线中执行自动化测试的过程,目标是为了取得对于预公布软件业务危险的即时反馈。如下图继续交付的莫比乌斯环所示:
诚然,上述定义充沛强调了自动化测试的重要性,这是继续测试的根底。然而回到“通过继续测试取得效率晋升”的最终目标上,仅仅晋升测试执行形式这个单点效率,还不足以体现继续测试所带来的测试理念转变的实质。从整体测试效率的角度登程,DevOps 另外一个双生概念“麻利”模式所形容的“迭代内测试“(in-sprint testing)或者“麻利测试”就成为了更好的补充:继续测试应该作为一项根底和继续的流动、贯通于整个软件交付周期之中。来自 Jenkins 社区的图片更好地体现了这一概念:
如何实现继续测试?
继续测试扭转的是传统测试后置的工作模式,让测试流动延长到软件开发生命周期的每个阶段。
1. 需要布局阶段,尽早打算测试,并且策略性定义测试子集。
首先,从需要剖析的阶段就开始提前打算测试、编写测试用例,使之达成适当的需要覆盖率。对此须要有帮忙地实际包含 ATDD、BDD,尤其是 TDD 难以落地的团队能够尝试 ATDD。其次,要有优化测试覆盖范围的意识。测试不应该自觉谋求 100% 笼罩,而是基于业务危险和价值的测试策略进行测试(Risk-based Testing),“100% 笼罩优先级高的需要”远比“80% 笼罩了所有需要”来得有价值。
2. 迭代进行当中,推动测试左移(Shift-left),实现测试与开发并行工作。
测试执行应该前置到软件开发生命周期的晚期,多种工程实际能够帮忙团队实现左移:比方 器重测试评审,通过单元测试进行基础性保障,基于接口定义的开发和自动化测试,引入代码扫描判断是否满足编码标准和工程规范。这样在迭代周期内,就能围绕着需要继续进行集成测试用例的编写,并且与开发放弃停顿协同,为开发提供必要的测试反对,使得测试与开发的工作实现同步进行。
3. 迭代进行当中,以便捷的形式提供残缺的测试环境和正确的测试数据。
始终以来,靠近生产的测试环境打造和脱敏数据的疾速筹备是团队面临的两大重要挑战。现在 随着云原生技术的成熟,尤其是 Docker 技术的倒退,让按需搭建和销毁环境变得可能。然而测试数据的治理依然是个难题,根底数据如账号信息、环境信息这一类容易标准化的数据在业内曾经有了比拟好的解决方案,这曾经是个重大提高。而业务数据因为场景多变性始终不足足够好的业务形象,还处于依赖框架进行流程标准的根底阶段,基于接口定义的开发从而实现 Mock 服务也可能带来过程效率的晋升。
4. 利用部署之后,关注测试右移(Shift-right)。
传统瀑布模式把部署作为测试的下一阶段,也就意味着利用公布上线、疾速验证性能之后就是测试的完结。而 继续测试则不认为公布实现测试就退出了,强调的是在版本上线后、持续关注生产环境的数据监控和预警,及时发现问题并跟进解决,将影响范畴降到最低。并且利用生产上的数据能够为开发过程带来切实的价值:比方复制生产数据进行脱敏来筹备测试数据,对服务拜访数据进行剖析的后果也可为开发过程中的测试提供优化的指引、从而调整测试并造成更好的冒烟和回归测试策略等等。右移的实际包含数据分析、灰度 / 金丝雀公布、线上实时监控、用户反馈的跟踪解决流程等等。
此外,咱们在实际继续测试的过程中要关注数据的积淀,而后基于数据指标一直优化咱们的行为,从而实现 DevOps 所推崇的继续改良的团队文化。随着软件行业内麻利和 DevOps 文化的一直流传,研发团队必然会冀望实现更短的迭代周期,更无效地进步软件开发品质,更快地交付业务价值。
CODING 秉承为企业研发团队提供一站式 DevOps 解决方案的理念,通过弱小的测试治理性能,助力研发团队将测试作为根底流动贯通于软件交付的整个过程中,大大缩短软件交付周期,让测试和研发同步迭代,实现继续测试,帮忙团队将注意力回归高质量交付。