Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cucumber 将BDD测试应用于批处理场景?_Cucumber_Tdd_Batch Processing_Bdd_Atdd - Fatal编程技术网

Cucumber 将BDD测试应用于批处理场景?

Cucumber 将BDD测试应用于批处理场景?,cucumber,tdd,batch-processing,bdd,atdd,Cucumber,Tdd,Batch Processing,Bdd,Atdd,我正在尝试将BDD实践应用到我的组织中。我在一家银行工作,那里的夜间批处理作业是一个庞大的协调多系统批处理作业流,它们在彼此之间运行和传递数据 在我们的测试过程中,交互式在线测试可能只占测试场景的40-50%,而其余的则嵌入到批处理作业中。例如,测试场景可能是: 考虑到我的储蓄账户到晚上10点有100美元的余额 当夜间批次在晚上11点运行时 然后在分批运行完成后的凌晨3点,我应该回来看看,我有一个额外的应计利息$0.001 银行的总分类账应增加0.001美元的应计利息分录 如您所见,这是一个非常

我正在尝试将BDD实践应用到我的组织中。我在一家银行工作,那里的夜间批处理作业是一个庞大的协调多系统批处理作业流,它们在彼此之间运行和传递数据

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

  • 考虑到我的储蓄账户到晚上10点有100美元的余额
  • 当夜间批次在晚上11点运行时
  • 然后在分批运行完成后的凌晨3点,我应该回来看看,我有一个额外的应计利息$0.001
  • 银行的总分类账应增加0.001美元的应计利息分录
  • 如您所见,这是一个非常异步的场景。如果我使用Cucumber触发它,我可能会创建一个步骤定义,在晚上10点之前将100美元余额插入帐户,但使用Cucumber来触发在晚上11点运行的批处理是不现实的,因为批处理作业通常由操作员使用自己的调度工具(如Control-M)执行。然后让Cucumber在验证应计利息之前等待并聆听几个小时,我不确定是否会超时

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

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

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

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


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

    我觉得您似乎无法控制场景的执行

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

    是否可以仅提取该场景中感兴趣的批处理部分?如果这是可能的话,那么我预计执行时间不会达到4-6小时

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


    不幸的是,似乎不存在快速解决办法。您需要处于能够验证系统小部件的位置,以便快速可靠地验证它们。不管你使用的是黄瓜还是任何其他工具,为了验证,所有的工具都会有同样的问题。

    < P>一种方法,你可以考虑使用一个报告过程来查询每一批运行的结果。然后,它会将您感兴趣的结果(即来自测试的结果)存储到测试分析数据库中

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

    下面是一个它可能如何工作的示例:

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

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

    您好,我已经解释了为什么不描述可以单独运行的场景。但是它用了太多的词,因此我把它添加到了主要问题中。非常感谢。