[英]What Behavior Driven Development (BDD) Tooling/Frameworks are available for the Microsoft Stack? [closed]
+1是人们对SpecFlow场景的推荐; 从未使用过它,但听到了很多关于它的好消息。 我一直在使用老式NUnit的有像小DSL 这个 。 MSTest将类似地工作。
你也可以做BDD在单位空间,而这正是MSpec是专门做。 我个人讨厌MSpec,但是这里的其他团队都很喜欢它。 他们喜欢编写代码示例。 我想说明为什么这种行为很有价值。 这是一个微妙的区别,如果您不担心在单位级别执行此操作,那将不会对您造成打击。
其他框架包括Concordion,Fitnesse.NET(请把FitSharp放在后面!)和TickSpec。
在现实世界中,BDD最有价值的部分是对话 ,而不是自动化测试。 以下是一些使其工作的快速提示和技巧:
不要对不断变化的事物进行自动测试。 它只是使您犯错。 等到UI稳定下来再执行。
如果您不太在意UI,但在乎数据完整性,请在控制器/演示者层上编写方案(例如:用于管理屏幕)。
不要从登录开始。 首先描述您可能登录的应用程序的重要部分。首先进行此操作(假设您只有一个用户)。 您会更快地获得有关风险比特的反馈。
寻求有关危险钻头的快速反馈,这些钻头通常是您从未做过的。 使用方案围绕它们进行对话。 写下您发现的有趣事物,但忘记显而易见的场景-它们很明显! 不用担心从一开始就使它们自动化。 进行对话比记录对话更重要,比使对话自动化更重要。
祝好运! 如果您想了解有关BDD的更多信息,请在此处整理相关链接的页面。
在谷歌搜索中,我发现了使用SpecFlow和ASP.NET MVC的行为驱动开发(BDD) 。 您可能会发现它有用,看看吧。 还要通过SpecFlow和WatiN进行行为驱动的开发
关于BDD优缺点的精彩演讲
最后但并非最不重要的是InfoQ文章.NET中的行为驱动开发
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);
}
}
MSpec也是一个很好的框架。
我在您提到的Microsoft堆栈(C#,ASP.Net和MVC)中使用它,并且我喜欢他的语法。
BDD可以帮助您以面向业务/功能的方式进行思考,而不仅仅是通过编码方式。 因此,您最关注业务价值。
它还有助于进行用户接受度测试,从而在您和客户之间建立信任。
有一个很棒的工具,叫做SpecFlow 。 SpecFlow受到Cucumber的启发-众所周知的Ruby on Rails BDD框架。 并具有巨大的优势。
您一定要检查一下。
一个有趣的BDD框架是Concordion.NET 。 这是Microsoft堆栈的开源BDD框架,使用NUnit执行Concordion.NET测试: https : //github.com/concordion/concordion-net由于Concordion规范是用简单的HTML编写的,因此它为活文档系统。 您可以使用BlueGriffon之类的“所见即所得”(WYSIWYG)编辑器在简单的HTML文档中描述软件的预期行为,并对其进行检测以验证您的被测系统。 根据BDD工具的出色分类 ,Concordion.NET专注于业务可读输入(并同时达到业务可读输出)。 它甚至超越了BDD并支持ATDD: http : //assertselenium.com/2012/11/05/difference-between-tdd-bdd-atdd/
Spec4Net( https://bitbucket.org/fthomsen/spec4net/ )也是一个不错的框架。 我们在工作中广泛使用它。 学习曲线几乎不存在,自然流程似乎很直观。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.