« [ブログ紹介] TDD を評価した論文の紹介、 2題 | トップページ | [お知らせ] 「イベント」 カテゴリーを追加しました »

2010年3月15日 (月)

[イベント] TDD 道場 第2回 @わんくま名古屋勉強会#12

昨日 (2010/3/13) 開催された 「わんくま同盟 名古屋勉強会 #12」 で、 TDD 道場をやりました。 前回の反省をふまえていくつか工夫してみたので、 少しはマシにできたかと思います。
ペアプロしてくれた方々、 また、 会場の参加者の方々、 どうもありがとうございました。

TDD 道場とは、 TDD をやってみることに主眼を置いたコーディング道場です。
今回、 説明に使ったスライドと開始時点のソースコードはこちらにあります。 ⇒ 勉強会などで使った資料: わんくま勉強会 名古屋#12
お題は、 VB 2008 Express Edition + NUnit 2.5 で 「郵便番号のバリデーション」 をやりました。 詳しくは、 上記のスライドをご覧ください。
当日の写真 (って、 私が喋ってるところで、 恥ずかしいのですが) が、 「りょーいち Blog」 に載ってます
反省点は掲示板のほうに書きました。 ⇒ TDD.NET 掲示板: 「TDD 道場」 第2回への要望とか

掲示板にも書きましたけど、 今回の一番の収穫は、 「GREEN になると分かっているテストケースは書かないというルールも、 実際にそういうテストケースを書いてみると、 良く伝わる」 ということでした。

今回のお題では、 バリデーターに入ってくる文字列はすでにフィルタリングされていて、 数字と '-' (半角マイナス) しか入ってこないものとしました。 そのため、 設計しなければならないテストケースは少なくて済みます。 進行をスムースにするために事前に用意しておいたテストケースは次のとおり。 (注意: これらを全部やれば完璧とは限りません。)

  入力 出力
1 String.Empty (空文字) ※作成済み False
2 "12" (数字1~2桁) False
3 "123" (数字3桁) True
4 "1234" (数字4~6桁) False
5 "1234567" (数字7桁) True
6 "12345678" (数字8桁以上) False
7 "123-4567" (数字3桁 + '-' + 数字4桁) True

登壇してくださったペアが選択したテストケースは、 その順序も含めて示すと次の通りでした。

  1. Test1_空文字_False
  2. Test6_8桁以上_False
  3. Test2_3桁_True
  4. Test5_7桁_True
  5. Test7_3桁_4桁_True

1番目は、 事前に準備として記述しておいたものです。 次からが、 TDD 道場で書いてもらったテストケースになります。
2番目は、 この時点で書いたのでは GREEN になってしまうテストケース。 実際に GREEN になってしまって製品コードを何も変更できないのを見た会場の参加者に、 納得したという表情が広がったように思いました。
テストケースの 3番と 4番は書きませんでしたが、 ここまでの 5つのテストケースだけで仕様を満たしたメソッドは完成しています。
ちなみに、 3桁 + 2桁 については、 仕様変更の分としてスライドの最終ページに用意してありましたが、 時間内には出来ませんでした。

35分間の枠の中で、 最初に私が 10分近く喋ったので、 実質 25分くらい。 それで 2ペア 4人に TDD を体験してもらうことができて、 時間には多少余裕がありました。 簡単なものであって事前にテストケースを提示しておくと、 壇上でしかも慣れない環境とキーボードを使う TDD 初心者であっても、 RED→GREEN を 5分程度で回せるということだと思います。 ただし、 リファクタリングはまったくやれませんでした。

勉強会終了後に、 お褒めの言葉を戴いたり、 自分たちの勉強会でもやってみたいとおっしゃって戴いたりしまして、 とても嬉しかったです。

|

« [ブログ紹介] TDD を評価した論文の紹介、 2題 | トップページ | [お知らせ] 「イベント」 カテゴリーを追加しました »

*イベント」カテゴリの記事

<NUnit>」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/209349/47814286

この記事へのトラックバック一覧です: [イベント] TDD 道場 第2回 @わんくま名古屋勉強会#12:

« [ブログ紹介] TDD を評価した論文の紹介、 2題 | トップページ | [お知らせ] 「イベント」 カテゴリーを追加しました »