我们正在为Web应用程序设计一个测试套件,使用Selenium作为自动化框架,使用TestNG作为测试框架。我们的应用程序始终使用UI和后端PostgreSQL数据库之间的比较,因此对于我们所有的测试用例,必须设置适当的前提条件,以便我们的测试用例可以运行而不是由于缺少数据或现有而失败不应该存在的数据。考虑到测试用例依赖于数据库的状态,我们目前正在考虑为每个测试用例设置前置条件的最佳方法。
根据Microsoft的此引用,在此链接:https://msdn.microsoft.com/en-us/library/bb381703(v=vs.80).aspx,设置测试的最佳方法(尽管这是针对数据库单元测试而不是我们的测试类型)是" ... [u]在运行[sic]测试集合之前,设置数据生成工具来设置数据库状态。"如果做不到这一点,我们总是能够从备份中恢复数据库,尽管它可能会遇到任何架构更改的问题,或者逐个设置测试前置条件。
现在我们正在逐个实现数据库设置,使用SQL语句删除或插入适当的数据。但是,我们遇到了这种方法的问题,因为在修改SQL数据库的步骤之间经常缺少我们运行的SQL更新。因此,我们考虑切换到使用各种API请求来设置前置条件,因为这样的请求通常包含封闭事务中的多个SQL更新语句。但是,这也会产生一个问题,因为它依赖于API请求被完全确认并测试为正常工作(我们正在处理的其他事情)。
所以,我的问题是:设置数据库的最佳方法是什么,以便满足适当的前提条件?似乎最佳做法只是从备份中重新加载数据库,但可能有一种更适合我们情况的不同方法。
设置前置条件的3种方法摘要