我有自己的小项目,我正在使用RoR创建,我计划用中小负载 毫无疑问,我开始使用BDD和TDD(确切地说是Cucumber和RSpec,但我对TestUnit也很有经验),我喜欢它但是因为它是我自己的项目而且它有点启动 - 我在改变很多东西,很多要求,许多想法应该如何工作和看。因此,即使我只覆盖常见情况,也总是使用BDD和TDD对其进行编码会花费太多时间 我该怎么办?我是否应该牺牲BDD和TDD来提高工作效率,直到我有一个坚实的基础和生产时间,而不是我写测试? 我应该现在写它们,但尽可能少吗?我现在应该只写RSpec而忘记黄瓜吗?或者也许只是TestUnit来测试模型,因为它是最重要的,其他一切都可以改变? 提前谢谢!
答案 0 :(得分:3)
这不是一个政治上正确的答案,我相信它会导致纯粹主义者感到不安。这里是:对于一个小的,快速变化的项目,最好只编写代码并跳过TDD和BDD步骤。否则你将大大延迟完成。这不是应该始终遵循的规则,但如果您根据自己的判断理解项目的要求,那么不要为编写代码感到内疚。
答案 1 :(得分:2)
使用BDD / TDD可能会提高您的工作效率。您说您的需求经常发生变化,也许可能是更改/编写测试用例等比编写实际代码更灵活/快速,然后在每次需求更改时销毁它并编写新代码。也许这样做可以作为一种过滤器/层,通过它来审查您想要创建的更改。在花时间实现之前,它可能会帮助您了解事情是否有效。当你实现它时,你当然有TDD的好处,你已经拥有测试套件以确保正确性。
答案 2 :(得分:2)
就个人而言,如果我正在迭代只是来定义功能,设计,实现等,我倾向于对测试有所了解。
那就是说,一旦我完成那部分,我通常会抛弃那些开发高峰,然后使用T / BDD推进交付。
答案 3 :(得分:1)
在我看来,既然这是你的项目,那么你真的处于驾驶员的位置。如果您认为TDD / BDD的优势强于实验的更多优势/更快的上市时间,那么我会说坚持下去。另一方面,如果你真的确定项目是否有腿并且它可能最终在废料场,那么在短期内专注于更快的学习可能是更好的选择。我想这是我建议您确定项目当前目标并与之保持一致的方法。
虽然这没有给出一个非常具体的答案,但我认为有点回合,你可以做一些更高级别的情景测试,以确保你没有破坏你的一个快速功能中的任何主要功能改变,但在TDD / BDD上放弃了全部。我个人的经验是,在练习TDD时我感觉更有效率,因为它帮助我专注于一次解决一个问题,并且我发现自己进入了更好的节奏。
希望有所帮助!
布兰登答案 4 :(得分:0)
因此,使用BDD和TDD始终对其进行编码会变得非常耗时,即使我只涵盖常见情况。
我似乎总是使用TDD来提高编码速度。在执行测试时找到'愚蠢的编码错误'并找到更快的根本原因因素而不是我的单元测试。
对于BDD,如果你的要求倾向于大修,我可以想象你会延迟测试需求,直到船开始向更加统一的方向发展。
答案 5 :(得分:0)
我认为你想要精确地使用TDD(可能不是BDD),因为要求正在发生如此大的变化。 TDD使设计+代码库具有可重构性,因此易于更改。在项目过程中(即使只有一周或两周),使用TDD + Refactoring实际上比不使用它更快。