我使用RoR创建了自己的小项目,我计划它具有中小负载。毫无疑问,我开始使用BDD和TDD(Cucumber和RSpec是精确的,但我也对TestUnit有经验),但是我喜欢它,但是因为它是我自己的项目,并且它有点启动 - 我正在改变其中的很多东西,许多要求,许多想法应该如何工作和寻找。因此,使用BDD和TDD编写代码时,即使只覆盖常见情况,也会耗费太多时间。
我该怎么办?我应该牺牲BDD和TDD的生产力,直到我有一个坚实的基础,现在是生产时间,而不是我写测试的时候?
我现在应该写吗,但尽可能少?我现在只应该写RSpec并忘记黄瓜吗?或者也许只是TestUnit现在测试模型,因为它是最重要的,其他所有东西都可以改变?
在此先感谢!如果我的项目变化很快,我应该使用TDD和BDD吗?
回答
可能是因为使用BDD/TDD可能会使您的工作效率更高。你说你的需求经常变化,也许可能是因为改变/编写测试用例等比编写实际代码更加灵活/快速,然后在每次需求改变时销毁它并编写新代码。也许这样做可以作为一种过滤器/层来审查你想要创建的变化。在花时间实施它之前,它可能会帮助您了解事情是否会起作用。当你实现它时,你当然有TDD的好处,你已经拥有测试套件来确保正确性。
这不是一个政治上正确的答案,我相信这会导致纯粹主义者不高兴。这里是:对于一个小而且快速变化的项目,最好只写代码并跳过TDD和BDD步骤。否则,你会显着延迟完成。这不是一个应该始终遵循的规则,但是如果在您的判断中您了解项目的要求,那么不要为编写代码感到内疚。
就个人而言,如果我重复只是来定义功能,设计,实现等,我倾向于轻松测试。这就是说,一旦我用完成了那个部分,我通常会把这些开发钉扔掉,然后用T/BDD交付一个可交付成果。
在我看来,因为这是你的项目,你真的在驾驶座位。如果您认为TDD/BDD的优势比更多实验/上市时间更快,那么我会坚持下去。另一方面,如果你真的确定项目是否有腿并且可能在废料场中结束,那么在短期内关注更快的学习可能是更好的选择。我想这是我建议你确定你当前的项目目标并将你的实践与他们联系起来的方式。
虽然这并没有给出一个非常具体的答案,但我认为它有点复杂,您可以进行一些更高级别的场景测试,以确保您不会破坏您的某个快速任务功能发生变化,但放弃了TDD/BDD。我个人的经验是,当我练习TDD时,我感觉更有成效,因为它帮助我一次专注于解决一个问题,并且发现自己正在进入更好的节奏。
希望有帮助!
布兰登
嗯,我们在答案中有相似之处。倾向于同意你的看法。 +1(也适用于甜头像:p) – bas 2013-03-16 08:11:39
因此变得过于费时使用BDD和TDD,即使我只涵盖常见的情况总是代码时。
我似乎总是使用TDD提高编码速度。在执行测试时发现“愚蠢的代码错误”,并更快地找到根本原因因素,然后我将不经过我的单元测试。
对于BDD,如果您的要求倾向于彻底改变,我可以想象,您会推迟测试的要求,直到船开始更加统一的方向。
我会争辩说,您要使用TDD(可能不是BDD),因为需求正在发生如此大的变化。 TDD支持可重构的设计+代码库,因此易于更改。在一个项目的过程中(即使只有一两周),使用TDD +重构实际上会比不使用它更快。
- 1. 我应该在新项目开始时使用TDD吗?
- 2. 我应该开始在一个不使用它的项目上使用TDD吗
- 3. 如果我的项目需求不断变化,我应该使用测试用例吗?
- 4. 如果我使用Specflow和Selenium(BDD)
- 5. 如果我使用回声很多,我应该使用输出缓冲吗?
- 6. 开源项目实践TDD/BDD在C#
- 7. 我应该为我的项目使用MVC模式框架吗?
- 8. 我应该为我的大型项目使用MySQL 6.0吗?
- 9. 我应该在我的Bootstrap项目中使用normalize.css吗?
- 10. 我应该在我的新Xcode项目中使用autolayout吗?
- 11. 我应该在我的项目中开始使用java7吗?
- 12. 我应该为我的项目使用LINQ to SQL或XML吗?
- 13. 我应该在我的项目中使用JQueryUI吗?
- 14. 使用Revit API的BDD/TDD
- 15. 如果我使用不同的ViewItemTypes,我应该使用viewHolders吗?
- 16. 使用TDD/BDD开发XSLT
- 17. 我应该让对象变化吗?
- 18. 我应该使用全局变量吗?
- 19. 我应该把我的flex项目放在我的rails项目中吗?
- 20. java项目的文档生成:我应该使用doxygen吗?
- 21. BDD/TDD vs JAD?
- 22. 如果我想要使用Qt中的对话框编辑项目,我应该使用委托类吗?
- 23. TDD/BDD和模型验证
- 24. 如果我可以自己开发,我应该使用CMS吗?
- 25. 如果我使用BLL,我还应该访问DAL吗?
- 26. 带CodeIgniter的BDD/TDD
- 27. 如果依赖项更改,我应该增加项目中的版本号吗?
- 28. 我不应该在getter和setter中使用变量变量吗?
- 29. 如果我从不写入表格,我应该让Hbase memstore真的很小吗?
- 30. 使用BDD(RSpec和Cucumber)的Rails项目
这是团队合作还是单人计划? – 2013-03-15 23:12:50
这看起来似乎违反直觉,但我发现有一个好的测试套件可以帮助我快速更改 – 2013-03-15 23:56:21