如何管理大型项目验收测试的测试数据治具?
How to manage test data fixtures for acceptance testing in large projects?
假设我们有一个庞大、复杂的系统,数据量大,业务逻辑复杂。
如何管理测试数据 (Oracle DB) 以从已知状态开始进行快速、可靠的验收(Selenium 等)测试?
由于规模和复杂性,测试应该:
- 运行 相当快(1. 在每个 test/suite 之前快速恢复到已知的数据库状态 2. 在每个套件之前肯定不会通过 UI 创建测试数据)
- 基于使用 UI 创建的数据(不直接
INSERTS
到数据库 - 存在业务逻辑重复的风险)
- 有多个 versions/snapshots 数据库状态(具有相关数据的稳定用户组 - 避免断言与持续自动化开发创建的新数据之间的冲突)
您所描述的是 Sandbox DB。对于每个新部署,您必须 provide/populate 此数据库包含您需要的数据,并在测试完成后将其删除。
have several versions/snapshots of DB state
这是什么Fresh Fixture pattern and Prebuilt Fixture pattern will help you with. Also you could look at the Fixture Teardown patterns。
在这里您可以找到处理此类 big-data-sandbox-strategies 时的一些注意事项。像调度、主数据存储库和监控。
要成功管理所有这些 - CI 服务器必须投入使用。由于您已标记 JAVA,一个不错的选择是:
我理解你的问题是你想 运行 你的测试用例有预定义的数据,而不是直接从数据库中填充一些东西。
- 为每个版本创建数据库转储并存储它们
- 创建作业(例如:在 CI 上,一个 Jenkins、Hudson 等作业)加载具有所需转储的测试数据库。这应该在成功部署到测试服务器后自动触发。
- 创建一个module/function用于创建临时测试数据
- 运行 您的测试用例(理想情况下,步骤 2 中的工作成功结果应该触发此)
假设我们有一个庞大、复杂的系统,数据量大,业务逻辑复杂。
如何管理测试数据 (Oracle DB) 以从已知状态开始进行快速、可靠的验收(Selenium 等)测试?
由于规模和复杂性,测试应该:
- 运行 相当快(1. 在每个 test/suite 之前快速恢复到已知的数据库状态 2. 在每个套件之前肯定不会通过 UI 创建测试数据)
- 基于使用 UI 创建的数据(不直接
INSERTS
到数据库 - 存在业务逻辑重复的风险) - 有多个 versions/snapshots 数据库状态(具有相关数据的稳定用户组 - 避免断言与持续自动化开发创建的新数据之间的冲突)
您所描述的是 Sandbox DB。对于每个新部署,您必须 provide/populate 此数据库包含您需要的数据,并在测试完成后将其删除。
have several versions/snapshots of DB state
这是什么Fresh Fixture pattern and Prebuilt Fixture pattern will help you with. Also you could look at the Fixture Teardown patterns。
在这里您可以找到处理此类 big-data-sandbox-strategies 时的一些注意事项。像调度、主数据存储库和监控。
要成功管理所有这些 - CI 服务器必须投入使用。由于您已标记 JAVA,一个不错的选择是:
我理解你的问题是你想 运行 你的测试用例有预定义的数据,而不是直接从数据库中填充一些东西。
- 为每个版本创建数据库转储并存储它们
- 创建作业(例如:在 CI 上,一个 Jenkins、Hudson 等作业)加载具有所需转储的测试数据库。这应该在成功部署到测试服务器后自动触发。
- 创建一个module/function用于创建临时测试数据
- 运行 您的测试用例(理想情况下,步骤 2 中的工作成功结果应该触发此)