ビヘイビア駆動開発-キュウリ

Cucumberは、実行可能仕様、テスト自動化、およびLivingドキュメントをサポートするツールです。

ビヘイビア駆動開発は、例による仕様を拡張します。また、テスト駆動開発のベストプラクティス、特に外部から内部への作業の観点を形式化します。開発作業は実行可能な仕様に基づいています。

ザ・ key features 実行可能な仕様は次のとおりです。

  • 実行可能な仕様は次のとおりです。

    • システムの動作を表す例から派生。

    • ビジネスや利害関係者を含む、開発に関与するすべての人の協力を得て書かれています。

    • 合格基準に基づく。

  • 実行可能な仕様に基づく受け入れテストは自動化されています。

  • 共有されたユビキタス言語を使用して、実行可能仕様と自動テストを次のように記述します。

    • ドメイン固有の用語は、開発全体で使用されます。

    • 顧客や利害関係者を含むすべての人が、システム、その要件、およびその実装について同じように話します。

    • 同じ用語を使用して、要件、設計ドキュメント、コード、テストなどに存在するシステムについて説明します。

    • 誰でも要件と、より多くの要件を生成する方法を読んで理解できます。

    • 変更に簡単に対応できます。

    • ライブドキュメントは維持されます。

Cucumberは、実行可能仕様をシステムの実際のコードおよび自動受け入れテストと結び付けるため、このプロセスを支援します。

これを行う方法は、実際には顧客と開発者が協力するように設計されています。受け入れテストに合格すると、それが表すシステムの動作の仕様が正しく実装されたことを意味します。

典型的なキュウリ受け入れテスト

次の例を考えてみましょう。

Feature − Sign up

  • サインアップは迅速かつフレンドリーでなければなりません。

  • シナリオ-サインアップの成功

    • New ユーザーは確認メールを受け取り、個人的に挨拶する必要があります。

    • Given サインアップすることを選択しました。

    • When 有効な詳細でサインアップします。

    • Then 確認メールが届きます。

    • And パーソナライズされたグリーティングメッセージが表示されます。

この例から、次のことがわかります。

  • 受け入れテストは Features

  • 機能はによって説明されています Scenarios

  • シナリオは Steps

仕様はプレーンテキストファイルで自然言語で記述されていますが、実行可能です。

きゅうりの働き

Cucumberは、システムに対して実行できるシナリオを探す機能を含むテキストファイルを処理するコマンドラインツールです。きゅうりのしくみを理解しましょう。

  • ファイルの名前と場所(それぞれのフォルダー)に関する一連の規則を利用して、簡単に開始できるようにします。

  • Cucumberを使用すると、仕様、自動テスト、およびドキュメントを同じ場所に保管できます。

  • 各シナリオは、シナリオの前提条件、アクション、および事後条件を説明するステップのリストです。各ステップがエラーなしで実行される場合、シナリオは合格としてマークされます。

  • 実行の最後に、Cucumberは通過したシナリオの数を報告します。

  • 何かが失敗した場合、開発者が進行できるように、何が失敗したかに関する情報を提供します。

きゅうりでは、 FeaturesScenarios、およびステップはと呼ばれる言語で書かれています Gherkin

Gherkinは、構造を持つプレーンテキストの英語(または60以上の他の言語の1つ)です。ガーキンは習得が容易で、その構造により、簡潔な方法で例を書くことができます。

  • Cucumberは、Gherkinで記述された実行可能仕様を含むファイルを実行します。

  • Cucumberには、プレーンテキストのGherkinステップをシステムと対話するアクションに変換するためのステップ定義が必要です。

  • Cucumberがシナリオ内のステップを実行すると、実行する一致するステップ定義が検索されます。

  • ステップ定義は、パターンが付加された小さなコードです。

  • このパターンは、ステップ定義を一致するすべてのステップにリンクするために使用され、コードは、CucumberがGherkinステップを検出したときに実行するものです。

  • 各ステップには、ステップ定義が付属しています。

  • ほとんどの手順では、入力を収集してから、フレームワークで呼び出しを行うために、アプリケーションドメインに固有のフレームワークに委任します。

Cucumberは、12を超えるさまざまなソフトウェアプラットフォームをサポートしています。自分に合ったCucumberの実装を選択できます。すべてのCucumber実装は、同じ全体的な機能を提供し、独自のインストール手順とプラットフォーム固有の機能も備えています。

ステップとステップ定義のマッピング

Cucumberの鍵は、ステップとステップ定義の間のマッピングです。

きゅうりの実装

以下に、Cucumberの実装を示します。

Ruby / JRuby
JRuby(Cucumber-JVMを使用)
Java
Groovy
.NET(SpecFlowを使用)
JavaScript
JavaScript(Cucumber-JVMおよびRhinoを使用)
Clojure
ゴス
ルア
PHP(Behatを使用)
Jython
C ++
Tcl

フレームワークの統合

以下にフレームワークの実装を示します。

Ruby on Rails
セレン
PicoContainer
SpringFramework
ワティル