什么行为驱动开发(BDD)工具/框架可用于Microsoft Stack?

时间:2012-01-19 06:47:43

标签: c# asp.net .net frameworks bdd

我对Behavior Driven Development (BDD)

感兴趣

.Net平台(最好是C#和ASP.Net)是否有适当的框架和/或工具?

什么时候BDD被证明最适合在现实场景中使用? (辅助问题)

7 个答案:

答案 0 :(得分:31)

+1人们对场景的SpecFlow推荐;从未使用它,但听到了很多关于它的好东西。我一直在使用普通的旧NUnit和一些像this这样的DSL。 MSTest的工作方式类似。

可以在单位空间中进行BDD,这就是MSpec的目的。我个人非常讨厌MSpec,但是这里的其他团队都喜欢它。他们喜欢编写代码如何工作的例子。我想说明为什么这种行为是有价值的。这是一个微妙的区别,如果你不担心在一个单位级别这样做,它不会打你。

其他框架包括Concordion,Fitnesse.NET(请将FitSharp放在它背后!)和TickSpec。

在现实世界中,长期以来最有价值的BDD是对话,而不是自动化测试。以下是一些快速提示和技巧:

  • 不要对不断变化的东西进行自动化测试。它只是承诺你错了。等到用户界面稍微稳定一点,然后再进行操作。

  • 如果您不关心UI,但关心数据完整性,请通过控制器/演示者层编写方案(例如:用于管理员屏幕)。

  • 不要以登录开始。首先描述您可能登录的应用程序的一个有价值的部分。首先执行此操作(假设您只有一个用户)。您将获得有关风险位的更快反馈。

  • 寻求有关风险位的快速反馈,这通常是您以前从未做过的事情。使用方案围绕它们进行对话。写下你发现的任何有趣的东西,但忘记那些显而易见的情景 - 它们是显而易见的!不要担心自动启动它们。与对话自动化相比,写对话更重要。

祝你好运!如果您想了解有关BDD的更多信息,我会整理一页相关链接here

答案 1 :(得分:28)

在谷歌上搜索我发现Behavior Driven Development (BDD) with SpecFlow and ASP.NET MVC。您可能会发现它很有用,请看一下。同时浏览Behavior-Driven Development with SpecFlow and WatiN

关于Pros and Cons of BDD

的精彩演示

频道9视频Behavior-Driven Development in the Real World

最后但并非最不重要的是InfoQ文章Behavior Driven Development In .NET

答案 2 :(得分:6)

LightBDD是一个开源框架,允许编写易于阅读但在项目变大时易于维护和扩展的BDD测试。

它提供的主要功能是:

  • 易于阅读的场景,
  • 易于维护测试,
  • 与众所周知的测试框架集成(NUnit / MbUnit / MsTest / xUnit),
  • 场景步骤执行跟踪和执行时间测量,
  • 以HTML(an example report),XML和纯文本格式测试执行摘要报告生成。

它基于纯粹在代码中编写的测试,这意味着对重构,代码分析,测试运行以及Visual Studio / Intellisense / Resharper提供的所有其他功能的本机支持。

在此框架中编写的示例测试如下所示:

[TestFixture]
[FeatureDescription(
@"In order to access personal data
As an user
I want to login into system")] //feature description
[Label("Story-1")]
public partial class Login_feature //feature name
{
    [Test]
    [Label("Ticket-1")]
    public void Successful_login() //scenario name
    {
        Runner.RunScenario(

            Given_user_is_about_to_login, //steps
            Given_user_entered_valid_login,
            Given_user_entered_valid_password,
            When_user_clicked_login_button,
            Then_login_is_successful,
            Then_welcome_message_is_returned_containing_user_name);
    }
}

有关框架的更多信息,请访问project wiki pageproject main page

答案 3 :(得分:5)

同样MSpec是一个很好的框架。

我在你提到的Microsoft堆栈中使用它(C#,ASP.Net和MVC),我喜欢他的语法。

BDD帮助您以业务/功能导向的方式思考,而不仅仅是以代码方式。 因此,您最关注商业价值。

它还有助于用户验收测试,以便在您和客户之间建立信任。

答案 4 :(得分:2)

有一个很棒的工具,名为SpecFlow。 SpecFlow的灵感来自Cucumber--着名的Ruby on Rails BDD框架。并且具有很大的优势。

你一定要看看。

答案 5 :(得分:0)

一个有趣的BDD框架是Concordion.NET。它是Microsoft堆栈的开源BDD框架,它使用NUnit来执行Concordion.NET测试:https://github.com/concordion/concordion-net 由于Concordion规范是用简单的HTML编写的,因此它为生活文档系统提供了良好的基础。您可以使用像BlueGriffon这样的所见即所得(WYSIWYG)编辑器来描述您在简单HTML文档中的软件预期行为,并检测它们以验证您所测试的系统。 根据{{​​3}},Concordion.NET专注于业务可读输入(并且还达到业务可读输出)。它甚至超越BDD并支持ATDD:excellent classification of BDD tools

答案 6 :(得分:0)

Spec4Net(https://bitbucket.org/fthomsen/spec4net/)也是一个不错的框架。我们在工作中广泛使用它。学习曲线几乎不存在,自然流动似乎很直观。