SpecFlow场景的输入和测试数据

时间:2013-07-22 09:03:03

标签: bdd specflow

我最近开始使用SpecFlow,我需要澄清两个基本问题,以确认我的方法是正确的:

  1. 据我所知,测试人员必须提供所有输入数据(场景的测试参数),测试数据相同(测试场景中涉及的表的输入数据) )

  2. 是否有现成的工具可以快速生成测试数据(将其插入数据库)?我使用Entity Framework作为数据访问层的一部分。我想知道一些工具可以读取文件或某些桌面应用程序中的数据来为表的字段提供值(这也可以生成一个文件,其他一些工具可以从中读取所有数据并生成所有必需的对象等)。

  3. 我还看了Preparing data for a SpecFlow scenario - 我在想是否已经有一个框架可以实现插入\删除测试数据以与SpecFlow一起使用。

1 个答案:

答案 0 :(得分:1)

我认为你没有走上正轨。 SpecFlow是一个BDD工具,但在某些方面它只涵盖了部分过程。阅读http://lizkeogh.com/2013/07/01/behavior-driven-development-shallow-and-deep/并查看这些情景是否合熟?

为了向前移动,我建议你从http://dannorth.net/introducing-bdd/开始,以便更好地了解它是如何开始的。现在让我们考虑你的观点;

  1. 测试仪提供所有测试数据。是的,没有。我们的想法是,在您自己和功能专家之间,您可以进行对话,提供开发功能所需的所有示例。如果你没有参与那个对话,那么是的所有数据都来自另一方,但很可能它不会如此高质量,好像你能够提出正确的问题并指导对话所以数据遵循一个结构,你也可以编码测试。 作为一个例子,当我第一次开始使用BDD时,我认为我可以让业务专家编写纯文本场景文件,而开发的输入较少,但实际上文档往往没有我们参与时那么有用。不是因为他们不能写出不错的规范,而是因为他们无法重构它们以重复使用绑定等。我们仍然需要将我们的技能添加到流程中。

  2. 为什么数据会进入数据库?一个好的测试被隔离到它正在测试的范围。对于UI层测试,这意味着我们没有数据库。对于业务层测试,我们不应该依赖于数据库来获取数据。 实际上,数据库是测试中最困难的事情之一,因为一旦数据的任何部分发生变化,就会导致级联测试失败。 相反,我建议缩小您的功能,并在场景或绑定中为您的测试提供数据。这也使你的谈话变得更容易,因为第五十行测试包不是任何一方都要记住的。 ;-)我建议改为尝试给你数据身份,所以“bob”可能是你可以讨论的测试中的个体,双方都明白是什么让他成为一个有趣的例子。

  3. 祝你好运: - )

    更新:关于在测试期间使用数据库,我的经验是有很多复杂性使得它成为一个难以选择的选择。考虑这些要点,

    • 如何在测试之间重置数据状态?
    • 如果一个/某些测试失败,您将如何重置状态?
    • 如果您正在使用分支机构,或者即使两个开发人员同时进行更改,您将如何支持多个测试数据集?
    • 您将如何处理同时运行的两个测试实例(不要忘记构建服务器)?

    查看此问题SpecFlow Integration Testing with Database Patterns,其中包含您可以使用的一些模式。