博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TDD容易被忽略的五大前提
阅读量:6842 次
发布时间:2019-06-26

本文共 1636 字,大约阅读时间需要 5 分钟。

TDD不仅仅是一项技术,它还是一种完整的编程风格,一种相关行为和思想的综合系统。TDD的五个前提为我们提供了一个操作闭环,就像每个TDD实践者呼吸的空气一样。

软件教练GeePaw Hill在eXperience Agile 2018大会上谈到了TDD的五个容易被忽略的前提。InfoQ通过问答、摘要和文章的形式报道了这次会议。

Hill表示,测试驱动开发(TDD)的五个前提构成了几乎所有TDD实践的基础,它们将我们与这种测试驱动方法联系在一起。

Hill提出的五个前提是:

  • 金钱前提——我们是为了金钱。

  • 判断前提——我们将依赖做出局部决策的个人。

  • 相关性前提——内部质量生产力。

  • 链接前提——我们主要测试非常小的部分。

  • 指导前提——测试和可测试性是一等设计参与者。

Hill说,当你在实施TDD时,这些前提是不可见的,但它们仍然非常重要。在进行TDD时,你必须牢记这些。

金钱前提是关于资金的来源。TDD不是关于测试、改进质量或工艺。Hill说,TDD的目标是更快地交付更多的价值,就是为了金钱。

判断前提意味着我们完全依赖个人的判断。Hill认为,他自己每次都在做同样的事情,但对于其他人来说却不是这样。TDD不是编码算法,当你在进行TDD时,必须做出决策。

相关性前提是指内部质量和生产力是相关的。Hill说,它们之间有着直接的关系,一起起起伏伏,因为它们都依赖于技能和领域知识等东西。Hill认为,保持代码的良好状态并不只是个可选项。

链接前提告诉我们,链的测试方法是测试链中的每个链接。程序被分成较小的部分,你必须对这些部件进行测试。Hill说,测试整个链的成本很高,很难编写测试用例并维护好它们,但是测试链接的成本却是最低的,它提供了最高的覆盖率。

指导前提是说测试和可测试性是设计的一等参与者。Hill说,如果你没有可测试的设计,其实就是没有设计。你一直在质疑如何进行测试,以及到目前为止测试是如何进行的,从第一行代码到最后一行代码。他说,你必须改变你的设计,让测试尽可能变简单。

在进行TDD时,这些前提将在整个过程中发挥作用。Hill说,它们是隐形的,就像你呼吸的空气一样。

在演讲结束后,InfoQ采访了GeePaw Hill。

InfoQ:了解TDD前提为什么会如此重要?

GeePaw Hill:如果我们没有意识到这些前提,就很有可能会搬起石头砸自己的脚。对于其中的每一个前提,我都能举出例子,但还是让我们来看看相关性前提吧。

TDD实践者对代码的内部质量非常着迷,因为他们知道代码且与他们的生产力直接相关。不知道的人很容易将影响内部质量的工作视为一种“清洁”行为。无论人们认为洗碗有多重要,但事实是你可以长时间使用脏盘子却不会受到任何伤害。你可以把清洁工作延后,因为现在你需要的是食物,而不是干净的盘子。你现在需要更多的食物,所以你“这一次”可以跳过洗碗这件事。

但是如果不洗碗就意味着你现在的食物也会减少呢?内部质量并不是清洁工作,因为它是影响生产力的一个主要因素,而不只是一个锦上添花的东西。不良因素所造成的负面生产力效应是非常迅速的,比如糟糕的命名、引入变量和初始化之间的长时间延迟等。理解相关性前提的人永远不会将内部代码质量仅仅视为一个可选项。

InfoQ:我们如何提高TDD技能?

Hill:TDD通常被视为一项简单的技术,但实际上它确实是一种整体的编程风格,而不只是一种新的附加机制,它是相关行为和思想的一种综合系统。空手道技术熟练的人被称为karetekas,而在柔道中他们被称为judoka。从古老的风格到现代的综合论,有点像从kareteka到judoka。它涉及很多不同的肌肉群、不同的动作、不同的想法。

话说回来,为了获得丰富的技能,我们必须做同样的事:

  1. 找一个安静的地方,让你敞开心扉。
  2. 阅读和研究。
  3. 练习。

老师或导师可以帮助你完成这三件事,但他们不能替你去做。与所有复杂的学习一样,TDD没有捷径。

查看英文原文:

转载地址:http://wqdul.baihongyu.com/

你可能感兴趣的文章
私有云2.0时代来临,OpenStack已上车
查看>>
Every Programmer Should Know These Latency Numbers
查看>>
WCF后续之旅(15): 逻辑地址和物理地址
查看>>
云计算变革十字路口 CIO转型的历史机遇
查看>>
memcached的分布式算法-Consistent Hashing
查看>>
韩忠恒:解读Power System智慧运算基础
查看>>
来自Reddit的声音:网络人员对SDN说“不”
查看>>
贵阳“小步快跑”搭上云计算的早班车
查看>>
配置少量固态硬盘即能大幅提升性能
查看>>
国内车载信息安全市场 东软靠技术创新的行动力独树一帜
查看>>
中国银行携手IBM成功建成智能化网点
查看>>
再谈大型数据中心的运维工作
查看>>
报告显示电话监控技术处于发展浪潮
查看>>
安全研究人员发现可以利用推特控制僵尸网络
查看>>
三种在Linux上创建或扩展交换分区的简单方法
查看>>
LMD Tool:Linux恶意软件检测工具
查看>>
铜缆宽带接入即将走向末路?
查看>>
哪些技术对5G贡献最大?毫米波成工程师追捧之一
查看>>
企业级SaaS服务的现实之路:放弃团队 直指公司
查看>>
你应该成为 Web 开发者的 5 大理由
查看>>