如何测试 Cucumber 中的操作序列?

问题描述 投票:0回答:1

我看过多个 Cucumber 风格指南,建议在每个场景中使用 “仅一个时间”。但是如果测试需要一系列按时间顺序的步骤怎么办?

这是一个现实世界的例子:许多空调在压缩机重新通电之前实施“延迟中断”,即在压缩机上次停止后五分钟内禁止重新启动压缩机。

你会如何用 Cucumber 表达这一点?这是我的第一次拍摄:

Given that the compressor relay is energized
When I turn off the air conditioner
Then the compressor relay should be de-energized
Then I make a note of the time
When I turn on the air conditioner
And I wait for three minutes
Then the compressor relay should be de-energized  # delay-on-break is in effect
When I wait for two minutes
Then the compressor relay should be energized     # delay-on-break time completes

用什么更好的黄瓜风格来写这个?

cucumber gherkin
1个回答
0
投票

所有指南都是建议,没有一个是经验法则。
当然,您不应该编写数十行来解释 SUT 中发生的每个技术细节,因为它根本不会为场景增加任何价值。

BDD 的主要目标不是具有几个给定、一个何时和一个然后关键字的小场景,而是改善利益相关者/同事之间的沟通和协作,促进对 SUT 所需行为的共同理解。
它应该像技术(开发/质量保证)和非技术(ba/经理/请求者/等)团队成员之间的通用语言。
如果没有人(除了我们自己)阅读这些场景,我们为什么要担心任何风格指南? :)

BDD 的详细解释可以在 ISTQB ATT 教学大纲中找到(第 2.1.2 节此处)。

最后,很多人在 Gherkin 中编写 E2E 测试,并且仅用 1 个“when/then”对来完成它确实很困难。

对于所描述的场景,如果团队成员可以阅读并理解 SUT 的预期行为 - 那么就完全没问题了。

我会通过删除那些对理解行为没有真正帮助的部分来最小化它,并将第一人称改为第三人称(以使场景去个性化):

Given the air conditioner is running
When the user turns off the air conditioner
Then the compressor relay should be de-energized

When the user turns on the air conditioner with a 3-minute delay
Then the compressor relay should be de-energized

When the user waits for 2 minutes
Then the compressor relay should be energized
© www.soinside.com 2019 - 2024. All rights reserved.