テスト駆動開発のハンズオンイベント「ミニTDDBC」に参加してきた
2014.3.30
以前CI関連の勉強会でその存在を知ってから密かに思いを寄せていたTDDBC。
今回はそのTDDBCがYokohama Devtesting と合同でイベントを開催されるということだったので、
こちらのイベントに参加してきました。
TDDBCとは?
TDDを手を動かしながら体験することを目的として、全国各地にてハンズオンイベントを開催しているコミュニティ。
アジャイルとかCIのイベントに参加してるけど、結局何を契機に始めたらいいのかわかんないや みたいな方のためのイベントも。
言語はイベントによって異なる模様(今回はJava)。
Yokohama Devtesting とは?
横浜でソフトウェア開発のテストについて考えるコミュニティ。
月一回のペースにてテスト駆動開発本の読書会も開催されている模様。
イベントの流れ
・TDDに関するプレゼン
・ペアプロデモ
・実際にペアプロ
・コードレビュー
TDDに関するプレゼン
以下、TDDに関するメモ。
● TDDのゴール
「動作するきれいなコード」
● TDDのこころ
・小さくまわす
・TODOリストに入れて いっこいっこつぶして行く
・複数を相手にしない
● TDD三原則
・失敗する単体テストのコードを書く前に製品のコードを書いてはならない
・コンパイルが通り適切に失敗する単体テストができるまでは次の単体テストを書いてはならない
・現在失敗している単体テストが通るまで次の製品コードを書いてはならない。
● 用語集
・TODOリスト
最終的にめざすゴールと一つ一つのゴール
・アサートファースト
テストをどこから書く?
→ コードによって何を実現したいかをアサーションとして書く。
・仮実装
→ まず最初にやるテスト。
とりあえずテストを成功させる。
テストをテストする意味合いを持っている。
・三角測量
二つの側面からテストにより一つの実装を導く
・明白な実装
ーーー
ペアプロに関するメモ。
● ペア・チームにて「これは実装しないと駄目だよね」みたいな感じで 設計を含めて合意
● 紙・メモ帳(TODOリスト)に出しておく
ペアプロでよくあること「交代」。適切なタイミング(イテレーションが終わった時とか、詰まった時とか)で交代しよう。
実際に書いていく人 – ドライバ
アドバイスする人 – ナビゲータ
ペアプロデモ
「百聞は一見にしかず」ということで、
今回はFizzBuzzをお題に主催の方のうち2人がプロジェクタにペアプロの様子を映しながら開発。
「TODOリストを見てみましょうか」
「何からはじめる?」
「仮実装」
「テストを実行」
「コンパイルを通ることを確認」
「別のケース。エラーになりました」
「テストが通るようにプロダクトコードを修正」
「OK」
「んー、単純なんでリファクタリングする必要もなさそうですね」
「次のTODOにうつりますか」
「ここでナビゲータ交代」
「なんかここプライベート変数に置き換えた方よさそうですね」
「TODOに追加しておきましょう」
という感じのやり取りが続く。
うーん、こういう感じでやるのか…勉強になる。
実際にペアプロ
参加者で2人組になってペアプロを実際にやってみる。
結構な量の課題が小分けに出題されていて、
それをTDDで出来る所まで実際にペアプロで開発していくというスタイル。
ハンズオンの時間は1時間30分。
これがかなり楽しくて、もっとやりたかったなーという感じ。
何はともあれ、おかげでTDDのプロセスがようやく腑に落ちた感じ。
コードレビュー
書くだけで終わりじゃなくて、実際に全員の前でコードレビュー。
どのようなプロセスで課題に取り組んだか、どこで詰まったか等の説明とともに ペアプロで書いたコードの発表。
Javaだったらprivate関数の頭にアンスコ付ける必要あんまないよーとか
そこプリミティブ型の方がいいよーとか
そこチェック例外書かなくても大丈夫だよーとか
色々ご指摘を頂いて沢山勉強させていただきました。
その後
すっかり触発されて、高くて買うのに悩んでいたTDD本を買ってしまった。
ついでに「act_as_professional」と書かれた TDDのグリーンバンドもゲットしてきた。
(* グリーンバンドは TDD関連の偉い人がテスト辛くなった時に「でも俺プロだろ!」って自分を戒めるためのバンドらしいです)
Written by Nisei Kimura ( 木村 仁星 )