Cucumber は、振る舞い駆動開発 (BDD) を支援するツールです。BDD が初めての場合は、まず当社のBDD の概要をお読みください。

Cucumber とは?

BDD が発見、協調、そして例題(テストではない)に関するものであることを理解したところで、Cucumber を見てみましょう。

Cucumber は、プレーンテキストで記述された実行可能な仕様を読み取り、ソフトウェアがその仕様どおりに動作することを検証します。仕様は複数の、またはシナリオで構成されます。例えば

Scenario: Breaker guesses a word
  Given the Maker has chosen a word
  When the Breaker makes a guess
  Then the Maker is asked to score

各シナリオは、Cucumber が実行するステップのリストです。Cucumber は、ソフトウェアが仕様に準拠していることを検証し、各シナリオの成功✅または失敗❌を示すレポートを生成します。

Cucumber がシナリオを理解するためには、Gherkinと呼ばれる基本的な構文規則に従う必要があります。

Gherkin とは?

Gherkin は、Cucumber が理解できるよう、プレーンテキストを十分に構造化するための文法規則のセットです。上記のシナリオは Gherkin で記述されています。

Gherkin は複数の目的を果たします。

  • 曖昧さの無い実行可能な仕様
  • Cucumber を使用した自動テスト
  • システムの実際の動作方法を文書化する

Single source of Truth

Cucumber の文法は、多くの言語で利用できるため、チームは自分の言語でキーワードを使用できます。

Gherkin ドキュメントは、.feature テキストファイルに保存され、通常はソフトウェアと共にソース管理でバージョン管理されます。

詳細については、Gherkin リファレンスを参照してください。

ステップ定義とは?

ステップ定義は、Gherkin ステップをプログラミングコードに接続します。ステップ定義は、ステップによって実行されるべきアクションを実行します。そのため、ステップ定義は仕様を実装にハードワイヤリングします。

┌────────────┐                 ┌──────────────┐                 ┌───────────┐
│   Steps    │                 │     Step     │                 │           │
│ in Gherkin ├──matched with──>│ Definitions  ├───manipulates──>│  System   │
│            │                 │              │                 │           │
└────────────┘                 └──────────────┘                 └───────────┘

ステップ定義は多くのプログラミング言語で記述できます。JavaScript を使用した例を以下に示します。

When("{maker} starts a game", function(maker) {
  maker.startGameWithWord({ word: "whale" })
})

このドキュメントの改善にご協力ください。このページを編集する