Selenium设置/拆卸最佳实践 - 将数据恢复到原始状态

时间:2012-06-29 16:32:42

标签: selenium

    {
        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,而不是在每个单独的测试中。

2 个答案:

答案 0 :(得分:1)

到目前为止,我见过的最佳做法是:

  1. 测试有一个测试数据输入(excel表)
  2. 每次运行都会为数据添加一些前缀(例如名称Pavel => Test01_Pavel)
  3. 测试确实验证了系统中不存在此类数据
  4. 根据输入测试创建的测试数据并验证这些数据是否存在
  5. 测试删除了所有测试数据并验证了这些数据是否已删除。
  6. 但真正最好的答案是“它取决于”。我个人并不是从系统中删除任何测试数据,因为

    • 测试环境严格区分为prod one
    • 测试数据稍后在性能测试期间有用(例如从系统下载用户列表)

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

    • 最后删除测试数据会给你带来什么好处吗?
    • 反之亦然:如果测试数据保留在系统中会发生什么?
    顺便说一句,如果您觉得“如果其中存在太多无意义/虚拟数据,应用程序肯定会中断”您应该测试该情景。想象一下,您的服务将在一夜之间变得流行(Charlie光学推文使用您的页面:))并且数百万用户希望自己注册。

答案 1 :(得分:0)

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

  1. 在云中启动专用测试环境(AWS)
  2. 启动测试套件
  3. 每个测试都会插入所需的数据
  4. 测试套件完成后,拆除服务器,inc。分贝
  5. 这样,每次测试运行时都会有一个新的数据库,因此,如果套件中的2个测试产生了冲突的数据,那么坏数据破坏测试的唯一危险就是。