测试驱动开发与极限编程思想浅析

发表于:2011-8-23 11:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:布鲁斯南(cnblogs)    来源:51Testing软件测试网采编

分享:

  (4)勇气,这是最重要的核心价值。因为XP强调要“拥抱变化”,因此对于用户的反馈,要勇于对自己的代码进行修改,丢掉坏的代码。该条价值反映了开发人员应有的心态,而测试驱动开发正是进一步鼓励开发人员,而且在实践方便提供了很好的机制。先写测试后写代码的过程正是这一机制的体现。面对测试用例运行时报出的错误反馈要勇于面对。例如在xUnit测试框架的使用中就要于面对测试时出现的Red Bar,错误信息并不可怕,这正是测试驱动开发的意义所在。针对错误信息来编写及修改代码,勇于面对,最终解决问题顺利通过测试,显示出所期望的Green Bar。勇气又可以进一步的增强信心,提高效率,使得整个过程良性循环发展。

  2、测试驱动开发与极限编程中设计的关系

  极限编程中提出的设计思想与传统软件工程的大相径庭,它摒弃了传统方法中对设计近乎苛求的原则,弱化了全面细致的设计。在极限编程中,不要求对需求做出非常详细的设计,而是遵循简单的原则,对现有的需求做出简单的设计。不需要为以后考虑,因为你永远不知道将来会增加哪些需求。Martin Fowler提出所谓的设计是要能够让你可以长期很简单地修改软件。

  极限编程看似对设计的简化,削弱了开发的依据。但其实它的思想却是进一步明确了软件开发的时候应该更注重眼前的问题,全力去考虑当前的需求,满足客户当前的需要,而不要为以后的需要费时费力,只有这样,才能使做出的软件符合客户的需求。测试驱动开发在实现设计方面有着很大的优势。测试驱动开发的特点之一就是先写测试再写代码。而此时,测试用例编写的意义就非同一般了。一方面,测试用例有着测试代码的通用作用,开发人员在代码编写完成后对其正确性进行判断。另一方面,在极限编程中,设计是一个持续的过程, 测试用例在一定程度是也是需求文档的一种体现。对测试用例的编写其实也就是一个对需求进行分析设计的过程。这一点是极限编程和测试驱动开发独特的一点。测试用例的编写其实就是针对单元的输入输出的判断,对输入输出的设计就是对系统需求分析的过程,不能简单的随便设计,而是最好利用真实的系统数据进行设定。测试用例的编写完成后,代码才开始编写,这里的一切目的只为通过测试,而意义却是为了百分之百地满足系统的需求。测试的编写不再是一件令开发人员痛苦的事情,而是一件为了解系统需求而进行的设计过程,这种转变可以说对软件开发有着极大的积极的影响,这也是测试驱动开发的精髓所在。

  将设计融入开发,在开发中完善设计,两者相辅相成的关系在极限编程中体现的充分彻底。也就是这个原因,才使得测试驱动开发这一新思想迅速推广开来。

  3、测试驱动开发与极限编程中人的关系

  极限编程的思想是以人为本的思想,它不同于CMM等重量级的开发方法,完全是从工程的角度来进行系统的开发,人在其中完全成为了条条框框下的忠实执行者。极限编程从人性方面考虑的更多,比如每周四十小时工作时,结对编程等。测试驱动开发也体现出了这一原则。

  人类的活动具有高度的目的性,建立适当的目标具有重要的心理作用。例如在测试过程中,体现出的现象更是如此。如果我们的主要目的是为了证明程序里面没有错误,那潜意识里就会不自觉地朝这个方向去做,所以在编写测试的过程中,我们就会选择一些尽量使程序不出错的测试数据;但是,如果我们的目标是要证明程序中有错,那就会选择一些易于发现程序所含错误的测试数据。而后一种态度会比前者给程序增添更多的价值。传统测试的定义意味着程序测试的过程是具有破坏性的,其程度甚至达到了不可容忍的地步。

  测试驱动开发一改以往的那种破坏性的思想,从人性的角度出发,测试在先,编码在后。而不是像传统的编码完成后再进行破坏性的测试。这样一来,我们的编码就有很明确的目的,每一条代码的目的就是为了能通过测试。从以前的破坏性的方法转移到一种建设性的方法中来。如何来满足这些测试,有了明确的目标,开发人员可以以一种正常人的心态去解决眼前出面的问题,编写高质量的代码去通过这些测试。在这种积极心态的影响下,开发人员的工作效率会有很大的提高,与此同时,这种建设性的方法对整个团队的开发也起着很重要的作用。

  4、总结

  测试驱动开发作为极限编程思想的一种基本的开发策略,充分体现出了极限编程的核心价值。这种新的开发思想结合极限编程的简单设计、结对编程、重构等原则形成了一系列具体实践的内核,其它的原则都以它为基础。在突出了人性的特点的前提下,极大提高了软件的质量。随着测试驱动开发及极限编程思想的推广,越来越多的软件企业开始直接或间接采用了此方法,相信在不久的将来,采用此方法的企业都会从中获得高质量软件的产品,客户的满意度也将大大增强。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号