关于编写场景(功能测试)的主要想法?
Main idea about writing scenarios (functional testing)?
美好的一天,
我一直在思考描述特征的实质(Gherkin语法),找不到最佳答案。
同一场景的两个示例:
Scenario: Creation of a new task
Given I see the button for the creation of a new task
When I click the button in order to create a new task
Then I see the task editor
Scenario: Creation of a new task
Given I see the button "Create task"
When I click the button "Create task"
Then I see page "Task editor" has been opened
我看到了主要区别:
第一个变体是接口无关的。但是,您必须使用选择器或类似工具来找到确切的元素,然后您可以更改界面中的所有内容,并且这些测试不会失败(作为第二个变体)。
第一个变体不是声明性的。通常,您不能重复使用它来描述任何其他界面行为。
根据我的口味,第二个变体更容易理解场景中发生的事情。
我认为,第二个变体更灵活,可以让您更快地编写场景,但同时也存在问题:
您必须在场景中包含接口数据。这不是一个好习惯。但是通过这种(灵活性),您可以描述任何要测试的东西(例如,作为可见数据),因此此类测试更加准确,并提供更高的质量。
任何时候当你改变一个接口时,你需要修复你的测试。
那么,您能说说,您对此有何看法?
我认为灵活性、速度、质量和可读性(第二个变体)比第一个变体(除了可读性和 "stability"?什么都没有)好得多,但我不确定。是的,你在场景中放置了一些数据,但你几乎从不更改它们,即使你会更改它,它也可能在 seconds/minutes.
中固定
您在项目中使用什么,为什么?
而且,主要问题是,哪种变体更好?
请说出你的想法。
在我们目前的公司(数十项服务,企业级,用 BDD 编写),我们从第一个变体开始。
Scenario: Creation of a new task
Given I see the button for the creation of a new task
When I click the button in order to create a new task
Then I see the task editor
我们认为它更面向业务,更具描述性和更清晰。
但是几个月后现实生活告诉我们第二个版本更灵活,使用这个版本问题更少。
最后我们将所有场景重写为第二个版本
Scenario: Creation of a new task
Given I see the button "Create task"
When I click the button "Create task"
Then I see page "Task editor" has been opened
到目前为止,我们很高兴使用它。
总结:
基于几个月使用这两个版本,在团队中编写,使用 BDD 风格(首先测试)企业软件:第二个版本 win。即使使用 BDD 理论,第一个版本可能看起来更好。
美好的一天,
我一直在思考描述特征的实质(Gherkin语法),找不到最佳答案。
同一场景的两个示例:
Scenario: Creation of a new task
Given I see the button for the creation of a new task
When I click the button in order to create a new task
Then I see the task editor
Scenario: Creation of a new task
Given I see the button "Create task"
When I click the button "Create task"
Then I see page "Task editor" has been opened
我看到了主要区别:
第一个变体是接口无关的。但是,您必须使用选择器或类似工具来找到确切的元素,然后您可以更改界面中的所有内容,并且这些测试不会失败(作为第二个变体)。
第一个变体不是声明性的。通常,您不能重复使用它来描述任何其他界面行为。
根据我的口味,第二个变体更容易理解场景中发生的事情。
我认为,第二个变体更灵活,可以让您更快地编写场景,但同时也存在问题:
您必须在场景中包含接口数据。这不是一个好习惯。但是通过这种(灵活性),您可以描述任何要测试的东西(例如,作为可见数据),因此此类测试更加准确,并提供更高的质量。
任何时候当你改变一个接口时,你需要修复你的测试。
那么,您能说说,您对此有何看法?
我认为灵活性、速度、质量和可读性(第二个变体)比第一个变体(除了可读性和 "stability"?什么都没有)好得多,但我不确定。是的,你在场景中放置了一些数据,但你几乎从不更改它们,即使你会更改它,它也可能在 seconds/minutes.
中固定您在项目中使用什么,为什么?
而且,主要问题是,哪种变体更好?
请说出你的想法。
在我们目前的公司(数十项服务,企业级,用 BDD 编写),我们从第一个变体开始。
Scenario: Creation of a new task
Given I see the button for the creation of a new task
When I click the button in order to create a new task
Then I see the task editor
我们认为它更面向业务,更具描述性和更清晰。
但是几个月后现实生活告诉我们第二个版本更灵活,使用这个版本问题更少。
最后我们将所有场景重写为第二个版本
Scenario: Creation of a new task
Given I see the button "Create task"
When I click the button "Create task"
Then I see page "Task editor" has been opened
到目前为止,我们很高兴使用它。
总结: 基于几个月使用这两个版本,在团队中编写,使用 BDD 风格(首先测试)企业软件:第二个版本 win。即使使用 BDD 理论,第一个版本可能看起来更好。