目前,我负责使用 C# 和 Selenium Web 驱动程序开发一个黑盒自动化测试框架,并使用该框架来自动化我们当前的手动回归套件。被测系统是一个 ASP.NET Web 应用程序。
每个测试都可能依赖于复杂的数据集合。例如,为了测试“活动”的创建,“客户端”必须与要创建“活动”的“服务”一起出现。
应如何管理此类测试所需的数据?测试是否应该假设它存在?在这种情况下,测试将简单地创建活动。或者,测试是否应该创建必要的数据?在这种情况下,测试将创建客户端,创建服务,然后创建活动。
我们正在考虑以下潜在的解决方案,并正在讨论每个解决方案的优点:
db 为空白,测试创建所需的数据,每次测试后擦除 db
-pro:测试和数据在一起,测试不能互相影响
-con:运行时间长,测试更复杂
db 为空白,fixture 创建所有测试所需的数据,db 在每个fixture 之后被擦除
-pro:测试和数据接近
-con: 夹具内的测试可以相互影响
db 填充了必要的数据,测试假设存在必要的数据
-pro:更快的运行时间
-con:测试和数据是分开的。测试更有可能相互影响
如果这些方法中的任何一种被认为是最佳实践,那么哪种方法?如果以上都不是,什么方法被认为是最佳实践?