📜  行为驱动的开发-Gherkin(1)

📅  最后修改于: 2023-12-03 15:11:54.522000             🧑  作者: Mango

行为驱动的开发-Gherkin

什么是行为驱动的开发?

行为驱动的开发(BDD)是一种软件开发方法,强调以业务需求(用户的行为)为导向,通过故事场景、规则和样例来确定用户需求和应用行为。 BDD 让开发人员、测试人员和商业用户之间的沟通更加流畅,可以通过协作快速生成高质量的软件。与测试驱动的开发(TDD)类似,BDD 也强调测试的重要性,不同之处在于 BDD 着重测试业务逻辑和要求,而 TDD 着重测试代码的正确性。

Gherkin 是什么?

Gherkin 是一种用于描述 BDD 场景的语言。它的语法非常简单,易于理解和使用。Gherkin 本身并不是一个编程语言,它只是一个类似于自然语言的框架,有一定的格式和结构,用于编写应用程序的行为规范。

Gherkin 基本语法
  • Feature:用于描述要测试的应用程序的名称和功能。
  • Scenario:用于描述一个测试场景,描述用户的一项操作行为和系统对该行为的响应。
  • Given:用于描述测试场景的前置条件。
  • When:用于描述当某个事件发生时,系统的行为。
  • Then :用于描述系统的预期行为。
  • And:用于描述测试场景的其他步骤。

例如:

Feature: 简单加法
  为了学习 BDD,我想学习简单的加法
  
  Scenario: 两个正数相加
    Given 有两个数字,分别是1和2
    When 我将两个数字相加
    Then 结果应该为3

  Scenario: 一个正数和一个负数相加
    Given 有两个数字,分别是1和-2
    When 我将两个数字相加
    Then 结果应该为-1
使用 Gherkin

要在应用程序中使用 Gherkin,我们需要使用一个类似于 Gherkin 的转换器将其转换为实际代码。这些转换器通常是由第三方库或应用程序内置的模块提供的。

例如,Cucumber 是一个带有 Ruby、Java 和 JavaScript 支持的 Gherkin 框架,良好地支持 Gherkin 语法。

Feature: 简单加法
  为了学习 BDD,我想学习简单的加法
  
  Scenario: 两个正数相加
    Given 有两个数字,分别是1和2
    When 我将两个数字相加
    Then 结果应该为3

  Scenario: 一个正数和一个负数相加
    Given 有两个数字,分别是1和-2
    When 我将两个数字相加
    Then 结果应该为-1

使用 Cucumber,我们可以将 Gherkin 语法转换为以下 Ruby 代码:

Given(/^有两个数字,分别是(\d+)和(\d+)$/) do |arg1, arg2|
  @arg1 = arg1.to_i
  @arg2 = arg2.to_i
end

When(/^我将两个数字相加$/) do
  @sum = @arg1 + @arg2
end

Then(/^结果应该为(-?\d+)$/) do |result|
  expect(@sum).to eq(result.to_i)
end
使用 Gherkin 的好处

使用 Gherkin 的好处很多。下面列举了一些最重要的:

  • 帮助定义明确的业务需求,帮助开发人员更好地理解需求。
  • 增加在软件团队和客户之间进行交流的效率,有助于在开发过程中及时调整和沟通需求和进度。
  • 确保在任何时候,开发人员和测试人员都明确了在应用程序中需要执行的测试用例,避免重复实施测试用例,减少浪费。
  • 鼓励开发人员编写清晰、易于理解的代码,减少代码的混乱度和复杂度。
  • 适用于敏捷、增量式的软件开发风格。
总结

通过使用 Gherkin 和 BDD,我们可以在软件开发过程中,以可视化和可交互的方式,定义和修改业务要求、测试用例和代码实现,提高开发人员和测试人员之间的沟通和协作,减少了开发过程中产生的错误和浪费。同时,这种方法也可以帮助客户和商业用户更好地理解应用程序的功能和价值,使软件开发更具有生产力。