.net BDD测试框架

.net BDD测试框架,.net,ruby,cucumber,bdd,specflow,.net,Ruby,Cucumber,Bdd,Specflow,我们是一家微软公司,拥有相当成熟的技术,拥有非常熟练的.net资源。我们从一开始就一直在使用TDD,现在正在冒险进入BDD领域。我们的工作由敏捷团队交付,使用强大的敏捷实践 我们的最终可测试产品是web、wpf和windows窗体 测试资源已经介绍了BDD,并且希望学习并使用Ruby和Cucumber来执行测试。开发人员对此有一些阻力,因为我们更愿意坚持使用相同的技术堆栈,并使用Specflow(或类似技术)。测试人员的观点是,它更容易学习 我想确保开发人员和测试人员没有偏见,引入另一种技术是值

我们是一家微软公司,拥有相当成熟的技术,拥有非常熟练的.net资源。我们从一开始就一直在使用TDD,现在正在冒险进入BDD领域。我们的工作由敏捷团队交付,使用强大的敏捷实践

我们的最终可测试产品是web、wpf和windows窗体

测试资源已经介绍了BDD,并且希望学习并使用Ruby和Cucumber来执行测试。开发人员对此有一些阻力,因为我们更愿意坚持使用相同的技术堆栈,并使用Specflow(或类似技术)。测试人员的观点是,它更容易学习


我想确保开发人员和测试人员没有偏见,引入另一种技术是值得的。

SpecFlow和Cucumber都使用完全相同的业务人员可读语言(gerkhin)来指定功能;唯一的区别在于您是用C#(例如使用WatiN来驱动基于浏览器的测试)还是用Ruby(例如使用Watir)来编写步骤定义。因此,无论您选择哪种测试,测试都将以非常相似的方式进行,并将产生类似的好处


我想在Cucumber上使用SpecFlow的好处是,可以很容易地从Visual Studio以及TeamCity或其他基于.NET的持续集成工具运行测试。另一方面,当Cucumber测试被更改或添加新测试时,您不需要等待重新编译(但是,测试代码的更改通常伴随着生产代码的更改,因此这可能不会带来显著的节约)。当涉及到测试基于WPF或基于Windows窗体的应用程序时,我认为从.NET控制这些应用程序会更容易(但可能有一些Ruby库用于控制其他GUI应用程序…)

我们有类似的设置,我们有测试人员编写和实施场景后面的步骤。我们的测试人员非常乐意使用.net和c。我认为,如果引入另一种技术,开发人员在提交测试之前不会运行测试,在测试失败时也不会对测试负责,因为调试测试将非常困难。这意味着您的构建将被破坏,而不是工作


对于测试人员来说,最好开始编写场景并将其传递给开发人员,由开发人员将该特性引入到应用程序中来实现。然后,他们可能会与开发人员配对并一起实现场景,直到他们自己能够轻松完成为止。

我一直在使用SpecFlow,到目前为止,我发现它非常令人满意。但BDD背后的本质和理念比工具更重要。所有这些工具都可以为业务和开发人员提供一个通用的平台,以形成对系统的共同理解。这是一篇关于BDD和SpecFlow的非常好的帖子

BDD也可以让你正确地进行TDD


编写单元测试的人与编写应用程序代码的人不一样吗?@jamesharvey-Cucumber和SpecFlow不是单元测试框架。“它的可接受程度更高。”唐·罗比:尽管Cucumber等人的传统使用模式实际上是验收测试,但完全有可能将其用于单元测试。在最近的一个项目中,我们在SpecFlow中编写了一些数据密集型单元测试,这仅仅是因为使用gerkhin的表结构进行测试比使用NUnit编写时可读性更强。开发人员目前编写单元测试和集成测试。我们需要跨职能团队。