这是我遇到的一个有趣的话题,我和我的同事对这个问题有不同的看法。您的 Gherkin 是否应该准确描述测试在做什么,或者只显示您在测试中尝试实现的业务逻辑。
我在工作中经常遇到的最大的例子是,如果您可以访问项目 A,那么您应该可以访问 A。我们可以有 20 种不同类型的用户可以访问 A,所以我们只选择 1 (以防止我们的测试套件需要 40 小时才能运行)。那么哪个“更好”?
一种
Scenario: A user with access to item A can access A
Given I am a type 4 user with access to item A
When I try to access A
Then I am granted access to A
或乙
Scenario: A user with access to item A can access A
Given I am a user with access to item A
When I try to access A
Then I am granted access to A
注意给定语句的差异(类型 4 用户)
在步骤定义中,我们将使用 4 类用户进行测试,但该测试并不特定于 4 类用户。任何具有项目 A 的用户都可以用于此测试,我们只使用类型 4 用户,因为我们需要使用用户类型登录。
所以 A 描述了测试在做什么(使用可以访问项目 A 的类型 4 用户登录)
而 B 描述了访问项目 A 所需的功能(只是可以访问项目 A 的用户)
在您问之前,我们如何确定谁有权访问项目 A 是对数据库的 SQL 调用,以查找链接到用户的特定项目。