TDD的最终目标:整洁可用的代码 Clean code that works
测试驱动开发的对立面:体系结构驱动的开发(Architecture-driven Development)
TDD首先解决可用的问题,然后考虑整洁,ADD正好相反。
TDD的工作流程:
(1)写一个测试程序
(2)让测试程序编译通过
(3)运行测试程序,发现不能通过
(4)让测试程序可以运行
(5)消除重复设计,优化设计结构
个人理解:
(1)为了能方便地写测试程序,往往需要先写出被测程序函数的Signature
(2)第4步的含义应该是“修改被测程序,以便符合测试程序的断言要求(Assertion)”
(3)第5步也很重要,说明TDD并不否认良好设计的重要性,只是工序上的问题,也就是说,
TDD认为:应该先让代码能工作,再让代码更整洁。
依赖关系与重复设计
依赖关系是各种规模的软件开发中的关键问题。
例子:使用某个数据库厂商的SQL方言,导致系统依赖该数据库产品,无法移植到其他数据库系统。
如果依赖关系方面有问题,表现就是重复设计。
重复设计就是重复的逻辑设计,也就是相同的代码在多个地方出现。
消除重复设计就是消除依赖关系。
To-do List工作方法:
列出需要完成的任务,做完一个划掉一个。
避免过多的头绪影响对当前问题的全神贯注。
三角法(Triangulation)
三角法是让测试运行的办法之一,让测试利落运行的另外两个方法是:伪实现和显明实现。
三角法是TDD的最保守的实现方法。
仅当Test Case达到2个或更多,并且第2个Case需要更一般化的解决方案时,才对代码实施一般化(泛化/抽象?)。
核心思想是:设计时考虑需要支持哪些变化,如果没有看到新的需求,就不要修改现有代码。
重构
TDD对于重构有一个“时时做,一次做一点”的思想。
“为明天编码、为今天设计”(教科书上说“编码为今天,设计为明天”)
“不为代码的将来考虑,你的代码反而更有可能适应将来的需要”
个人理解:
如果一次做太多,可能导致过度设计;
如果老不做,到了被迫做的时候又会畏难。
TDD的局限:
不要指望用TDD代替其他类型的测试:性能测试、安全性测试、压力测试、可用性测试。
UI测试不太适用。
TDD的原则是先写测试代码再写实现代码,所以不要指望在一个已经编码很多的项目中途采用TDD。
分享到:
相关推荐
测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,它的核心思想是先编写测试用例,再编写满足这些测试用例的代码。这种方法强调在编码之前,先明确需求并创建能够验证功能是否正确的测试。TDD...
测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际代码之前先编写测试用例。这种做法有助于确保软件的质量,因为每个功能或模块都必须通过预先定义的测试才能进行下一步的开发。...
测试驱动开发(TDD)是一种软件开发方法,它强调在编写实际功能代码之前先编写测试用例。这种方法由三个主要步骤组成,通常被称为“六字真言”:变红、变绿、重构。在敏捷开发中,TDD被认为是一种提高代码质量、减少...
测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际代码之前先编写测试用例。这种做法有助于确保软件的质量,因为每个功能或模块都必须通过预先定义的测试才能被认为是完整的。在...
《测试驱动开发》(中文版)设想把编程看成是转动曲柄从井里提一桶水上来的过程。如果水桶比较小,那么仅需一个能自由转动的曲柄就可以了。如果水桶比较大而且装满水,那么还没等水桶全部被提上来你就会很累了。你...
读书笔记:Java测试驱动开发
读书笔记:junit junit5 jupiter 单元测试 java单元测试 测试驱动开发
测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,由肯特·贝克(Kent Beck)在2003年出版的《测试驱动开发:By Example》一书中提出并普及。这种方法强调先编写测试代码,再编写满足这些测试...
【测试驱动开发(TDD)】测试驱动开发是一种软件开发方法论,源于极限编程(XP)的实践。TDD强调在编写任何实际功能代码之前,先编写测试代码。它的核心原则是“先写测试,再写代码”。TDD通常遵循红-绿-重构的循环...
读书笔记:《Java 测试驱动开发》学习笔记
读书笔记:《Java 测试驱动开发》读书笔记
读书笔记:Java测试驱动开发中的样例代码
读书笔记:Java测试驱动开发 第7章 源码
读书笔记:Java测试驱动开发 第8章 源码
读书笔记:Java测试驱动开发 第5章 源码
读书笔记:Java测试驱动开发 第4章 源码
读书笔记:Java测试驱动开发 第9章 源码
读书笔记:Java测试驱动开发 第6章 源码