我对Behavior Driven Development (BDD)
感兴趣.Net平台(最好是C#和ASP.Net)是否有适当的框架和/或工具?
什么时候BDD被证明最适合在现实场景中使用? (辅助问题)
答案 0 :(得分:31)
+1人们对场景的SpecFlow推荐;从未使用它,但听到了很多关于它的好东西。我一直在使用普通的旧NUnit和一些像this这样的DSL。 MSTest的工作方式类似。
您可以在单位空间中进行BDD,这就是MSpec的目的。我个人非常讨厌MSpec,但是这里的其他团队都喜欢它。他们喜欢编写代码如何工作的例子。我想说明为什么这种行为是有价值的。这是一个微妙的区别,如果你不担心在一个单位级别这样做,它不会打你。
其他框架包括Concordion,Fitnesse.NET(请将FitSharp放在它背后!)和TickSpec。
在现实世界中,长期以来最有价值的BDD是对话,而不是自动化测试。以下是一些快速提示和技巧:
不要对不断变化的东西进行自动化测试。它只是承诺你错了。等到用户界面稍微稳定一点,然后再进行操作。
如果您不关心UI,但关心数据完整性,请通过控制器/演示者层编写方案(例如:用于管理员屏幕)。
不要以登录开始。首先描述您可能登录的应用程序的一个有价值的部分。首先执行此操作(假设您只有一个用户)。您将获得有关风险位的更快反馈。
寻求有关风险位的快速反馈,这通常是您以前从未做过的事情。使用方案围绕它们进行对话。写下你发现的任何有趣的东西,但忘记那些显而易见的情景 - 它们是显而易见的!不要担心自动启动它们。与对话自动化相比,写对话更重要。
答案 1 :(得分:28)
在谷歌上搜索我发现Behavior Driven Development (BDD) with SpecFlow and ASP.NET MVC。您可能会发现它很有用,请看一下。同时浏览Behavior-Driven Development with SpecFlow and WatiN
的精彩演示频道9视频Behavior-Driven Development in the Real World
最后但并非最不重要的是InfoQ文章Behavior Driven Development In .NET
答案 2 :(得分:6)
LightBDD是一个开源框架,允许编写易于阅读但在项目变大时易于维护和扩展的BDD测试。
它提供的主要功能是:
它基于纯粹在代码中编写的测试,这意味着对重构,代码分析,测试运行以及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 page和project 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/)也是一个不错的框架。我们在工作中广泛使用它。学习曲线几乎不存在,自然流动似乎很直观。