`
xiaocao000
  • 浏览: 227517 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

TDD可以带来好处

阅读更多
提供明确的目标:
你很清楚, 一旦结束(测试通过), 你的工作就完成了(假设你的测试写的很好). 测试代码会为代码建立一个自然的边界, 使你把重点集中在当前任务上. 一旦测试通过, 就有确切的证据证明你的代码能工作. 相对于人工的测试用户界面或者比较日志文件中的结果,  在一个xUnit框架中运行自动化测试, 速度要快几个数量级. 大多数xUnit测试的运行只需几微秒, 而且大多数采用TDD的人都会一天运行数次测试. 在许多开发小组中, 将代码上传配置库前, 必须成功地通过测试.

提供文档
你是不是经常遇到看不懂的代码? 这些代码可能没有任何文档说明, 而且开发代码的人可能早就走了(或者去度假了). 当然看到这种代码的时间往往也很不合时宜, 可能是凌晨3点, 也可能有位副总在你旁边大声催促着赶快解决问题, 这样要想花些时间来愿作者的意图就更困难了. 我们见过一些好的单元测试文档, 它们会指出系统要做什么. 测试就像原开发人员留下的记号, 可以展示他们的类具体是怎么工作的.

改善设计
编写测试能改善设计. 测试有助于你从界面的角度思考, 测试框架也是代码的客户. 测试能让你考虑得更简单. 如果你确实遵循了"尽量简单而且行之有效"的原则, 就不会写出篇幅达几页的复杂算法. 要测试的代码通常依赖性更低, 而且相互之间没有紧密的联系, 因为这样测试起来更容易. 当然, 还有一个额外的作用, 修改起来也会更容易!

鼓励重构
利用一套健壮的测试集, 你能根据需要进行重构. 你是不是经常遇到一些不知是否该修改的代码? 种种的顾虑让你行动迟缓, 过于保守, 因为你不能保证所做的修改会不会破坏系统. 如果有一套好的单元测试集, 就能放心的进行重构, 同时能保证你的代码依然简洁.

提高速度
编写这么多测试会不会使开发速度减慢呢? 人们经常会以速度(或开发开销)作为反对进行TDD和使用xUnit框架的理由. 所有的新的工具都会有学习曲线, 但是一旦开发人员适应了他们选择的框架(通常只需要很短的时间), 开发速度实际上会加快. 一个完备的单元测试集提供了一种方法对系统完成回归测试, 这说明, 增加一个新特性之后, 你不必因为怀疑它会不会破坏原系统而寝食难安.

提供反馈
单元测试还有一个经常被忽略的优点, 即开发的节奏. 尽管看上去好像无关紧要, 但通过测试之后你会有一种完成任务的成就感! 你不会成天地修改代码而没有任何反馈, 这种测试-代码-测试的方法会鼓励你动作幅度小一些 通常修改一次代码的时间仅仅几分钟而已. 这样你不会一下子看到冒出一大堆新的特性, 而只是让代码每次前进一小步.


分享到:
评论

相关推荐

    TDD测试驱动开发

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际功能代码之前,先编写测试...虽然它可能需要额外的学习和投入,但长期来看,TDD能够带来更稳定、可扩展和易于维护的软件系统。

    测试驱动编程 TDD 实例

    TDD虽然增加了初期的编码工作量,但它带来的好处,如更高的代码质量、更好的设计和更快的缺陷发现,使得这个额外的工作变得值得。因此,在实际项目中采用TDD方法,可以显著提升开发效率和软件产品的稳定性。

    TDD单元测试

    - **提高信心**:大量的自动化测试可以给开发人员带来更大的信心,因为他们知道每次更改后都有安全网。 - **更好的文档**:测试用例可以作为代码行为的自然文档。 4. **TDD的挑战** - **学习曲线**:TDD需要额外...

    TDD测试驱动开发.pptx

    尽管它有自身的挑战和局限,但其带来的好处却远远超过了这些不足。通过不断的实践和学习,开发团队能够逐渐适应TDD的节奏,并最终将TDD内化为开发流程的一部分,从而显著提升软件项目的质量,缩短开发周期,降低开发...

    测试驱动开发(TDD)

    测试驱动开发(TDD)是一种先进的软件开发方法,它的核心理念是“先写测试,后写代码”。...虽然在实施TDD时需要投入额外的时间和精力,但它在提升软件质量和开发效率方面带来的好处是不容忽视的。

    测试驱动开发的3项修炼--走出TDD丛林

    团队领导者应该鼓励和支持TDD,提供必要的培训和环境,帮助团队成员克服初期困难,最终收获TDD带来的益处。 总之,《测试驱动开发的3项修炼》是理解并掌握TDD的宝贵资源,它不仅介绍了技术层面的实践,也探讨了如何...

    测试驱动的软件开发 TDD (Test-Driven Development)+敏捷开发过程

    TDD 和敏捷开发结合,可以带来以下好处: 1. **更好的设计**:TDD 促使开发者思考如何设计接口和类,使得它们易于测试,从而促进更清晰、更模块化的代码结构。 2. **早期问题发现**:通过先写测试,开发者能在早期...

    try-tdd:引入 tdd 的练习

    **TDD(Test-Driven Development,测试驱动开发)**是一种软件开发方法,它提倡先编写测试用例,然后根据测试失败的情况来编写实现代码,确保代码...记得遵循TDD的原则,一步一步地完成每个测试,体验TDD带来的好处。

    tdd-jbrains:TDD课程代码

    然而,TDD带来的好处也是显著的: - **早期发现问题**:通过测试驱动,问题在早期就被发现,而不是在后期集成阶段。 - **更好的设计**:TDD鼓励模块化和简洁的设计,以满足测试需求。 - **增强信心**:每次修改后...

    tdd-protect:tdd为故意练习提供保护

    虽然TDD带来了诸多益处,但也有一些挑战需要面对: - **初始投入时间**:编写测试用例需要额外的时间,可能导致初期开发速度较慢。 - **过度测试**:可能编写过多不必要的测试,增加了维护负担。 - **测试质量**...

    TDD

    虽然TDD带来了许多好处,但它也有挑战。例如,初学者可能会觉得编写测试用例比直接写功能代码更费时,而且过度依赖测试可能导致过度设计。因此,理解何时应用TDD以及如何平衡测试与实际开发至关重要。 1. **适度的...

    tdd-by-example:尝试肯特·贝克(Kent Beck)关于测试驱动开发的书

    TDD带来的好处包括: 1. **更少的缺陷**:由于代码始终被测试覆盖,因此发现和修复bug的效率更高。 2. **更好的设计**:TDD迫使开发者思考代码的接口和职责,从而设计出更简洁、清晰的架构。 3. **更高的信心**:...

    my-try-tdd:学习使用 Mocha 进行 TDD

    **测试驱动开发(TDD)简介** 测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写任何实际代码之前先编写测试用例...在"my-try-tdd"项目中,你可以亲身体验到这种开发方式带来的好处。

    TDD项目

    TDD带来的好处包括: 1. **更好的设计**:TDD迫使开发者思考如何设计代码以满足测试需求,从而通常导致更清晰的架构。 2. **减少缺陷**:由于测试先行,TDD减少了遗漏错误的可能性。 3. **易于维护**:有完整的测试...

    TDD-Grupo-4

    标题 "TDD-Grupo-4" 暗示我们正在...由于没有具体的项目细节,以上是对TDD方法论的一般性解释和它所带来的益处。在实际操作中,项目可能会包含特定的编程语言、框架和工具的使用,但这些信息在提供的描述中没有提及。

    class-3980:TDD wJUnit

    在实际项目中,TDD与JUnit结合使用可以带来以下好处: 1. **提高代码质量**:TDD迫使开发者首先考虑测试,这通常导致更好的设计和更少的bug。 2. **易于维护**:每个功能都有对应的测试,修改代码时可以快速检查...

    tictactoe-tdd-demo

    《使用TDD方法构建Tic Tac Toe游戏逻辑的Java实践》 TDD(Test-Driven Development,测试驱动开发)是一种编程范式,它...通过逐步迭代,我们不仅能实现一个功能完整的Tic Tac Toe游戏,还能体验到TDD带来的诸多益处。

    mix-test.watch::wrapped_gift:因为TDD很棒

    "wrapped_gift"可能是一个比喻,暗示了TDD能带来的惊喜,即更高质量、更易于维护的代码。 在描述中,"因为TDD很棒"进一步强调了TDD在软件开发中的价值。TDD的好处包括: 1. **提高代码质量**:由于代码必须首先...

    TDD用户界面

    标题中的"TDD用户界面"指的是测试驱动开发(Test-Driven Development, TDD)在构建用户界面部分的应用。TDD是一种软件开发方法,其中...在实践中,TDD可以显著减少回归错误,提高开发效率,从而为项目带来诸多益处。

Global site tag (gtag.js) - Google Analytics