`
dongbin
  • 浏览: 244578 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

TDD的粒度

TDD 
阅读更多
一般来讲,TDD的开发方式由三个步骤组成:
1. 编写一个失败的测试用例
2. 编写功能代码让这个测试通过
3. 如果代码有坏味道,就Refactor,否则goto 1

但是实际开发中,在哪一个层面上编写这个失败的用例是一个更为关键的问题。比如说一个Invitation的需求,我们可以

1. 用Selenium编写一个Acceptance Test,
2. 对Controller 开始编写一个Functional Test
3. 编写一个ActionMailer Test.
4. Invitation Model的 Unit Tests

选择哪一个测试好呢?显然这4个测试的粒度是依次递减的。我习惯于从最小粒度的Test开始编写,因为这样我能够保证每次都以最快速度来通过测试,步入下一个迭代。

这里有一个疑问,大粒度的Test往往能够覆盖细粒度Test所描述的行为,那么细粒度Test是否是一种增加开发成本的冗余?显然不是。一个Model里面的Bug在Functional Test里面发现和Unit Tests里面发现成本是不一样的。

从最小粒度的Test开始并不是容易的事情,因为当我从一个失败的Test中的反馈才知道通过这个Test还要从更底层开始实现,那么这个Test的粒度很有可能过大了。我的做法是注释掉这个Test,在底层编写更细粒度的Test,通过以后回过头来处理这个测试。有很强的Prefactoring能力也许会降低这种探索的成本,不过对于我这种智商,还是从最小粒度的测试开始比较好。
分享到:
评论

相关推荐

    node-tdd:使用Node和TDD启动测试应用程序

    10. **最佳实践**:探讨Node.js和TDD的最佳实践,如代码组织、测试结构、测试的粒度控制等。 通过以上知识点的学习和实践,你将能够使用Node.js和TDD构建出高质量、可维护的应用程序。记得,TDD不仅是一种技术工具...

    TDD在Unity3D游戏项目开发中的实践

    关于TDD测试驱动开发的...待测试代码完成之后,我们再将目光转移到逻辑代码,根据测试的要求,完成逻辑代码,使之能够通过经过拆分后粒度已经很小的测试。这样做有什么好处呢?要将任务拆分成可测试的各个测试用例,这

    LTE-TDD/FDD 协议栈 R9

    - **更精细的资源分配**:通过更小的时间和频率粒度,更有效地利用无线资源。 - **更低的延迟**:通过优化协议栈的各个层次,实现更低的端到端传输延迟。 - **增强型VoLTE**:提高了语音通话的质量和稳定性。 - *...

    TDD

    在实际应用中,开发者需要根据项目需求和团队习惯来平衡测试的粒度和数量。 总的来说,TDD是一种有效的开发实践,可以帮助开发者写出更高质量、更易维护的代码。虽然它需要花费更多的时间在测试上,但长期来看,...

    测试引起的设计损坏或TDD为何如此痛苦

    其次,TDD倾向于创建大量细粒度的类和接口,这可能导致过度设计,使得系统结构过于分散,难以理解和管理。此外,测试驱动的方式可能会限制创新思维,因为开发者可能会受限于已有的测试框架,而不去探索更高效的设计...

    tdd-ex4-java

    你可能需要关注代码的命名、函数的粒度、类的职责以及模块之间的依赖关系,使用设计模式如单一职责原则(SRP)、开闭原则(OCP)等来改进代码结构。 "不要忘记使用自动化测试保护自己免受回归"这部分提示,你需要确保在...

    测试驱动开发 测试驱动开发 测试驱动开发 测试驱动开发

    - **保持测试粒度小**:每个测试用例应专注于一个独立的功能点,避免过多依赖。 - **隔离测试**:确保每个测试独立运行,不受其他测试的影响。 - **持续集成**:结合持续集成(CI)工具,如Jenkins或Travis CI,自动...

    电信设备-多载波时分双工移动通信系统分配无线资源的方法.zip

    9. **未来发展趋势**:随着5G和未来6G的发展,MC-TDD系统将进一步优化,例如引入更精细的资源粒度、更灵活的帧结构,以及基于AI的智能资源分配。 综上所述,多载波时分双工移动通信系统中的无线资源分配是一项复杂...

    4、5G高负荷预警小区及4、5G预警场景定义说明.docx

    5G高负荷预警小区算法同样基于15分钟粒度的数据,但考量的指标包括上行空分PRB利用率(EU0522)、下行空分PRB利用率(EU0523)以及PDCCH(Physical Downlink Control Channel,物理下行控制信道)信道CCE(Control ...

    py-tdd-by-example:使用 Python 的 Kent Beck 在“Test Driven Development by Example”中给出的示例演练

    在这个存储库中,我试图将提交的粒度与 Kent 在书中描述的“微小”步骤相匹配,给出在任何普通存储库中都会在提交之间的空间中发生的过程的历史记录。 这并不是一个使用 TDD 开发的应用程序的提交历史应该是什么...

    课程论文_管登荣_MF16320201

    描述中提到的几点内容似乎涉及软件开发过程中的某些实践和策略,特别是强调了细粒度设计的成本、自动化代码生成的效果以及测试优先方法对设计的影响。 在标签部分,虽然没有给出具体信息,但从内容来看,这篇论文...

    Growing_Object-Oriented_Software,_Guided_By_Tests_(2009)

    而“microscope”则代表了单元测试本身,它允许开发者以微小的粒度观察代码的执行和行为。 书中还提出,软件开发应当借鉴科学实验的方法,通过重复性的实验来确保开发过程的可控性和软件产品的稳定性。作者们强调了...

    D上行干扰检测数据采集指导书PEACV.pdf

    PEAC平台目前仅支持60分钟粒度的话统分析。 4. 反向频谱数据(CHR):首先通过话统数据分析筛选出可能受到干扰的小区,然后使用MML命令GET CELLRICDATA远程启动基带数据采集,采集至少10分钟后获取内部CHR数据。在...

    refactor clean code design pattern书单

    Martin(Uncle Bob)的《Clean Code》一书深入探讨了如何写出高质量的代码,强调了代码应具有良好的命名、函数和类的粒度控制、注释的适当使用等原则。 3. **设计模式**:设计模式是解决软件设计中常见问题的通用...

    4-5G高负荷预警小区及4-5G预警场景定义说明.docx

    - **5G TDD(2.6G:1TR、2TR、4TR)、5G TDD(2.6G:8TR)**: - 持续5分钟内,如果小区RRC连接最大数超过400,并且(上行PRB利用率大于90%且上行速率低于0.5Mbps)或(下行PRB利用率大于90%且下行速率低于10Mbps)...

    电信设备-时分双工移动通信系统中上下行资源的分配方法和装置.zip

    5G NR进一步增强了TDD系统的灵活性,引入了更细粒度的资源分配单位,如-mini-slot和符号级别的资源分配。此外,还支持更复杂的帧结构和自定义的配比,以适应多样化的业务场景和边缘计算等新技术。 综上所述,时分...

    chai-moment:柴的日期断言,由瞬间驱动

    时刻 由支持的日期和格式化日期字符串的匹配器使用另请参阅和。浏览器端包括在彩灯和彩灯之后的彩灯: [removed][removed][removed][removed][removed][removed]... 使用tdd样式的断言时,如果不使用列出的粒度之一,

    45G帧结构整理.pptx

    - **RE (Resource Element)**:物理层资源的最小粒度,一个RE由一个子载波和一个OFDM符号组成。 - **RB (Resource Block)**:频域最小调度单位,包含12个连续的子载波,在时域上持续一个时隙。 不同带宽下的RB数目...

Global site tag (gtag.js) - Google Analytics