徐昊 · TDD 项目实战 70 讲
徐昊
Thoughtworks 中国区 CTO
18159 人已学习
新⼈⾸单¥98
登录后,你可以任选4讲全文学习
课程目录
已完结/共 88 讲
实战项目二|RESTful开发框架:依赖注入容器 (24讲)
实战项目三|RESTful Web Services (44讲)
徐昊 · TDD 项目实战 70 讲
15
15
1.0x
00:00/00:00
登录|注册

11|作为工程化方法的TDD:更低的成本与更高的效能

你好,我是徐昊。在了解了测试驱动开发中的“测试”,和测试驱动开发中的“驱动”之后。让我们重新复盘一下作为工程化方法的 TDD。

TDD 的流程

第一讲中,我曾给出了一张任务分解法的流程图。用以在 TDD 演示过程中,帮助我们把握整体流程的走向。由于是在课程刚开始给出的,很多内容我们尚未澄清,无法给出更细致的描绘,只能看做对于 TDD 流程大略的描述。
那么在学习了什么是 TDD 中的测试,和什么是 TDD 中的驱动之后,我们将会怎么描述 TDD 的流程呢?
如上图所示,使用 TDD 的核心流程为:
首先将需求分解为功能点,也就是将需求转化为一系列可验证的里程碑点
如果已经存在架构或架构愿景,则依据架构中定义的组件与交互,将功能点分解为不同的功能上下文
如果尚不存在架构愿景,则可以将功能点作为功能上下文;
将功能点按照功能上下文,分解为任务项。也就是进一步将可验证的里程碑点,分解为功能上下文中可验证的任务项;
将任务项转化为自动化测试,进入红 / 绿 / 重构循环,驱动功能上下文内的功能实现;
如果重构涉及功能上下文的重新划分,即提取 / 合并组件,即视作对于架构的重构与梳理。需调整后续功能点中对于功能上下文以及任务项的划分。
如此往复,直到所有功能完成。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

TDD作为一种工程化方法,旨在以更低的成本和更高的效能来实现软件开发。文章首先介绍了TDD的流程,包括将需求分解为功能点、依据架构分解功能点为不同的功能上下文、将任务项转化为自动化测试等核心流程。接着,文章阐述了TDD在工程管理上的优势:降低了判断需求理解成本、提供了高确定性的交付方式、帮助团队达成架构共识、降低了发现架构难以实现需求的成本。通过TDD,团队可以在可工作的软件形态下验证需求理解,同时在任务分解过程中验证架构共识。最终,文章强调TDD是目前已知的效能最高的方法,符合“理解需求,明白架构”是一切工程化软件开发的前提。文章还讨论了TDD中的测试模式、驱动软件开发的方式以及TDD与其他工程方法的区别。总的来说,TDD强调对需求的理解和对架构愿景的维护,需要在需求分解与功能上下文分解上花力气下功夫。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《徐昊 · TDD 项目实战 70 讲》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • aoe
    1. 从认可 TDD 的员工开始推行最容易入手 2. 从想不加班但又想通过技术手段提升效率的员工入手 3. 从不想花费大量时间在线上找 Bug 的员工入手

    作者回复: 局部优化 用处有限

    2022-04-07
    1
  • 夏天
    TDD带来的是工程效率的提升,是降本增效的方法。所以在团队中推行TDD,要先说服sponsor。sponsor愿意买单,才能推行TDD。

    作者回复: sponsor不是说服的,目睹-感知-改变 更有效

    2022-04-11
  • 姑射仙人
    老师,后面会去讲如何在项目型的工程实践中,Restful接口,数据库模型。项目为典型的三层架构,或DDD分层架构。这样的场景下,如何进行TDD,以及在需求大量变动的情况下,保证项目的质量?
    2022-05-21
    3
  • humor
    从自己开始入手,自己在做项目的过程中实践TDD,并取得一定的成果,进而在组内及团队内推广
    2022-04-17
    2
  • 汗香
    与客户交流的过程中以测试代替文档,先得到客户的对需求列表方式的认可
    2022-04-17
    2
  • 少晴
    我目前是项目TDD的推动负责人,我现在很困惑,对于团队成员能力的参差不齐,推动TDD的过程非常困难,很难让团队成员接受TDD思想。很主要的一点是不会写测试代码是他们一直吐槽的点,甚至很多人认为写测试代码所投入的精力远大于功能实现。所以这个如何解决呢
    2023-05-28归属地:广东
    1
  • 姑射仙人
    在团队中从哪里开始推行 TDD 最容易入手? 从正在需要重构的项目入手容易些吧,但是往往这样的项目都有工期,和领导的KPI。敢于推行TDD需要莫大的勇气,感觉又是个一把手工程。
    2022-05-21
  • 姑射仙人
    1. 从工程管理的角度,“判断一个人是否理解了需求”的成本极高。 2. 从工程管理的角度,“判断哪个需求应该从工程化方式交付模式进入探索模式”的成本极高。 3. 从工程管理的角度,“判断团队是否对架构达成了共识”的成本极高。 4. 从工程管理的角度,“发现当前架构愿景不容易实现的需求”成本极高。 感觉自己不懂工程管理,如何补足这方面的知识呢?
    2022-05-21
  • 通过提交代码时检查代码测试覆盖率来推动TDD:前期可以覆盖率较低,但是一旦增加了检查,代码提交失败(红),增加测试代码使其通过检查并提交代码(绿),逐步提高测试覆盖率(重构),整个推动过程也可以保持TDD的节奏。——有种俄罗斯套娃的感觉,手动狗头
    2022-04-11
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部