一、什么是“测试左移”
第一炮我们先从“测试左移”入手,谈一谈我对“测试左移”的看法。所谓的“测试左移”是什么?通过百度搜索,国内查到“测试左移”最早的描述起始于年底到年初。换句话说,“测试左移”是一个新概念。最初在谈到“测试左移”这个概念的时候,更多是指软件研发过程中的测试活动应尽早介入。图一测试左移上面这张图描述了测试左移的基本原理,即软件研发生命周期中的缺陷大部分是在编码过程中引入的,但这些缺陷通常是在编码之后才逐步地发现出来。如果在编码过程中发现和修复缺陷的成本是1X,那发布给用户后,则发现缺陷和修复的成本会增长为X。这就引出了:如果我们提早做测试工作即“测试左移”,则发现或修复缺陷的成本会显著地降低。这也就是“测试左移”的理论基础。如果你足够细心,就会发现这张网络流传的图还有个问题,即它默认缺陷的注入是从编码开始的,而真实的情况是只要有人开始参与了研发工作(如需求分析、设计等),就势必会开始注入缺陷,在这里我们就不累述了。需要注意的是,最早“测试左移”的概念是指测试工作要提前做,而不是特指测试工程师“左移”即全职测试工程师从编码阶段介入,这两者是有区别的!区别我们放到后面再阐述。“测试左移”虽然提出时间不长,但这是个新概念吗?软件工程领域最著名的模型毫无疑问是瀑布模型:大家所熟悉的软件工程瀑布模型(waterfallmodel)概念,起源于WinstonRoyce发表于年的著名文章"ManagingtheDevelopmentofLargeSoftwareSystems"(Proc.Westcon,IEEECSPress,,pp.-)。图二:瀑布模型在我看来,所谓的“测试左移”正是在弥补瀑布模型的不足,即不要让测试工作只成为交付前的最后且唯一的质量保障手段,应该往前提,需要贯穿于整个软件研发生命周期中。但请注意,瀑布模型是年提出的,距今已经有50多年了,这么大的一个问题,怎么会几年前才给出个答案?经典的V模型早把这件事情说完了!V模型是由PaulRook在年率先提出的,在年出现在英国国家计算中心的出版物中,它是对瀑布模型的一种改进。图三:V模型在这里我不想解释V模型,有兴趣的同学可以在网络上自行查询。我想说的是,测试工作从需求开始,贯穿于整个软件研发周期是40年前就提出来的,这压根就不是啥新概念,如果你最近才知道那是你的问题!那为什么近期换了个说法,又提出了“测试左移”?测试左移一词(shift-lefttesting)最早出现在ArthurHicken的博客里,在他的博客中提到了对测试左移的看法。图四:最早谈到“测试左移”原文