质量小议11 -- 测试驱动

Posted Rolei_zl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了质量小议11 -- 测试驱动相关的知识,希望对你有一定的参考价值。

       测试驱动开发,Test-Driven Development,TDD。是一种不同于传统软件开发流程的开发方法。在实现某个功能的代码之前先编写测试代码,然后再编写代码,并保证开发的功能代码通过测试,通过不断的测试推动开发的进行。目的是编写简洁、可用、高质量的代码,加速开发过程。

       Kent Beck先生最早在其极限编程(XP)方法论中,向大家推荐“测试驱动”这一最佳实践,还专门撰写了《测试驱动开发》一书,详细说明如何实现。 -- 来源,网络

       测试驱动开发有别于传统开发思想,是一种新的开发理念,是质量意识的深入体现。
       传统的瀑布开发模型(V模型)强调开过程的顺序性:需求、设计、开发、测试、交付,环环相扣,强调前期的实现结果在后期的过程中得到一一验证,测试验证过程处于过程的后期,为质量提供必要的支持和保证。
       后来的开发模型的发展强调了开发与测试的并行进行(W模型、H模型),强调在开发的每一个阶段执行的过程中,贯穿测试活动:有产出就有验证活动,何证每一步的执行质量。此时的测试动比早期的开发模型的时机向前移动,执行的频度强加。

       测试驱动开发有别于传统的开发方法,强调测试先行:由先开发后测试、边开发连测试,向先测试再开发转变。 
       测试驱动开发的基本思想:在开发功能代码之前,先编写测试代码,然后再编写可以使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。其核心是通过可以验证的功能代码保证功能交付的质量。
       测试驱动开发使开发过程更具灵活性,开发代码更加健壮。同能在敏捷大行其道的今天,充实的单元测试使快速变化的需求实现能在第一时间得到验证,交付和发布更加快捷,整体开发过程的速度得到加快。

       测试驱动开发,实现了测试前移的思想,体现了质量先行的思想:开发交付物是可测试的,开发实现之前先确认如何验证开发产物是正确的。

       测试驱动是测试人员驱动开发吗?不是也是。
       不是:测试驱动不是测试人员驱动开发过程、也不是质量人员驱动开发过程,测试驱动实现的核心仍开发人员的质量意识:如何保证开发出来的功能 可用、可靠、易用、高效。
       是:测试驱动开发的测试部分可以由测试人员进行,进一步体现开发、测试不分家,谁开发、谁测试、谁保证交付质量的思想。对开发、测试人员的能力同等要求。

       测试驱动开发是项活动,是一种质量保证思想:
       1. 体现了尽可能早的测试、交付物的功能实现是可以测试验证的基本质量思路;
       2. 通过不间断的验证活动,保证每一次交付的开发成果:函数、方法、接口、模块。。。。。。都能被及时被验证;
       3. 每次交付都经过测试,通过交付经过验证的代码保证交付的质量;
       4. 测试前移,通过大量的单元测试、功能测试减少后期模块集成、系统联调时的基础功能错误,将后期更多的工作集中在业务流程验证;
       5. 测试驱动生成的大量测试用例,使自动化测试、持续集成方法的应用成为了可能,为每一次的集成、交付的质量提供了有效的保证。

       测试驱动很耗时,效果并不能被客户感受到,不进行测试驱动开是否可以?
       开发过程中任何的活动都会耗费整个开发团队的时间、增加开发成本,是否执行测试驱动开发、如何执行测试驱动开发,个人的建议:价值原则。
       1. 测试驱动的确可以提升开发的交付质量,虽然交付的开发成果依然有这样或那样的问题,但是有些问题是客户不可以原谅的,测试驱动可以有效的避免此类不可原谅的错误;
       2. 测试驱动的测试用例编写的确耗时,但来自于 3 点:
           1)单元测试方法不熟悉,很难在较短的时间里写出有针对性的单体测试用例。 -- 加强练习,提升熟练度可以解决
           2)单元测试工具使用不当,单元测试完全由开发者自身实现。-- 更新单元测试工具,工欲善其事必先利其器;可以尝试结对编程 或 开发、测试动同进行
           3)测试驱动使用不当:客户未要求,只是开发团队自身的提升 -- 判断是否有必要,然后再实施,需要时间和过程保证
                                                 客户更倾向传统的开发模式 -- 开发团队需要考虑是大量的生成单元测试用例,还是采用 W 或 H模型中的开发、测试并行的方式

       使用何种开发方法,始终围绕着:开发质量 和 开发效率进行。关联的是开发成本:实现成本、交付成本。

       进行有价值的活动,对自己、对客户,无论何种方法,质量仍是检验的核心指标。
       构建自己/团队的工作方法、工作流程、过程管理方式,竖立自己/团队的质量基线,一切都会是有价值的。     

以上是关于质量小议11 -- 测试驱动的主要内容,如果未能解决你的问题,请参考以下文章

质量小议16 -- 白盒测试方法

质量小议13 -- 侥幸

质量小议13 -- 侥幸

质量小议9 -- 意义

质量小议14 -- DevOps

质量小议14 -- DevOps