敏捷与TDD真的不同吗?如果是这样,主要区别是什么?敏捷与TDD不同吗?如果是这样,主要区别是什么?
回答
http://en.wikipedia.org/wiki/Agile_software_development
http://en.wikipedia.org/wiki/Test-driven_development
总之,TDD和敏捷真正专注于不同的方面,而不是相互排斥彼此。
TDD非常关注如何编写代码(因此倾向于专门针对个人或小组开发人员的工作周期)。
敏捷确实专注于整体开发过程,而不仅仅是如何编写和测试代码(因此专注于项目管理和开发人员组,而不是特定开发人员如何编写代码)。
的差别是巨大的,因为我觉得有一个非常简单的区分:
敏捷是一种理念,而TDD是一个特定的方法。
有很多方法可以让你工作敏捷,但总的来说,你要么是在做TDD,要么是你不是。您可以在不使用TDD(或其变体)的情况下使用敏捷,并且您可以使用TDD而不会变得敏捷(尽管我会有点惊讶)。
敏捷是什么,是内嵌在这里列出的值 - http://agilemanifesto.org/
XP(Extreme Programming)是有资格作为灵活的方法。还有其他的东西(Scrum,Crystal等等)
TDD(测试驱动开发)是XP的特定工程实践 - 这是一种用增量块编写代码+驱动设计的方法。你先写一个测试,让它通过最简单的可能的改变,然后重构来改进结构/设计。你做这个循环,直到你完成。
我打算扮演魔鬼的拥护者并说,是的。 TDD和敏捷是同样的东西,只是在不同的规模。
忍受着我,在这里。
首先,TDD鼓励您在实现目标之前制定自己想要实现的计划。你不会考虑你将如何达到目标。你只是想想如何证明你即将写的东西是有价值的,并且你弄清楚你的知识。这与项目的理想来源和敏捷方法收集需求的方式非常相似。
然后,您尽可能少地获得有关工作的反馈意见。使用TDD时,这意味着红色或绿色条。在更高层次上,敏捷方法鼓励您展示并获取利益相关者的反馈,或者(最好)发布到生产环境,看看它是否有效,以及是否有人使用它。
然后你计算出下一步要做的工作,然后你写下计划的下一部分。
敏捷方法论也可能使用估计和优先级划分,但这些主要与分配预算和确定工作是否值得首先完成 - 哪些开发人员在小规模自然开展工作有关。
敏捷方法是迭代的 - 也就是说,计划,实施,交付和反馈的周期是周期性的。 TDD也是如此,步骤完全相同。
敏捷方法论通常强调通信,对话和轻量级文档。 TDD也可以用作文档的一种形式,特别是如果您将测试名称变为有意义的句子并使用与业务一起使用的相同语言和实际示例。这也可以鼓励沟通和交谈。
敏捷方法鼓励对过去的反思和学习。 TDD有这个可爱的红酒吧,它可以帮助你很快做到这一点。
如果向上扩展TDD,则会得到验收测试或BDD样式的方案。进一步开始进入特征注入和其他形式的视觉驱动分析。更进一步,您仍在考虑发布的项目是保留您的市场份额,还是提供您想要的选项,或者实现其最初的愿景。测试变得越来越大,但不管敏捷方法是什么,写入过程都足够了,获得反馈和持续学习仍然是一样的。
帮助敏捷在大规模获得成功的所有规则都可以适用于小规模的TDD,反之亦然。 (我努力去想任何例外,不能)。
所以,没有。敏捷与TDD没有区别。这只是TDD完成 - 更大。
+1,尽管有些不同意见。你做了一个很好的案例。但是,TDD本身并没有涉及到敏捷方面的内容 - 我主要考虑的是个人与交互过程和工具; TDD非常适合流程,并且在人际关系领域并没有多大作用,尽管它与Pairing完美搭配,这完全与I&I有关。尽管如此 - 你做了一个好例子。 – 2010-06-29 13:12:23
嗯,我更倾向于BDD,它是TDD的一种变体,TDD将其描述为“TDD做得很好”。在BDD中,我们使用商业语言*来增强对话并鼓励沟通,我们比我们的工具更重视它。基于此,我在敏捷2010年做了几场会议,所以非常感谢您的鼓励! – Lunivore 2010-06-29 14:23:04
你做出了很好的论点,但你错了 - 如果仅仅是因为你不需要做TDD来敏捷或者敏捷地使用TDD。你所做的事情是,TDD是敏捷方法论的一个很好的例子,*是*绝对正确,但说两者相同就会产生误导 - 我怀疑这是为什么这个问题首先出现。 – Murph 2010-06-30 12:07:18
- 1. 敏捷软件开发与极限编程的主要区别是什么?
- 2. 什么是敏捷方法?
- 3. 是吗?如果是这样,为什么这两个常规语法不同呢?
- 4. 这两个ID之间的主要区别是什么?
- 5. NOT IN与<> ALL之间的主要区别是什么?
- 6. 硒与硒的主要区别是什么
- 7. x86与x386晶体管之间的主要区别是什么
- 8. 什么是TFS敏捷问题?
- 9. “TDD”是什么样的测试?
- 10. Scrum和敏捷开发有什么区别?
- 11. 是什么区别:
- 12. XAMPP(用于Windows)优于WampServer吗?如果是这样,为什么?
- 13. 我想不通,为什么头是不是在这个“敏感”的WordPress主题
- 14. 敏捷与OOP之间的关系是什么?
- 15. MPI vs GPU vs Hadoop,这三种并行性的主要区别是什么?
- 16. 是什么就是什么这两个之间的区别,除了与除BaseException
- 17. 是C#6吗? (猫王op)线程安全吗?如果是这样,怎么样?
- 18. 发布频率是敏捷和瀑布之间唯一真正的区别吗?
- 19. fwrite和write之间的主要区别是什么?
- 20. 以下陈述的主要区别是什么?
- 21. hmc和backoffice的主要区别是什么?
- 22. Rails 1.X和2.X之间的主要区别是什么
- 23. web服务和wcf的主要区别是什么?
- 24. HAML,SASS/Compass和ERB的主要区别是什么?
- 25. java中的Array和Hashmap之间的主要区别是什么?
- 26. 连接商店时Mobx.inject Mobx.observer的主要区别是什么?
- 27. Ruby 1.8.6和1.9.1之间的主要区别是什么?
- 28. Dictionary和Hashtable之间的主要区别是什么
- 29. 框架和工具包之间的主要区别是什么?
- 30. WebSocket和http协议的主要区别是什么?
TDD是特定于开发的,而敏捷更多的是指项目风格(尽管我明白你的意思)。如果使用正确,TDD可以是一个很好的开发实践。使用从瀑布开始的TDD,并将其结合到敏捷的最后。另外,请看[BDD](https://en.wikipedia.org/wiki/Behavior-driven_development),因为有很多次它将超过TDD – Jacksonkr 2017-06-30 14:57:40