行ってきました!「TDD勉強会」

去る2012年1月14日に開催された【TDD勉強会】に参加しました。
この勉強会は、「わんくま同盟名古屋勉強会」と「名古屋アジャイル勉強会」と「TEF東海勉強会」の合同イベントです。

**TDD(テスト駆動開発)とは?**
プログラム開発手法の一種で、プログラムに必要な各機能について、最初にテストを書き(これをテストファーストと言う)、そのテストが動作する必要最低限な実装をとりあえず行った後、コードを洗練させる、という短い工程を繰り返すスタイルである。 -Wikipediaより-

イベントの詳細は、こちらを参照ください。
まず冒頭で名古屋アジャイル勉強会スタッフのヤマモトさんによる挨拶の後、ソフトウェアテストをテーマにしたワークショップを行いました。
テストの種類を分類してみよー!
TEF東海のKENさんによるワークショップです。
普段ソフトウェア開発に携わっているときに何気なく使っている「●●テスト」という言葉を、改めて整理してみようという内容です。
まず、まず各グループで思いつく「●●テスト」という言葉を片っ端からピックアップしてみて、それを「ピンポイント−網羅的」と「BlackBox−WhiteBox」という2軸で分類してみます。
『単体テスト』や『結合テスト』といった一般的なものから、『シナリオテスト』『信頼性テスト』『コンポーネントテスト』など、参加者の経験や普段の業務での立ち位置によって様々な「●●テスト」が抽出されて面白かったです。
ちなみに私がいたグループではこんな感じでした。
DSC_0522.JPG
その後、講師のKENさんからテストを分類する際の観点について解説がありました。
それによると、大きく以下の3つに分類されます。

  • テスト設計技法
  • テストタイプ
  • テストレベル

詳細については、当日使用されたスライドを参照してみてください。

本ワークショップで、普段いかに何も意識せずに「●●テスト」という言葉を使っているかを痛感させられました。(ノ∀`)
TDDワークショップ
つづいて、わんくま同盟のbiacさんによるワークショップです。
biacさんより「TDDってどんなこと?」について説明があった後、開発言語(C#、Java、Python、PHPなど)ごとにグループに分かれてハンズオンによるワークショップを行いました。ちなみに私はJavaグループに行きました。
私はTDDについて詳しく理解しているわけではないのですが、

  • 動作しないテストを少しだけ書く(レッド)
  • テストを動作させるためのコードを書く(グリーン)
  • テストを動作させるためだけに作成された重複をすべて取り除く(リファクタリング)

を繰り返し実施する、という説明が非常にハラに落ちた気がします。
実際はTDDに適する部分もあればそうでない部分(UIなど)もあったり、すべてのコードをTDDで開発するワケではないといった説明もあり、初心者にも大変分かりやすい内容となっています。
説明資料等は、http://bluewatersoft.cocolog-nifty.com/blog/wankuma-documents01.html の「わんくま勉強会 名古屋#20 2012/1/14 TDD ワークショップ」のところからダウンロードできます。
さて、ハンズオンによるワークショップですが、今回のために用意されたお題をテーマに、グループ内でペアプログラミング形式で取り組みます。
TDDのワークなので、当然テストコードを先に書いて、次にひとまず動く製品コードを書き、最後にきれいにリファクタリングする、という手順を踏みます。
個人的にはプログラミング自体が久しぶりだったのと、初めてのペアプログラミングが非常に新鮮でした。
最後に、コードレビューや各グループごとの感想等を共有して、本ワークは終了です。
最後に
この後、TDDやテストに関するライトニング・トークスが行われた後、全体をふりかえって、本日の勉強会のプログラムは全て終了です。
とても充実した週末でした。(´∀`*)
(終)