我正在尝试将 BDD 实践应用于我的组织。我在一家银行工作,每晚的批处理作业是一个庞大的编排多系统批处理作业流,它们运行并在彼此之间传递数据。
在我们的测试中,交互式在线测试可能只占测试场景的 40-50%,而其余的则嵌入到批处理作业中。例如,测试场景可能是:
- 鉴于截至晚上 10 点,我的储蓄账户余额为 100 美元
- 当夜间批处理在晚上 11 点运行时
- 然后在批处理运行完成后的凌晨 3 点,我应该回来查看我有 0.001 美元的额外应计利息。
- 并且银行的总分类帐应该有一个额外的应计利息条目 0.001 美元。
如您所见,这是一个非常异步的场景。如果我要使用 Cucumber 来触发它,我可能可以创建一个步骤定义,以便在晚上 10 点之前将 100 美元的余额插入帐户,但是使用 Cucumber 来触发批处理在晚上 11 点运行是不现实的,因为批处理作业是通常由操作员使用自己的调度工具(例如 Control-M)执行。然后让 Cucumber 等待并听几个小时,然后再验证应计利息,我不确定我是否会遇到超时。
这只是一种情况。批量运行对银行来说非常昂贵,我们总是在尽可能多的场景中进行一次批量运行。我们也有老化的场景,我们需要运行 6 个月的批处理,只是为了检查定期存款期限结束时的最终利息是否正确(我绝对不能让 Cucumber 等那么久,可以吗?)
我的问题是,有没有将 BDD 实践应用于诸如此类的大批量场景的示例?一个人将如何解决这个问题?
编辑以解释为什么我不打算在我控制的情况下执行孤立的测试场景:
我们在其中一个测试级别(我们在我的银行中将其称为系统测试)中进行了孤立的场景,并且 BDD 确实在这种情况下工作。但最终,我们需要达到一个具有完整端到端环境的测试级别,通常是在 SIT 中。在这种环境中,并行运行多个测试场景是一个标准,其中没有一个可以完全控制环境。根据项目的范围,此环境最多可运行 200 个应用程序。因此,客户渠道如网上银行将运行交易场景,而在核心银行系统中,将执行诸如计息、自动转账等场景。还会有会计场景,总账系统会合并和平衡环境中的所有账户。
我想要做的是找到一种方法来利用 BDD 框架来自动化测试执行并捕获结果,这样我们就不必在环境中手动跟踪它们。