0
    {
        Assert.That(_editUserPage.State.SelectedText, Is.EqualTo("Illinois"));
        _editUserPage.State.SelectedText = "New York";
        Assert.That(_editUserPage.State.SelectedText, Is.EqualTo("New York"));
        _editUserPage.SaveChanges();
        Assert.That(_editUserPage.State.SelectedText, Is.EqualTo("New York"));
     }

在上面的示例中,我将用户的州从伊利诺伊州更改为纽约州;我的问题是:我是否应该在测试结束时将状态更改回 Illiois 的原始值?

我在同一个文件中有大约 20 个其他独立测试,我想知道将数据返回到原始状态的最佳实践是什么。我们对整个测试套件使用 setup/teardown,而不是在每个单独的测试中。

4

2 回答 2

1

到目前为止,我确实看到的最佳做法是:

  1. 测试有一个测试数据输入(excel表)
  2. 每次运行都会为数据添加一些前缀(例如名称 Pavel => Test01_Pavel)
  3. 测试确实验证了系统中不存在此类数据
  4. 测试根据输入创建测试数据并验证这些数据是否存在
  5. 测试删除了所有测试数据并验证了这些数据已被删除。

但真正最好的答案是“视情况而定”。我个人不会从系统中删除任何测试数据,因为

  • 测试环境与产品一严格划分
  • 测试数据可以在以后的性能测试期间有用(例如从系统下载用户列表)

所以你应该问自己的真正问题是:

  • 最后删除测试数据会给你带来什么好处吗?
  • 反之亦然:如果测试数据保留在系统中会怎样?

顺便说一句,如果您觉得“如果其中有太多废话/虚拟数据,应用程序肯定会崩溃”,您绝对应该测试这种情况。想象一下,您的服务将在一夜之间变得流行(Charlie sheen 在推特上发布关于使用您的页面的消息:))并且数百万用户希望自己注册。

于 2012-06-29T19:24:14.870 回答
0

我工作的公司采取的方法是:

  1. 在云 (AWS) 中启动专用测试环境
  2. 启动测试套件
  3. 每个测试都会插入它需要的数据
  4. 一旦测试套件完成,然后拆除服务器,公司。D b

这样,每次测试运行时您都有一个新的数据库,因此坏数据破坏测试的唯一危险是套件中的 2 个测试正在生成冲突的数据。

于 2014-10-22T09:00:31.260 回答