【问题标题】:Cleaning up added records to the database after UI acceptance tests在 UI 验收测试后清理添加到数据库的记录
【发布时间】:2016-11-20 09:07:57
【问题描述】:

我知道有很多关于在测试完成后清理数据的问题。他们中的很多人都说过要模拟数据库以避免使用真实的数据库,然后在测试完成后将其清理干净。我不确定这是否适用于我正在做的事情,所以就这样吧。

我将 SpecFlow 用于 .net,将 Selenium 用于 WebUI,将 NUnit 用于测试运行器。

应用程序本身是一个大型多页网络应用程序。

SpecFlow 功能由页面功能分开,并且大多数(如果不是所有)页面都有一个显示创建记录的表格。前任。我创建了一个新类别,页面在表格中显示了添加的类别。为了能够一遍又一遍地运行这些测试,我需要删除测试从数据库中创建的所有添加记录,以便在重新运行测试时可以重新创建这些相同的类别。

我们有一个骨架设置来运行每个功能,该功能将传递一个存储过程以从数据库中删除那些添加的记录。由于在测试环境中删除不同测试客户端的记录的风险,该想法遭到了很多反对。

那么,我的问题是,清理数据库的最佳做法是什么?

【问题讨论】:

  • 抱歉,您使用的是与测试数据共享实时生产客户端数据的数据库吗?
  • 好的,对不起,不,我们进入生产之前的所有环境都没有生产客户端数据。但是,他们确实想在 prod 中运行这些测试,在这种情况下,测试客户端将共享数据库。我们还没有达到那个水平,所以这真的还有待确定。

标签: database selenium ui-automation specflow acceptance-testing


【解决方案1】:

最好在测试运行前后删除测试数据。这样,即使测试中途中止并且之后不清理,数据也会被清理。

在规范流中,这可以通过使用场景前/场景后/功能之前/功能后挂钩来实现。

如果可能,理想的解决方案是为每个测试创建一个新数据库,然后您可以删除整个数据库。这将允许测试并行运行。

如果您不能这样做,那么您需要某种方法来唯一地识别每个测试的测试数据。

令人担忧的是,您的问题暗示测试和实时数据在同一个数据库中

【讨论】:

  • 谢谢!我目前确实将它设置为在功能之前和功能之后运行。我只是想找到最好的解决方案,从测试期间受影响的表中清除创建的数据。无论是创建备份然后恢复,运行存储过程以删除特定于测试客户端的那些行,还是使用软删除。很抱歉对于这个误会。所有客户端都是测试客户端,并且正在创建所有测试数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多