明日からやろう!TDDのはじめ方
こんにちは、アジャイルひよこクラブです!
先日、アジャイルひよこクラブで開催された
明日からやろう!TDDのはじめ方 に参加してきました!
TDDとは、アジャイルソフトウェア開発手法のテスト駆動開発のことです!
- テーマ:「TDD(テスト駆動開発)」
- 登壇者:安井 力さん(やっとむさん)
アジャイルコーチ、認定スクラムマスター。
フリーランスでお仕事募集中。
訳書に『スクラム現場ガイド』(マイナビ)、『カンバン仕事術』(オライリー)、『アジャイルな見積りと計画づくり』(マイナビ)、『Fearless Change』(丸善出版)など。
好きなプラクティスはテスト駆動開発とふりかえり。
https://www.facebook.com/yattom
TDD はじめる前に
テスト、かいてますか?
- そもそもテストしてる?
- テスト自動化してる?
- TDDしてる?
ぼくの場合は、テストはしていて、自動テストは一部分だけ書いています。TDDはしていませんでした。
TDDしたい?
テスト駆動開発をする動機、それは
— Clean Code that works —
“動作する” “綺麗な” コードを書きたい、というキモチ
“動作する”コード、とは?
- 動作が仕様を満たす
“きれい”なコード、とは?
- コードが読みやすい
- 変更に強い
TDD 手順
- テストを書く
- 実行して失敗させる
- テストが通る実装を書く
- テストを成功させる
- テストが通る状態のままコードを綺麗にする
- 実装を完成させる
TDDをサイクルにする
- TDDと黄金の回転 (Red /Green /Refactor)
- 自信と安心 動作しているので安心
- お客さんに価値を提供
- テストファースト
TDDのおすすめ本
「レガシコード改善コード」を読め!
「リファクタリング」 「リーダブルコード」も読め!
TDDのメリット・デメリット
- バグ件数は6割に減る。
- 時間が20%増しかかる
- 保守性への影響
- よりやすいコストで変更可能
くわしくは「やっとむ TDD」
TDD デモ 実演
やっとむさんに、実際にどのようにしてTDDを行っていくのか実演してもらいました。
FizzBuzz 問題をTDDで
実際にFizzBuzz問題をプログラムで書いていく実例をTDDで行いました。
この実演をしながら、やっとむさんがおっしゃっていた大事なポイント
- TDDは品質を担保するものではない
- 仕様を満たすことを保証する
- TDD になれれば慣れるほど、短く刻んで行く
- 短く時間を刻んでテストする。
- 一歩一歩少しづつ進んでいく
- 自信が持てる
TDDのテストはテストではない!?のか?
** TDD はチェッキングである **
チェッキングとテスティングとの違い
[テスティング]
- 仕様の以外のテスト、品質のためのテスト
- ユーザーに価値を提供できているのか
[チェッキング]
- 仕様を満たしているのか
TDDだけではテスト(テスティング)が足りない
テスト自動化のメリット
たくさん
TDDまとめ
- TDD = テスト自動化のメリット と言っても良い
- TDDで問題解決=ツボ買えと言ってるのと一緒
- TDDはツールである
- 訓練になる
- 個人でもチームでも使える
- ひとりでペアプログラミングや朝会はできない
- 問題解決に使える、こともある
- 間合いを調節するためにTDD 刻む間隔 を大切にする
- ソフトウェアを変更する際、大きく一歩を踏み出すとコケやすい
- TDDできるようになる = 効果をあげられるようになる = 人に説明できるようになる