一、 什么是测试左移
我们一般将软件开发生命周期分为五个阶段:需求分析、软件设计、程序编码、软件测试和上线发布,测试左移就是将部分测试活动左移到图中测试阶段左边的多个环节,对每个环节所做工作进行测试验证,以确保其正确性,如下图所示:
二、为什么要测试左移
根据Capers Jones 的《Applied Software Measurement : Global Analysis of Productivity and Quality》,其中形象的描述了Bug的产生、发现、修复成本在软件生命周期中的关系,关系图如下:
图中横坐标为软件生命周期不同阶段,纵坐标为缺陷百分比。
蓝色曲线表示缺陷在不同阶段被引入的概率。
橙色曲线表示缺陷在不同阶段被发现的概率。
红色曲线则表示不同阶段修复缺陷的成本。
从图中可以看出大多数Bug是在功能测试和集成测试时发现的,随着软件进入生命周期的后段,发现一个问题并解决的成本会急剧地增加,而测试左移能够更早的发现问题并以更低的成本预防问题和解决问题。
测试左移将测试活动引入需求、开发等阶段,还有如下几个优势:
1. 早期发现缺陷:通过在软件开发的早期阶段进行测试,可以尽早发现和修复潜在的缺陷,减少缺陷的后期修复成本。
2. 提高开发效率:测试左移可以帮助开发团队更快地了解和验证软件需求,减少开发过程中的误解和偏差,从而提高开发效率。
3. 促进持续集成和交付:测试左移与持续集成和持续交付(CI/CD)紧密结合,可以确保软件在不断集成和交付过程中保持稳定和可靠。
三、如何实施测试左移
1. 建立完善的测试流程和规范
- 建立规范完整的研发&测试流程,并在项目组内严格执行。
- 整个团队都认同质量内建,预防缺陷后移,追求一次性完成正确的工作。
2. 左移的各阶段充分测试
- 需求阶段,从不同的角色和不同的视角充分评估需求的合理性,确保团队在做正确的事。
- 设计阶段,充分评审视觉设计、交互设计、技术设计,保障设计的合理性。
- 编码阶段,推进单元测试、代码扫描、Code Review、开发自测、自动化回归测试、质量门禁等质量保障的措施。
- 测试阶段,设置提测准入的卡点,完成如静态代码扫描通过、单测执行通过、冒烟用例执行通过、接口自动化回归通过等。
3. 持续提升测试能力
- 具备全程质量保障的意识和能力。
- 固化流程规范和标准,通过工具和平台提升测试效率。
- 构建质量文化,将质量意识传递给每一个人。
四、测试左移需要注意的事项
1. 测试左移不是测试人员左移,是测试活动左移。
测试左移常被误认为测试人员参与到测试验证之前的各个环节,测试左移不是人员的简单左移,而是将测试活动左移,在需求、设计、开发等多个环节开展测试相关活动。只要是在原有独立测试阶段之前做的测试工作都可以算作测试左移。
2. 测试左移不是一次性的,需要在环节持续测试分不开。
测试左移相关测试活动都不是一次性的,而是需要持续频繁地在整个软件开发过程中开展,实现持续地测试,持续地获取快速反馈,实现缺陷的真正预防。
测试左移是问题预防和成本最小化的的策略,前路漫漫,需要各角色一起配合共建,没有最好的答案,只有在实践中不断优化,找到适配各自项目的最优解。