有没有办法避免背景不同的重复黄瓜方案?

时间:2018-11-09 14:22:16

标签: java testing background cucumber

我们开始使用Cucumber(Java)并真的很喜欢它,但是Cucumber在一个非常重要的情况下似乎完全失败了:

基本上,我有一个为给定登录用户运行的方案,我实际上需要使用不同类型的登录用户运行所有相同的测试。

然后,我需要使用具有不同角色(具有重叠权限的多个角色)登录的用户来运行完全相同的场景中的 most

使用背景轮廓功能可以做到这一点很简单,但是似乎在几年前就被拒绝了(https://github.com/cucumber-attic/gherkin/issues/56

我知道以前已经有人问过这个问题,但是我一直在调高很老的线程(大约6岁!),只能回答“复制所有方案”。

复制数百个方案在每个方面都是一个失败,这使测试库难以管理(一个方案的更改需要传播到多个重复项)。它无法实现黄瓜的核心通信目标,因为我们收到了大量功能文件,这使得更难知道应用程序在做什么以及我们在测试什么。

自第一次投诉以来的6年中,有什么合理的方法来解决此问题?

在这一点上,我很想删除背景,并将其移入每个场景并使用场景大纲,这很丑陋,测试不再清晰地理解,但至少我不需要重复场景。

1 个答案:

答案 0 :(得分:1)

  

然后,我需要使用具有不同角色(具有重叠权限的多个角色)登录的用户来运行大多数完全相同的方案

您想测试一个权限,但是正在测试角色。在我看来,这正在引起您的大多数问题。通常配置角色后,您也许可以利用此系统。

Given a customer service rep with the authority to grant refunds 
  And a customer reports a problems with the PX-11 Widget
 When customer service resolves the problem by granting a refund
 Then problem ticket is closed
  And a refund request is lodged with finance

在给定的步骤中,您将为客户服务代表创建一个新角色,该角色可以授予退款。

如果您担心角色可能以奇怪的方式相互影响,则应尝试在较低的级别上进行解决和测试。您的验收测试中不会再出现这种问题。

但是,如果您无法执行此操作,则可能需要考虑以下三个选项中的任何一个。它将使小黄瓜保持可读性,但会增加一些测试的复杂性。但是这种复杂性表明系统存在问题。

  1. 除您关注的其他权限外,还使用请求的权限创建多个客户服务代表。然后,在每个后续步骤中,让所有代表执行特定操作。

  2. 对于每个测试,除了请求的权限外,还随机选择一个或多个权限。

  3. 随机选择具有所需权限的角色。