【问题标题】:Side-by-side Functional and Acceptance Testing (SpecFlow)并行功能和验收测试 (SpecFlow)
【发布时间】:2016-02-11 20:33:09
【问题描述】:

编辑:这个问题好像是related

这个问题不是关于功能测试和验收测试之间的区别!我在网上能找到的几乎所有信息都只是解释了它们之间的区别。我知道功能测试(FT's)解决边缘条件和错误场景,而验收测试(AT's)解决业务需求。我通过 SpecFlow 实现了这两个目标。

从项目结构/层次结构的角度来看,我很难理解两者的分离。目前,我有一个带有AcceptanceTests 文件夹和FunctionalTests 文件夹的单元测试项目。我所有的步骤定义都混杂在一个StepDefinitions 文件夹中。

我发现我不得不重复自己很多次,而且当我按 Traits 分组时,MsTest 窗格只是将所有内容混合在一起。我想确定行业标准是什么,所以我有五个问题:

  • 我是否在 AT 和 FT 的单独功能文件中重复 "In order to... as a... I want to..." 的故事?

  • 我是在 FT 中重复所有 AT 的场景,还是只重复边缘条件的场景?

  • 我应该将 AT 和 FT 保留在他们自己的命名空间和/或他们自己的项目中吗?

  • 我是否应该尝试从 AT 的步骤定义中调用 FT 的场景步骤方法,因为 FT 正在完成繁重的工作?

  • 欢迎对我当前的设置提出任何建议(例如,两者都做是否过大?)。

【问题讨论】:

    标签: testing bdd functional-testing specflow acceptance-testing


    【解决方案1】:

    将 ? 都作为 SpecFlow 功能来做有点过头了。

    验收测试非常有价值,但它们需要大量的工作来编写和维护,并且运行时间很长,因此您希望尽可能少地使用它们,同时仍能捕获所有重要的用例。

    相反,请使用 NUnit 等单元测试工具测试您的“边缘条件和错误场景”。

    您可能会发现,对于给定的功能,您需要一个用户犯错误的场景,以便您指定错误处理的工作方式。但是您绝对不希望每个特定错误都有一个场景;相反,在验证代码的单元测试中捕获它们。

    【讨论】:

    • 谢谢戴夫。您对运行时间的担忧似乎表明验收测试应该是集成测试。您是否针对实时数据库、文件系统和 Web 服务进行验收测试?我认为应该为验收测试模拟一些东西;我是不是一直理解错了?
    • 是的,您希望您的验收测试尽可能多地针对系统运行。不,您不想嘲笑它们,除非您必须保护自己免受不切实际的缓慢或不可靠的第三方服务的影响。但肯定是真实的(不是生产的)数据库和文件系统。
    猜你喜欢
    • 2011-03-23
    • 2021-12-09
    • 2014-08-17
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多