1、,软件质量控制-TDD,一、项目情况,目录,(五) 体系架构,如何在项目中引入TDD,一、项目情况,XX平台质量控制手段,(五) 体系架构,软件质量控制贯穿于软件的整个开发过程,在每个阶段所采取的方式也不一样,主要有:评审、代码走查、手工测试,一、XX平台质量控制手段,一、项目情况,XX平台质量控制手段,(五) 体系架构,手工测试需要反复进行。每一次修改程序,不管是增加新功能,还是修改bug,都必须重新测试被影响的部分,才能保证你增删改的代码不会造成破坏。手工测试可能会测试不充分。软件的各个部分常常有关联,任何人都不可能详细了解某段代码所有的依赖和被依赖关系,可能造成的问题是:修改某个地方,可
2、能会影响到另一些代码的行为,而这些被影响的功能不能完全被感知。手工测试阶段发现的问题,定位和解决的成本很高。,二、手工测试缺点,一、项目情况,XX平台质量控制手段,(五) 体系架构,软件质量的提高必须通过改进软件开发方法和提高开发人员的技术水平来完成。 1、自动化测试自动化测试对程序的回归测试更方便。这是自动化测试最主要的任务,特别是在程序修改比较频繁时,效果是非常明显的。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大提高测试效率和测试质量,缩短回归测试时间。,三、改进,一、项目情况,XX平台质量控制手段,(五) 体系架构,2、TDD(T
3、est-Driven Development)软件设计重要的是方法,设计原则和思想,技术和框架只是一个实现的方式和工具。TDD是一种方法,一种从代码源头控制软件质量的方法。,三、改进,一、项目情况,目录,(五) 体系架构,如何在项目中引入TDD,一、项目情况,TDD工作原理,(五) 体系架构,TDD是敏捷开发中的一项核心实践和技术,也是一种设计方法论。主要是先写测试程序,然后再编码使其通过测试。基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。TDD主要包括两方面:测试先行和代码重构。测试主要针对单元(最小的可测试软件元素
4、)实施测试。,1、什么是TDD,一、项目情况,TDD工作原理,(五) 体系架构,测试驱动开发属于需求分析和详细设计范畴,当代码完成后,这些测试程序也成为单元测试的一部份。测试驱动开发颠覆了以往的需求分析一设计一编码一单元测试。而是从单元测试入手,用测试代码描述需求,编码的目的就是为了通过己经设计好的单元测试代码。用测试来驱动开发,开发的目的就是为了通过测试。 。,2、TDD属于需求分析和详细设计范畴,一、项目情况,TDD工作原理,(五) 体系架构,1) 明确当前要完成的功能。2) 快速完成针对此功能的测试用例编写。3) 测试代码编译不通过。4) 编写对应的功能代码。5) 测试通过。6) 对代码
5、进行重构,并保证测试通过。7) 循环完成所有功能的开发。,3、TDD开发步骤,一、项目情况,TDD工作原理,(五) 体系架构,TDD促使程序员在设计每个最小功能的时候,仔细思考这个最小单元(方法)的各种边界条件,确保每一个单元更加健壮,稳定。这样,到最后,整个系统也更加可靠稳定。只有经过测试的代码才是可靠的。,4、TDD有助于提高系统稳定性,一、项目情况,TDD工作原理,(五) 体系架构,TDD是一种工作方式,编码观念,而Test是这种观念中的一部分实践。TDD的观念是先明确下一步要做的一小样东西,然后恰到好处的实现要做的东西,最后审核所做的质量,以此循环。Test是明确下一步东西后的产出,对
6、实现的正确引导,也是审核将来代码质量的一个工具。狭义上TDD的测试指的是单元测试,但是随着敏捷开发方法的发展,TDD又逐渐延伸发展出了ATDD和BDD等。每种方法关注于不同的问题。,5、TDD跟Test是什么关系?TDD的T就是Unit Test吗?,一、项目情况,TDD工作原理,(五) 体系架构,实施TDD是对开发者行为的比较大的改变,难点主要是改变开发工程师既有的开发习惯。TDD技术本身没有什么特别的要求,任何组织都可以直接应用。使用 TDD 的目的是高效的开发高品质的程序。如果 发现 TDD 危及这个目标(TDD也有自身的弱点和局限),那么请适当的妥协。,6、实施TDD需要怎样的前提条件?TDD难在哪儿?,一、项目情况,TDD工作原理,(五) 体系架构,对于需求来说,TDD更能引导开发人员做出真正符合需求的东西,不会过渡开发。对于设计来说,TDD的实践能帮你清理思路,但不能教会你做好的设计。对于质量来说,TDD保证所有的代码都有测试覆盖,肯定能提高质量。,7、TDD之于需求、设计、代码质量是怎样的关系和影响?,一、项目情况,目录,(五) 体系架构,如何在项目中引入TDD,