gpt4 book ai didi

database - 测试自动化 - 初始化数据库状态

转载 作者:行者123 更新时间:2023-11-28 21:29:18 25 4
gpt4 key购买 nike

我有一个情况希望您能提供一些见解。我正在考虑一个系统的测试自动化 (JAVA),该系统经过各个处理阶段并且其核心有一个大型 Oracle 数据库(1000 多个表)。

例如进程 1 - 运行进程 1 -> 查找包含客户详细信息的文件 -> 将详细信息加载到数据库中的暂存表。流程 2 - 审核客户详细信息 -> 运行流程 2 -> 在登台表中找到的客户详细信息将被移动到适当的表中。

现在从自动化的角度来看,我需要在每次运行测试之前重新初始化数据库状态,但问题是数据库实例将被其他人共享。没有进入为什么我们没有单独的数据库实例,有谁知道如何包含状态?例如,假设一个数据库有一个表 Customer,其中包含一个列 FirstName。

测试运行前:FirstName 包含数据“Peter”、“Paul”、
测试运行后:FirstName 包含数据“Peter”、“Paul”、“Jack”、“Amy”在下一次测试运行之前:将数据库状态恢复到上次测试运行之前的状态的有效方法是什么,即包含的数据应该再次为“Peter”、“Paul”。

我看过 DBUnit,但我的理解是,虽然您可以在测试运行前用自己的数据初始化状态,但它也会在测试运行前清除所有数据。问题是我不想在测试运行之前清除所有数据,而只想清除作为上次测试运行的一部分引入的数据。

我希望这很清楚 :) 谢谢!

最佳答案

请参阅 DatabaseOperation 类 [0],了解每次测试前后的 dbUnit 操作选择。其他注释位于组件页面 [1] 上。特别是对于您的情况,请考虑更新、删除和刷新。

数据库集成测试和验收/端到端测试的一个好方法是尽可能隔离场景,包括数据集。例如。每个测试都应该设置和清理自己的数据。考虑仅共享数据设置文件(在测试前插入/更新并在每次测试后清理),而不是通过将数据留在数据库中来共享。

最后,强烈考虑制作一个专用于自动化测试的数据库实例,这样就没有其他考虑因素和对数据的干扰。通常,如果无法分配另一个 Oracle 实例,则为此使用 Apache Derby 等数据库(使用其内存模式)。

[0] http://dbunit.sourceforge.net/apidocs/org/dbunit/operation/DatabaseOperation.html

[1] http://dbunit.sourceforge.net/components.html#DatabaseOperation

关于database - 测试自动化 - 初始化数据库状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com