是否可以将BDD包含在一个几乎完成的项目中?

时间:2011-12-14 09:56:38

标签: testing selenium rspec bdd selenium-webdriver

我的软件公司以前从未做过BDD甚至是TDD。之前的测试意味着在部署前几天简单地试用新软件。

我们最近的项目大约完成了70%。我们还将其用作新技术,工具和开发方式的游乐场。我的老板希望我切换到“测试测试”。

我尝试了Selenium 2和RSpec。两者都很有希望,但如何赶上数月的发展?进一步的问题是:

  • 新语言
  • 我自己从未写过一行代码
  • 巨大的部分由自由撰稿人撰写
  • 很多花哨的黑客攻击
  • 除了一些源评论和流程图之外没有任何文档

我能做的就是用Selenium来完成整个过程。这看起来非常痛苦(但仍然可能),因为软件似乎从未意味着以这种方式进行测试。我们有很多动态生成的id,花哨的jQuery等等。甚至不知道如何开始使用RSpec。

那么,是否仍然可以将BDD应用于此项目?或者我应该跑得很远而且永远不会回来?

2 个答案:

答案 0 :(得分:5)

在你开始之前 - 你有没有问过你的老板他从测试中看到了什么?我先向你的老板澄清一下。在编写代码之前,系统级BDD的主要好处在于与业务利益相关者的对话。如果您所做的只是包装现有代码,您将无法获得此功能。在单元级别,主要的好处是质疑课程的责任和他们的行为,这也是你无法获得的。但是,它可能有助于您了解应用程序的价值和每个级别的代码。

如果你的老板只是想尝试BDD或TDD,那么开始一个新项目可能会更简单,甚至可以从其他人那里获取现有项目以包装一些测试。如果他真的想在遗留代码上试验BDD,那么可能值得坚持你所拥有的东西 - @ Esko的书建议摇滚。对现有功能进行更高级别的系统测试可以帮助您在重构较低级别的代码时避免破坏(如果您想要进行测试,则需要这样做)。我还建议Martin Fowler's "Refactoring"

RSpec最适合在单位级别应用BDD,作为TDD的变体。如果您希望围绕整个环境进行自动化测试,请查看Cucumber。它使重用步骤变得更加简单。然后,您可以直接从步骤中调用Selenium。

我在BDD here上放了一页链接,希望能帮助新手更好地理解它。祝你好运。

答案 1 :(得分:3)

阅读本书Working Effectively with Legacy Code可能会有所帮助。还有short version in PDF form