如何在大型项目中管理用于验收测试的测试数据夹具?
Posted
技术标签:
【中文标题】如何在大型项目中管理用于验收测试的测试数据夹具?【英文标题】:How to manage test data fixtures for acceptance testing in large projects? 【发布时间】:2015-12-29 11:35:14 【问题描述】:假设我们有一个庞大而复杂的系统,包含大量数据和复杂的业务逻辑。
如何管理测试数据(Oracle DB)以从已知状态开始进行快速、可靠的验收(Selenium 等)测试?
由于规模和复杂性,测试应该:
运行速度非常快(1. 在每个测试/套件之前快速恢复到已知的数据库状态 2. 在每个套件之前肯定不会通过 UI 创建测试数据) 基于使用 UI 创建的数据(没有直接INSERTS
到数据库 - 存在业务逻辑重复的风险)
拥有多个版本/数据库状态快照(具有相关数据的稳定用户组 - 以避免断言与持续自动化开发创建的新数据之间的冲突)
【问题讨论】:
【参考方案1】:您所描述的内容称为Sandbox DB。对于每个新部署,您都必须使用您需要的数据提供/填充此数据库,并在测试完成后将其删除。
有多个版本/数据库状态的快照
这是 Fresh Fixture pattern 和 Prebuilt Fixture pattern 将帮助您解决的问题。你也可以看看Fixture Teardown patterns。
在这里您可以找到处理此类big-data-sandbox-strategies 时的一些注意事项。像调度、主数据存储库和监控一样。
要成功管理所有这些 - 必须使用 CI 服务器。由于您已标记 JAVA,因此一个不错的选择是:
Jenkins 和 Database plugin Bamboo Hudson【讨论】:
【参考方案2】:我理解你的问题是你想用预定义的数据运行你的测试用例,而不是直接从数据库中填充一些东西。
-
为每个版本创建数据库转储并存储它们
创建作业(例如:在 CI、Jenkins、Hudson 等作业上),它使用所需的转储加载测试数据库。这应该在成功部署到测试服务器后自动触发。
创建用于创建临时测试数据的模块/函数
运行您的测试用例(理想情况下,第 2 步中作业的成功结果应该会触发此操作)
【讨论】:
以上是关于如何在大型项目中管理用于验收测试的测试数据夹具?的主要内容,如果未能解决你的问题,请参考以下文章