BDD 传递 Recaptcha 和空值 - 最佳实践

BDD passing Recaptcha and null value - Best Practices

我对 BDD with Cucumber 的最佳实践有两个疑问。

我有一个自动用户注册的页面。

您输入您的个人数据,例如:姓名、电子邮件和确认信息 之后,您 select 您对网站感兴趣的选项(有 10 个组合框,您可以随意添加)。 插入验证码并发送。

我需要验证所有成功案例和失败案例。

所以,这是我的问题:

1) 带有验证码的页面。 由于无法自动执行 recaptcha,并且这一步自然会进入我的测试,我是否应该为无效的 recaptcha 验证创建一个场景?

2) 有没有什么聪明的方法可以让我编写一个场景来探索网站兴趣选项的所有可能组合?

在我的页面中: ( ) 经济 ( ) 教育 ( ) 运动的 ( ) 娱乐 ( ) 游记 ( ) ...

我希望能够通过测试 1 个选项 selected,2 个选项,3 个选项,...,所有选项来多次提交测试。 但如果有精益的方法,我就想做。

换句话说:在场景大纲示例中,我可以在这种情况下传递空值吗?

关于验证码,我可能会验证损坏的验证码是否会阻止用户。验证正路径显然很难,因为验证码是用来阻止机器人的,而自动验证与机器人相同。

关于验证您的所有选项,我会看看我是否可以在表面下进行。使用浏览器从 UI 执行此操作很慢,并且您正在谈论 2^10 组合。那是很多情况。如果需要测试所有组合,请改为针对控制器进行测试。在这种情况下,像 Cucumber 这样的工具可能不是您的最佳选择。一种编程语言可能比 Gherkin 更好。

如果你仍然想使用 Cucumber,至少让它变快并避免使用浏览器。我写了一个 blogpost 关于适合这项工作的工具。它可能会帮助您理解为什么您不必在所有情况下都经历 UI。

根据 Thomas 在验证码上提到的内容,我会说这是少数无法自动测试的东西之一(否定路径除外)。

我也同意 Thomas 的观点,您不应该使用可执行规范来测试选项的每一种可能性,而是使用集成测试,或者如果这部分代码的体系结构允许的话,甚至可能使用单元测试。

至于 Gherkin 格式的实际可执行场景,我看到此功能类似于以下内容:

Given Paul supplied the incorrect Captcha
When he wants to register himself
Then he should not be registered
  • 您可能想知道我们是否应该在场景中使用实现词 Captcha,因为当我们在实现中用 Captcha 替换其他内容时,它是不正确的。

可能存在其他潜在情况,具体取决于在未选择任何选项时是否允许某人注册:

Given Paul has not chosen any of the possible interest topics
When he wants to register himself
Then he should not be registered
  • 注意重用 when 和 then 部分的句子以减少测试代码。