11|作为工程化方法的TDD:更低的成本与更高的效能
徐昊
你好,我是徐昊。在了解了测试驱动开发中的“测试”,和测试驱动开发中的“驱动”之后。让我们重新复盘一下作为工程化方法的 TDD。
TDD 的流程
在第一讲中,我曾给出了一张任务分解法的流程图。用以在 TDD 演示过程中,帮助我们把握整体流程的走向。由于是在课程刚开始给出的,很多内容我们尚未澄清,无法给出更细致的描绘,只能看做对于 TDD 流程大略的描述。
那么在学习了什么是 TDD 中的测试,和什么是 TDD 中的驱动之后,我们将会怎么描述 TDD 的流程呢?
如上图所示,使用 TDD 的核心流程为:
首先将需求分解为功能点,也就是将需求转化为一系列可验证的里程碑点;
如果已经存在架构或架构愿景,则依据架构中定义的组件与交互,将功能点分解为不同的功能上下文;
如果尚不存在架构愿景,则可以将功能点作为功能上下文;
将功能点按照功能上下文,分解为任务项。也就是进一步将可验证的里程碑点,分解为功能上下文中可验证的任务项;
将任务项转化为自动化测试,进入红 / 绿 / 重构循环,驱动功能上下文内的功能实现;
如果重构涉及功能上下文的重新划分,即提取 / 合并组件,即视作对于架构的重构与梳理。需调整后续功能点中对于功能上下文以及任务项的划分。
如此往复,直到所有功能完成。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
TDD作为一种工程化方法,旨在以更低的成本和更高的效能来实现软件开发。文章首先介绍了TDD的流程,包括将需求分解为功能点、依据架构分解功能点为不同的功能上下文、将任务项转化为自动化测试等核心流程。接着,文章阐述了TDD在工程管理上的优势:降低了判断需求理解成本、提供了高确定性的交付方式、帮助团队达成架构共识、降低了发现架构难以实现需求的成本。通过TDD,团队可以在可工作的软件形态下验证需求理解,同时在任务分解过程中验证架构共识。最终,文章强调TDD是目前已知的效能最高的方法,符合“理解需求,明白架构”是一切工程化软件开发的前提。文章还讨论了TDD中的测试模式、驱动软件开发的方式以及TDD与其他工程方法的区别。总的来说,TDD强调对需求的理解和对架构愿景的维护,需要在需求分解与功能上下文分解上花力气下功夫。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《徐昊 · TDD 项目实战 70 讲》,新⼈⾸单¥98
《徐昊 · TDD 项目实战 70 讲》,新⼈⾸单¥98
立即购买
登录 后留言
全部留言(9)
- 最新
- 精选
- aoe1. 从认可 TDD 的员工开始推行最容易入手 2. 从想不加班但又想通过技术手段提升效率的员工入手 3. 从不想花费大量时间在线上找 Bug 的员工入手
作者回复: 局部优化 用处有限
2022-04-071 - 夏天TDD带来的是工程效率的提升,是降本增效的方法。所以在团队中推行TDD,要先说服sponsor。sponsor愿意买单,才能推行TDD。
作者回复: sponsor不是说服的,目睹-感知-改变 更有效
2022-04-11 - 姑射仙人老师,后面会去讲如何在项目型的工程实践中,Restful接口,数据库模型。项目为典型的三层架构,或DDD分层架构。这样的场景下,如何进行TDD,以及在需求大量变动的情况下,保证项目的质量?2022-05-213
- humor从自己开始入手,自己在做项目的过程中实践TDD,并取得一定的成果,进而在组内及团队内推广2022-04-172
- 汗香与客户交流的过程中以测试代替文档,先得到客户的对需求列表方式的认可2022-04-172
- 少晴我目前是项目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
收起评论