作者:王媛媛 编辑:毕小烦

万物皆有生命周期,软件工程也一样。软件生命周期(SDLC,Systems Deve lopment Life Cycle)描述了软件从开始研发到最终被废弃的一个过程,这个过程又可以分为三个阶段:软件定义、软件开发和运行维护。

其中:

  • 软件定义期包含:问题定义、可行性研究、需求分析等;
  • 软件开发期包含:概要设计、详细设计、软件编程、软件测试等;
  • 运行维护期,即运行维护阶段。

那什么是测试左移呢?

测试左移其实就是将关键的测试行为左移至软件开发生命周期的早期,从而更早的发现和预防问题。

测试为何要左移呢?

下图为 Capers Jones 在《Applied Software Measurement : Global Analysis of Productivity and Quality》中提出的关于软件缺陷的一些分析。
image.png
图中横坐标为软件生命周期不同阶段,纵坐标为缺陷百分比。

  • 蓝色曲线表示缺陷在不同阶段被引入的概率
  • 黄色曲线表示缺陷在不同阶段被发现的概率。
  • 红色曲线则表示不同阶段修复缺陷的成本

从图片中不难得出以下结论:

  1. 从缺陷发生和发现的阶段看,软件设计与编码阶段是最容易引入的错误/缺陷的,然而发现缺陷的概率却几乎为 0;
  2. 从缺陷修复成本看,随着软件生命周期不断向后,修复缺陷所需的成本越大,在常规测试行为介入的阶段(一般在编码完成后),其缺陷修复成本已经相对较高。

这与我们对缺陷的认知也是基本吻合的。

但倘若更早的介入测试呢?将测试活动提前至设计/编码阶段。

下图黄色曲线则是基于较早测试的情况下,不同阶段缺陷发现的概率曲线。
image.png
我们可以预估到大部分缺陷都在修复成本较低的阶段被发现了,这极大的降低了整体的缺陷修复成本。

这里说的较早测试,其实就是测试左移的概念,早在 2001 年,Larry Smith 就在他文章《Shift-Left Testing》中就提出了测试左移的概念和相应的实践。

好了,道理都知道了。那,

测试左移怎么落地?

如下面这张流程图所示,全面测试阶段之前都属于左移,也就是质量内建的阶段,在左移的每个阶段,我们都需要做好「测试」。
未命名文件.jpg
都应该做些什么呢?

1. 建立并共识测试流程和规范

  • 建立规范完整的研发&测试流程,并在项目组内严格执行;
  • 整个团队都认同质量内建,预防缺陷后移,追求一次性完成正确的工作;

    2. 在左移的各阶段充分测试

  • 在需求阶段,应该从不同的角色和不同的视角充分保障需求质量。

  • 在设计阶段,应该充分评审视觉设计、交互设计、技术设计,并制定合理的测试计划和风险预警;
  • 在用例阶段,应该准备好测试场景覆盖全面的测试用例,并充分评审;
  • 在编码阶段,应该推进单元测试、代码扫描、Code Review、开发自测、自动化回归测试、质量门禁等质量保障的措施;

    3. 持续提升测试能力

  • 具备全程质量保障的意识和能力;

  • 精通业务,不断提升业务分析能力;
  • 固化流程规范和标准,通过工具和平台提升测试效率;
  • 构建质量文化,将质量意识传递给每一个人。

    小结

    我们都知道测试左移是保障质量节省成本的关键,但在实际落地的时候往往会碰到各种各样的困难,有的是人的问题,有的是业务的问题,但我们要知道,方向对了,路就不怕远。所以我们应该保持开放的心态,不急不躁,先跟团队达成质量内建的共识,然后循序渐进,找到适合自己团队的节奏,持续改进即可。

(完)
微信搜索“毕小烦”或者扫描下面的二维码,即可订阅我的微信公众号
image.png
如果文章对你有帮助,记得留言、点赞、加关注哦!