明日からやろう!TDDのはじめ方

こんにちは、アジャイルひよこクラブです!

先日、アジャイルひよこクラブで開催された

明日からやろう!TDDのはじめ方 に参加してきました!

TDDとは、アジャイルソフトウェア開発手法のテスト駆動開発のことです!

  • テーマ:「TDD(テスト駆動開発)」
  • 登壇者:安井 力さん(やっとむさん)

アジャイルコーチ、認定スクラムマスター。

フリーランスでお仕事募集中。

訳書に『スクラム現場ガイド』(マイナビ)、『カンバン仕事術』(オライリー)、『アジャイルな見積りと計画づくり』(マイナビ)、『Fearless Change』(丸善出版)など。

好きなプラクティスはテスト駆動開発とふりかえり。

http://d.hatena.ne.jp/yach/

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できるようになる = 効果をあげられるようになる = 人に説明できるようになる

--

--

karamage@柿本匡章
アジャイルひよこクラブ

Software developer. Mobile apps and Web3. I’ve developed apps that “My Thanks Diary”. I’m good at Flutter, React, Vue. https://github.com/karamage