TDD热度在上升,我这里给它降降温
——"
TDD只是一个coder的工具!"
不得不承认,TDD是一种比较一石二鸟的思想,将需求与测试统一,即能严格满足需求,又能对实现进行测试。可是,在能TDD之前,和TDD之后,还有太多的事情要做....
通常,一个开发周期至少要包括:分析,设计,编码,测试4个步骤,其中,分析和设计阶段将会占用一个项目中的大部分时间(这里我不想讨论毫无技术含量的重复开发),可是在分析和设计阶段,tdd基本是毫无用处的。tdd只有在设计的后期,基本完成至少精确到接口的设计后,才能依赖于设计进行测试驱动的编码。而且,作为设计人员,是很难在这个阶段进行测试驱动编码工作,因为没有人能保证第一次设计的粒度能直接精确到可以编写测试驱动的地步(你说你能保证?ok,地球太危险,您还是回到火星去吧...)。最后,测试驱动就只能由进行实现的coder编写。。
在coder们惊叹tdd在数十次迭代后居然给他节省了那么多时间的时候(或者很后悔在一个十分简单的项目里用了tdd的时候),很不幸,真正的测试要开始了。(如果你还认为tdd后不再需要测试的话,您最好期待您的客户都是冤大头)
对于测试最正确的方法,是从需求开始,这个阶段需要回顾需求(如果有专门的测试部门的话,这个阶段会和开发部门的需求分析一起开始。),根据需求写出测试用例,根据测试用例写出测试代码或者手动进行测试。在这个阶段,测试驱动的代码能用么?当然是不行的,测试人员必须验证项目是否直接符合需求。如果你想说tdd代码就代表了需求,那么谁来保证你的tdd代码就真正能代表需求?软件测试不是要测试你的代码质量,而是要保证项目质量!
在掐头去尾以后,tdd能够服务于项目的时间只剩下了code阶段。可惜,在这个阶段,无论是测试驱动code,还是code完再写测试,已经没有本质的区别了(你要硬说有区别,那也只是先有鸡和先有蛋的区别,没什么值得讨论的。),换句话来说,你是想用tdd还是做好单元测试,都是随你的意,喜欢哪种就用哪种。
最后加上一句:没有最好的方法,只有最好的人!
分享到:
相关推荐
标题中的"TDD之Swing一个另类的计算器实现心得"表明了这篇博文是关于使用测试驱动开发(Test-Driven Development, TDD)方法来构建一个基于Java Swing的计算器应用的心得体会。在TDD中,开发者先编写测试用例,然后...
能为无线通信系统提供一个低成本的解决方案"本文结合现有的 无线通信技术!单片机技术以及语音编码调制技术等,研究和探 讨了数字对讲机系统的TDD通信协议方案和整体结构"接着对微 处理器!语音处理器和射频芯片进行了...
1. EasyMock:EasyMock是一个Java库,用于创建和运行模拟对象,以帮助测试代码。在TDD中,我们经常需要隔离被测试的代码,以便于单独测试其行为。EasyMock允许开发者定义预期的行为,模拟合作对象的响应,这样即使在...
另一个标签“工具”则表明可能会讨论到各种用于测试的工具,如JUnit(Java语言的单元测试框架)、pytest(Python的测试框架)、Selenium(Web应用的自动化测试工具)等。这些工具能够帮助开发者编写、执行和管理测试...
- **红**:首先编写一个失败的测试用例,确保测试框架运行正常,并且当前功能尚未实现。 - **绿**:接着编写最简化的代码,使测试用例通过。这里的目的是使测试从红色(失败)变为绿色(成功),而不是实现完整的...
测试用例通常包括一个或多个断言,每个断言都对应着代码的一个特定行为。 4. **测试架构** Laravel提供了诸如`setUp()`和`tearDown()`方法,用于在每个测试前后的准备工作和清理工作。此外,`@test`注解用于标记...
例如,在测试一个依赖于数据库访问的DAO(Data Access Object)时,可以使用EasyMock创建一个模拟的数据库访问层,这样就不必实际连接到数据库,就能测试DAO的逻辑处理是否正确。这种方法大大提高了测试的效率和可靠...
TDD的核心流程可以概括为"红-绿-重构":首先,编写一个失败的单元测试(红色),然后编写最简单的代码使测试通过(绿色),最后重构代码以提高可读性和维护性。这种迭代过程确保了代码始终处于被测试覆盖的状态,...
UMTS-TDD系统是UMTS标准的一个变种,主要用于解决频谱资源有限的情况下的高效利用问题。在NS2中实现UMTS-TDD仿真的关键在于正确模拟各个网络层的行为及其相互作用。下面将从不同层面介绍UMTS-TDD的仿真方法: 1. **...
通过上述步骤,我们成功地使用TDD方法论编写了一个简单的转换器类。TDD不仅帮助我们编写出高质量的代码,还能确保代码符合预期的行为。在实际项目中,建议结合持续集成等最佳实践进一步提高代码质量和开发效率。
5. 电容的规格书上有曲线图,每个电容对不同的频率都有一个 ESR,有一个最小值。电容在低于其谐振频率时候其呈现的是容性,等于谐振频率时表现为电阻性,高于谐振频率时表现为电感性。 6. 音频线上,比如耳机接口上...
当我们进行TDD时,应遵循一些最佳实践,如保持测试小而专注,每个测试用例只验证一个行为;编写可读性强的测试用例名称,清晰地表达测试目的;以及定期运行自动化测试套件,确保代码质量。 在"tdd"这个压缩包的示例...
1. **编写测试**:首先编写一个或多个测试用例来定义所需功能。 2. **运行测试**:运行这些测试,如果它们失败,则表明需要编写实际的代码。 3. **编写功能代码**:实现必要的功能,使先前编写的测试通过。 4. **...
这个测试用例通常由一个测试框架(如JUnit、TestNG等)执行,旨在覆盖即将实现的功能。 2. **绿**:接着,开发者编写足够的代码来使这个测试用例通过。这个阶段的目标是使测试由失败变为成功,而不是追求代码的完美...
- **极限编程的影响**: 尽管TDD最初与极限编程紧密相连,但它也可以作为一个独立的技术应用于各种开发场景。 #### 三、TDD的使用原理 - **基本思想**: 在编写功能代码之前编写测试代码,仅编写使测试通过的功能...
标题中的“TDD测试驱动开发文档详细”表明这是一个关于TDD的详细资料集合,可能涵盖了TDD的理论基础、实践步骤、工具使用等方面。描述中提到的“java TDD测试开发流程”,意味着这些文档专注于Java语言的TDD实践,...