组织黄瓜测试场景和功能
Organizing cucumber test Scenarios and Features
添加新客户时,我想验证新添加的客户信息是否正确。
例如,
创建一个新客户,创建后搜索他的名字并检查详细信息是否正确。
我应该将它们都包含在同一个功能中,还是应该为添加和搜索客户创建不同的功能
Feature: Creating a new Client
The user is
Able to add a new Client
Scenario: Valid client entry.The client has a username,address
Given User is on the client page
When When he clicks on the add new client
Then He should see a pop up
Then He will enter the client name,address,title,phone no and email
And Click on the save button
Feature: Search for our newly added user
The user will be able to search a client
Scenario: Search for our newly added client
Given User is on the client page
When He click on the client search
And Types the user name
Then He should be able to match the first result
When He clicks on the first matched result
Then It will take him to a page with users details
最好分开存放。在许多项目中对我最有效的策略是,您应该将每个功能映射到需求(即高级用户故事或提供给您的需求,您可以从中导出 BDD 场景和步骤)。将每个高级需求保存在单独的功能文件中可以提高可读性和可维护性。
在这种情况下,“创建新客户”和“搜索我们新添加的客户”似乎是两个不同的requirements/user故事,最好分开管理,因为每个故事中的场景这些情况会有所不同。例如,“创建新客户端”可能有以下场景:
场景1:创建一个有效的客户端entry.The客户端有一个用户名,地址
场景 2:由于缺少信息,创建有效的客户端条目失败
情况 3:由于客户端已存在,创建有效的客户端条目失败
对于“搜索我们新添加的客户”,您还有其他场景,例如:
场景 1:使用用户名搜索新添加的用户,搜索结果应显示用户详细信息
场景 2:使用不在数据库中的用户名搜索用户,应显示空搜索结果
场景 3:使用地址详细信息搜索新添加的用户,搜索结果应显示用户详细信息
场景 4:使用不在数据库中的地址详细信息使用用户名搜索用户,应显示空搜索结果
如您所见,每个功能现在都很好地隔离并且有自己的相关场景。随着项目的增长,这些场景可能会增长,通过将每个高级需求保存在单独的功能文件中会更容易管理。
另一种对我来说非常有效的做法是将 Jira 票证(或您用来管理用户故事的任何工具)作为特征文件的前缀,因为它很容易搜索和管理。例如,您的功能应该类似于“TI1001 - 创建新客户端”和“TI1002 - 搜索我们新添加的用户”
有很多方法可以做到这一点
features
clients
add_new_client
search_for_clients
如果客户是其中非常重要的一部分,我会喜欢这个
项目
features
client_add
client_search
但是这个可以。
重要的是要努力保持一致。
至于你的场景,尽量让它们更简单,例如
Feature: Add new clients
Background:
Given I am allowed to add clients
Scenario: Add a client
Given there are no clients
When I add a client
Then there should be a client
你希望你的快乐之路场景如此简单,这样你就可以用悲伤的道路来扩展它们。例如
Scenario: Add a new client without an address
Given there are no clients
When I add a client with no address
Then I should see that a client cannot be added without an address
就搜索而言,事情可能会变得相当复杂,因此再次从简单开始
Feature: Search for clients
Scenario: Search for client Fred
Given there is a client Fred
When I search clients for Fred
Then I should see client Fred
Scenario: Search for client Fred when Fred does not exist
Given there is a client Sue
And there is not a client Fred
When I search for Fred
Then I should see a not found result
Scenario: Search for clients by postcode
Scenario: ...
对于搜索,您需要注意不要将所有时间都花在测试您的搜索引擎上(它应该已经过良好测试。
这类功能和场景是声明性的,而不是命令性的。他们陈述他们正在做什么以及为什么,但避免描述任何事情是如何完成的。 Cuking 使用声明式方法更有效。
添加新客户时,我想验证新添加的客户信息是否正确。
例如,
创建一个新客户,创建后搜索他的名字并检查详细信息是否正确。 我应该将它们都包含在同一个功能中,还是应该为添加和搜索客户创建不同的功能
Feature: Creating a new Client
The user is
Able to add a new Client
Scenario: Valid client entry.The client has a username,address
Given User is on the client page
When When he clicks on the add new client
Then He should see a pop up
Then He will enter the client name,address,title,phone no and email
And Click on the save button
Feature: Search for our newly added user
The user will be able to search a client
Scenario: Search for our newly added client
Given User is on the client page
When He click on the client search
And Types the user name
Then He should be able to match the first result
When He clicks on the first matched result
Then It will take him to a page with users details
最好分开存放。在许多项目中对我最有效的策略是,您应该将每个功能映射到需求(即高级用户故事或提供给您的需求,您可以从中导出 BDD 场景和步骤)。将每个高级需求保存在单独的功能文件中可以提高可读性和可维护性。
在这种情况下,“创建新客户”和“搜索我们新添加的客户”似乎是两个不同的requirements/user故事,最好分开管理,因为每个故事中的场景这些情况会有所不同。例如,“创建新客户端”可能有以下场景:
场景1:创建一个有效的客户端entry.The客户端有一个用户名,地址 场景 2:由于缺少信息,创建有效的客户端条目失败 情况 3:由于客户端已存在,创建有效的客户端条目失败
对于“搜索我们新添加的客户”,您还有其他场景,例如: 场景 1:使用用户名搜索新添加的用户,搜索结果应显示用户详细信息 场景 2:使用不在数据库中的用户名搜索用户,应显示空搜索结果 场景 3:使用地址详细信息搜索新添加的用户,搜索结果应显示用户详细信息 场景 4:使用不在数据库中的地址详细信息使用用户名搜索用户,应显示空搜索结果
如您所见,每个功能现在都很好地隔离并且有自己的相关场景。随着项目的增长,这些场景可能会增长,通过将每个高级需求保存在单独的功能文件中会更容易管理。
另一种对我来说非常有效的做法是将 Jira 票证(或您用来管理用户故事的任何工具)作为特征文件的前缀,因为它很容易搜索和管理。例如,您的功能应该类似于“TI1001 - 创建新客户端”和“TI1002 - 搜索我们新添加的用户”
有很多方法可以做到这一点
features
clients
add_new_client
search_for_clients
如果客户是其中非常重要的一部分,我会喜欢这个 项目
features
client_add
client_search
但是这个可以。
重要的是要努力保持一致。
至于你的场景,尽量让它们更简单,例如
Feature: Add new clients
Background:
Given I am allowed to add clients
Scenario: Add a client
Given there are no clients
When I add a client
Then there should be a client
你希望你的快乐之路场景如此简单,这样你就可以用悲伤的道路来扩展它们。例如
Scenario: Add a new client without an address
Given there are no clients
When I add a client with no address
Then I should see that a client cannot be added without an address
就搜索而言,事情可能会变得相当复杂,因此再次从简单开始
Feature: Search for clients
Scenario: Search for client Fred
Given there is a client Fred
When I search clients for Fred
Then I should see client Fred
Scenario: Search for client Fred when Fred does not exist
Given there is a client Sue
And there is not a client Fred
When I search for Fred
Then I should see a not found result
Scenario: Search for clients by postcode
Scenario: ...
对于搜索,您需要注意不要将所有时间都花在测试您的搜索引擎上(它应该已经过良好测试。
这类功能和场景是声明性的,而不是命令性的。他们陈述他们正在做什么以及为什么,但避免描述任何事情是如何完成的。 Cuking 使用声明式方法更有效。