如何在SpecFlow,Cucumber或其他BDD验收测试框架中选择不同的测试类型?

Vag*_*lov 7 asp.net-mvc bdd acceptance-testing specflow

我正在查看SpecFlow示例,它的MVC示例包含几个测试选项:

  • 基于控制器生成的验证结果的验收测试;
  • 使用MvcIntegrationTestFramework进行集成测试;
  • 使用Selenium进行自动验收测试;
  • 提示测试仪手动验证结果时的手动验收测试.

我必须说我对SpecFlow示例的编写方式印象深刻(我设法在下载后几分钟内运行它们,只需配置数据库并安装Selenium Remote Control服务器).看看测试方案,我可以看到它们中的大多数相互补充而不是替代方案.我可以想到以下这些测试的组合:

  • 控制器以TDD风格进行测试,而不是使用SpecFlow(我相信Given/When/Then类型的测试应该应用于更高的端到端级别;它们应该为各个组件提供良好的代码覆盖;
  • 在开发会话期间运行集成测试时,MvcIntegrationTestFramework很有用,这些测试也是每日构建的一部分;
  • 虽然基于Selenium的测试是自动化的,但它们很慢并且主要是在QA会话期间启动,以快速验证页面和站点工作流程中没有破坏的逻辑;
  • 提示测试仪确认结果有效性时的手动验收测试主要是验证页面外观.

如果您在Web开发中使用SpecFlow,Cucumber或其他BDD验收测试框架,请与您分享您在不同测试类型之间进行选择的实践.

提前致谢.

Lun*_*ore 6

这都是行为.

给定特定上下文,当事件发生时(在特定范围内),则应该发生一些结果.

范围可以是整个应用程序,系统的一部分或单个类.即使函数也是这样的,输入作为上下文,输出作为结果(您也可以将BDD用于函数式语言!)

我倾向于在类或集成级别使用单元框架(NUnit,JUnit,RSpec等),因为受众是技术性的.有时我会在评论中记录Given/When/Then.

在场景级别,我试图找出谁真正想要帮助读取或编写场景.即使是商业利益相关者也可以阅读包含几个点和括号的文本,因此拥有像MSpec或JBehave这样的自然语言框架的主要原因是他们想要自己编写场景,或者将它们显示给那些真正会被点击的人和括号.

之后,我将了解框架将如何与构建系统一起使用,以及我们如何为感兴趣的利益相关者提供适当的读写能力.

这是我写的一个例子,展示了使用简单的DSL可以对场景做些什么.这只是用NUnit编写的.

这是一个示例,在相同的代码库中显示Given,When,Then在类级示例注释中.

我抽象背后的步骤,然后我把屏幕或页面放在那些后面,然后在屏幕和页面中我称之为我正在使用的任何自动化框架 - 可能是Selenium,W​​atir,WebRat,Microsoft UI Automation等.

我提供的示例本身就是一个自动化工具,因此这些场景通过演示伪gui的行为来演示自动化工具的行为,以防万一令人困惑.无论如何希望它有所帮助!