如何在大型项目中管理用于验收测试的测试数据夹具?

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 步中作业的成功结果应该会触发此操作)

【讨论】:

以上是关于如何在大型项目中管理用于验收测试的测试数据夹具?的主要内容,如果未能解决你的问题,请参考以下文章

大型项目性能测试监控分析流程

项目过程管理(十四)验收发布上线

[项目管理]如何写好项目验收材料

如何编写验收测试

如何在 symfony WebTestCase 的测试中按夹具类型获取教义夹具参考?

移动自动化面试2