BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

Cucumberによるストーリー駆動開発の手法

| 作者: Sebastien Auvray フォローする 0 人のフォロワー , 翻訳者 角谷 信太郎 - (株)永和システムマネジメント フォローする 0 人のフォロワー 投稿日 2009年3月5日. 推定読書時間: 3 分 |

ビヘイビア(振舞)駆動開発(BDD:Behaviour Driven Development)の盛り上がりは看過できない。BDDは、テスト駆動開発(TDD:テスト駆動開発)の課題に応えるかたちでDan Northが2003年に提唱した手法だ。BDDはソフトウェアプロジェクトに関わる様々な人や組織の間を巻き込み、お互いが協調していくことを促進する。そこにはたとえば、開発者、品質保証担当、技術に詳しくない業務分析担当者などが含まれている。

RubyではDSLを作成するのも使うのも簡単なので、さまざまなBDDフレームワークが誕生した。RSpec(リンク)はその代表といえる。他にはAslak Hellesoy氏(リンク)によるCucumber(リンク)もそうで、こちらはJavaや.NET、Flexのコードをテストできる。Cucumberではプレインテキストの文書を自動化された機能テストとして実行できる。

以下はCucumberによるシナリオのサンプルである(CucumberプロジェクトのWikiから転載した(リンク))。

(訳注: 原文では英語のサンプルを転載しているが、翻訳では日本語シナリオのサンプル掲載した(リンク))

フィーチャ: 加算
  バカな間違いを避けるために
  数学オンチとして
  2つの数の合計を知りたい

  シナリオテンプレート: 2つの数の加算について
    前提 <値1> を入力
    かつ <値2> を入力
    もし <ボタン> を押した
    ならば <結果> を表示

  例:
    | 値1 | 値2 | ボタン | 結果 |
    | 20 | 30 | add | 50 |
    | 2 | 5 | add | 7 |
    | 0 | 40 | add | 40 |


シナリオを用意したら、そこに記述されている内容に対応する実際のコードを実装し、テストを実行する。あとはすべてのテストが成功するまでテストの実行と実装とを繰り返す。Cucumberは実行結果に色を付けるので、シナリオの各ステップのどこが成功して、どこが失敗したのかもわかりやすくなっている(次の画像はCucumberのWebサイトから転載(リンク))。
(訳注: 翻訳では日本語サンプルをアレンジして実行した結果の画像を掲載している)

Tests failure

Cucumberのシナリオ記述で採用されているフォーマットは「小キュウリ語」(Gherkin: ガーキン、コキュウリ)(リンク)と呼ばれており、シナリオ内で自然言語の区切りを示すのに使われている。たとえば「Given(前提)」「And(かつ)」といったキーワードがそうだ。なお、ガーキンにはフランス語やドイツ語の語彙も使える(リンク)(訳注:上掲のように日本語も使える)。ガーキンのキーワードの右側に書かれた自然言語のテキストは、プログラムで記述するステップ定義によって解釈され、ステップに対応するコードが実行される。


Cucumberの用途は様ざまで、たとえばシステム管理者によるWebアプリケーションの統合テスト(リンク)や分散システムでのメッセージングのテスト(リンク)、PDFへの書き込みテスト(リンク)にも使われている。


Cucumberのバージョンは、0.1.16ならRuby Gemでインストールできる。0.1.99.10はGitHubにリリースされている(リンク)
 

原文はこちらです:http://www.infoq.com/news/2009/03/bdd-with-cucumber

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT