0

我知道在测试完成后,有很多关于清理数据的问题。他们中的很多人都说要模拟数据库,以避免使用真实的数据库,然后在测试完成后将其清理干净。我不确定这是否会与我正在做的事情一起工作。在UI验收测试后清理向数据库添加的记录

我正在使用SpecFlow for .net,使用Selenium作为WebUI和NUnit作为测试运行器。

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

SpecFlow功能由页面功能分隔,如果不是所有页面都有一个表格显示创建的记录,防爆。我创建了一个新类别,页面在表格中显示添加的类别。为了能够反复运行这些测试,我需要删除所有从数据库创建的测试添加的记录,以便在测试重新执行时可以重新创建这些相同的类别。

我们有一个框架设置,用于在存储过程中传递的每个功能之后运行,以从数据库中删除这些添加的记录。由于可能会在测试环境中删除不同测试客户端的记录,因此这个想法受到很多推动。

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

+1

对不起,您是否使用过股份生产的客户数据与测试数据的数据库? – AlSki

+0

好的,我很抱歉,不,在我们开始生产之前的所有环境都没有生产客户数据。但是,他们确实希望在prod中运行这些测试,在这种情况下,测试客户端将共享数据库。我们还没有达到那个水平,所以还没有确定。 –

回答

1

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

在specflow中,这可以通过在场景之前/场景/功能/之前使用功能钩子来实现。

如果可能,理想的解决方案是每个测试都有一个新的数据库,那么您可以删除整个数据库。这将允许测试并行运行。

如果您无法做到这一点,那么您需要一些方法来唯一标识每个测试的测试数据。

它担心你的问题意味着在同一个数据库的测试和实时数据

+0

谢谢!我目前确实已将它设置为在功能之前和功能之后运行。我只是试图找到最好的解决方案来清除测试过程中受影响的表中创建的数据。无论是创建备份还是恢复,运行存储过程以删除特定于测试客户端的行,还是使用软删除。很抱歉对于这个误会。所有的客户端都是测试客户端,它们都是正在创建的测试数据。 –

相关问题