1、测试驱动开发
生产高质量产品的软件开发过程对于软件的质量和软件开发人员来说是非常重要的,一方面要开发高质量的软件产品,另一方面还要兼顾软件开发的成本、人员的效率及合理的开发进度,在软件开发方法中,极限编程提供了一个新的思想。
极限编程(eXtremeProgramming,XP)是KentBeck倡导的一种新型软件开发方法,它是一个周密而严谨的软件开发流程。它基于简单、交流、反馈、勇气的原则,在充分考虑到人的因素的前提下进行,达到客户的大满意度。
测试驱动开发是XP编程思想的一种主要实践,可以有效地让程序开发人员开发出更高品质的、经过完整测试的程序。测试驱动开发(Test-DrivenDevelopment,TDD)是极限编程的佳实践之一,是开发方法中的基石,也是对传统编程开发方法不一样的地方之一。
它的基本思想是在开发功能代码之前,先编写测试代码。也是说在明确要开发某个功能时,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。之后循环进行添加其他功能,直到完成全部功能的开发。
测试驱动开发主要包括两方面:测试先行和代码重构。测试主要针对单元(小的可测试软件元素)实施测试。它所测试的内容包括内部结构(如逻辑和数据流)以及单元的功能和可以观测的行为。测试先行一改传统开发模式中的单元测试在编写代码之后进行,而将单元测试的编写移到编写正式代码之前。
重构是在不改变代码外在行为的条件下改进其内部的行为的一种软件系统改变的过程,使代码松耦合并且内聚度高。这种方法在实际中能够起到非常好的效果,使得测试工作成为设计的一部分,很好地把开发和测试融合为一个整体。
2、优点
测试驱动开发的想路是要通过测试来推动整个开发的进行。而测试驱动开发方法并不只是单纯的测试工作,它会直接或间接地将开发人员的信心和开发进度关联起来,对于软件开发团体来说,开发、测试是可以互相促进的,由于软件产品说明书可以说是经常改动,因此可能需要团体经常在一起进行讨论,通过沟通来统一一些观点,而测试和开发工作的并行为沟通提供了桥梁,所以测试不仅仅是测试设计员设计的测试用例和测试员执行测试的过程,更是与软件开发团体互相沟通、互相研究、互相促进的过程。根据测试驱动开发的实践,测试驱
动开发的思想至少可归纳为以下几个优点:
(1)项目进度可预测,而传统的方式很难知道编码何时结束。
(2)大部分时间代码处在高质量状态,100%的时间里成果是可见的。
(3)从软件开发的初始阶段,测试驱动强迫开发人员以测试的角度与用户的观点对软件进行审视,因而更能够对软件有全面的认识和把握。为系统改进提供了很好的保障。
(4)由于可以保证编写测试和编写代码的是相同的程序员,降低了理解代码所花费的成本。
(5)对于一个敏捷的开发小组,每个人都在做设计,对改善设计有很大助益。
(6)减轻了测试的工作量。无论是否进行设计工作,测试工作都是不可避免的,先进行单元测试,可以减少后续的测试工作量。
(7)让程序员能够更大程度地控制代码的正确度,相当于提供了两道的代码审核手段,在软件成品的质量上提供了一定的保障。
(8)显著增加开发者的信心并赢得他人的信任。
(9)为功能代码提供了很好的“文档”。
(10)在一定程度上可以代替程序调试的工作。