【问题标题】:Applying BDD testing to batch scenarios?将 BDD 测试应用于批处理场景?
【发布时间】:2016-05-12 00:56:30
【问题描述】:

我正在尝试将 BDD 实践应用于我的组织。我在一家银行工作,每晚的批处理作业是一个庞大的编排多系统批处理作业流,它们运行并在彼此之间传递数据。

在我们的测试中,交互式在线测试可能仅占测试场景的 40-50%,而其余的则嵌入批处理作业中。例如,测试场景可能是:

  1. 鉴于截至晚上 10 点,我的储蓄账户余额为 100 美元
  2. 当夜间批处理在晚上 11 点运行时
  3. 然后在批处理运行完成后的凌晨 3 点,我应该回来查看我有 0.001 美元的额外应计利息。
  4. 并且银行的总账应该有一个额外的应计利息条目,为 0.001 美元。

如您所见,这是一个非常异步的场景。如果我要使用 Cucumber 来触发它,我可能可以创建一个步骤定义,在晚上 10 点之前将 100 美元的余额插入到帐户中,但是使用 Cucumber 来触发批处理在晚上 11 点运行是不现实的,因为批处理作业是通常由操作员使用自己的调度工具(例如 Control-M)执行。然后让 Cucumber 等待并听几个小时,然后再验证应计利息,我不确定我是否会遇到超时。

这只是一种情况。批量运行对银行来说非常昂贵,我们总是在尽可能多的场景中进行一次批量运行。我们也有老化的场景,我们需要运行 6 个月的批处理,只是为了检查定期存款期末的最终利息是否正确(我绝对不能让 Cucumber 等那么久,可以吗?)

我的问题是,有没有将 BDD 实践应用于诸如此类的大批量场景的示例?如何解决这个问题?

编辑以解释为什么我不打算在我控制的情况下执行孤立的测试场景:

我们在其中一个测试级别(我们在我的银行中将其称为系统测试)中进行了孤立的场景,并且 BDD 确实在这种情况下工作。但最终,我们需要达到一个具有完整端到端环境的测试级别,通常是在 SIT 中。在这种环境中,并行运行多个测试场景是一个标准,其中没有一个对环境具有完全的控制权。根据项目的范围,此环境最多可运行 200 个应用程序。因此,客户渠道如网上银行将运行交易场景,而在核心银行系统中,将执行诸如计息、自动转账等场景。还会有会计场景,总账系统会合并和平衡环境中的所有账户。在这种环境中进行手动测试经常需要至少 30-50 名人员执行事务并检查结果。

我想做的是找到一种方法来利用 BDD 框架来自动执行测试并捕获结果,这样我们就不必在环境中手动跟踪它们。

【问题讨论】:

    标签: cucumber tdd batch-processing bdd atdd


    【解决方案1】:

    在我看来,你无法控制场景的执行。

    显然,在验证结果之前等待几个小时并不是一个好主意。

    是否可以只提取在这种情况下感兴趣的批次部分?如果这是可能的,那么我不希望执行时间为 4 - 6 小时。

    如果无法单独执行所需的功能,那么您的系统的可测试性就存在问题。这很常见,也是您真正想要解决的问题。如果测试的唯一方法是运行整个系统,那么您就不能自信地说它工作正常,因为所有需要测试的组合都很难执行,有时甚至是不可能执行的。

    不幸的是,似乎没有快速解决方法。您需要能够验证系统的小部分,以便快速可靠地验证它们。并且不管你是使用 Cucumber 还是其他任何工具来进行验证,所有工具都会有同样的问题。

    【讨论】:

    • 您好,我已经解释了为什么我没有描述可以单独运行的场景。但是它占用了太多的单词,因此我将其添加到主要问题中。谢谢!
    【解决方案2】:

    您可能会考虑的一种方法是建立一个查询每个批次运行结果的报告流程。然后它将您感兴趣的结果(即来自您的测试的结果)存储到测试分析数据库中。

    我假设每个批次运行都有一个唯一标识符。此标识符将用作测试结果的键。

    这是一个如何工作的示例:

    • 我们知道批处理运行何时结束(比如凌晨 4 点)。我们安排在批处理运行完成后(例如凌晨 5 点)开始分析测试帐户的报告作业。
    • 报告作业查看帐户 X 和帐户 Y。它在表格中记录他们帐户中的金额,旁边是批处理运行的唯一标识符。此信息存储在测试结果数据库中。
    • 一个单独的过程将测试场景与测试结果相匹配。它知道测试场景 29 与批处理运行 ZZ20 相关联,因此会在测试结果数据库中查找批处理运行 ZZ20 的分析。
    • 早上,测试工程师检查运行结果。他们发现测试场景 29 失败了,因为账户 X 中只有 100 英镑,而不是预期的 100.001 英镑。

    此设置允许您同步处理异步批处理运行。但是,配置起来会很有挑战性,因为您需要围绕报告以及将测试场景与测试结果关联起来进行大量自动化操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多