駆け出しフリーランスエンジニアのブログ

iOS,Android,Web,フロントエンドをやっているフリーランスエンジニアの記録です

テスト駆動開発のユニットテストの考え方。

テスト駆動開発」というバイブル的な本があって、ここに書くことなるとは、おもっていなかったんだけど、 あまりに感銘を受けたので翻訳者みずから本の内容を実演(ライブコーディング)で紹介している動画と共に紹介します。

テスト駆動開発

テスト駆動開発

なぜ、テストコードを先に書くのか。 なぜ、糞コードが大量生産されてきたのか。 なぜ、設計もおろそかに、いきなりコードを書くのか。

ここを見ている現役エンジニアは、とても長い動画ですが、一度見てほしいです。


TDD Boot Camp 2020 Online #1 基調講演/ライブコーディング

目次

まえがき

  • 勇気

謝辞

はじめに

第I部 多国通貨

第1章 仮実装

第2章 明白な実装

第3章 三角測量

第4章 意図を語るテスト

第5章 原則をあえて破るとき

第6章 テスト不足に気づいたら

第7章 疑念をテストに翻訳する

第8章 実装を隠す

第9章 歩幅の調整

第10章 テストに聞いてみる

第11章 不要になったら消す

第12章 設計とメタファー

第13章 実装を導くテスト

第14章 学習用テストと回帰テスト

第15章 テスト任せとコンパイラ任せ

第16章 将来の読み手を考えたテスト

第17章 多国通貨の全体ふりかえり

  • ここから先はどうなるのか
  • メタファー
  • JUnitの使用状況
  • コードメトリクス
  • プロセス
  • テスト品質
  • 最後のふりかえり

第II部 xUnit

第18章 xUnitへ向かう小さな一歩

第19章 前準備

第20章 後片付け

第21章 数え上げ

第22章 失敗の扱い

第23章 スイートにまとめる

第24章 xUnitの全体ふりかえり

第III部 テスト駆動開発のパターン

第25章 テスト駆動開発のパターン

  • テスト(名詞)
  • 独立したテスト
  • TODOリスト
  • テストファースト
  • アサートファースト
  • テストデータ
  • 明示的なデータ

第26章 レッドバーのパターン

  • 一歩を示すテスト
  • はじめのテスト
  • 説明的なテスト
  • 学習用テスト
  • 脱線はTODOリストへ
  • 回帰テスト
  • 休憩
  • やり直す
  • 安い机に良い椅子

第27章 テスティングのパターン

  • 小さいテスト
  • Mock Object(擬装オブジェクト)パターン
  • Self Shunt(自己接続)パターン
  • Log String(記録用文字列)パターン
  • Crash Test Dummy(衝突実験ダミー人形)パターン
  • 失敗させたままのテスト
  • きれいなチェックイン

第28章 グリーンバーのパターン

  • 仮実装を経て本実装へ
  • 三角測量
  • 明白な実装
  • 一から多へ

第29章 xUnitのパターン

  • アサーション
  • フィクスチャー
  • 外部フィクスチャー
  • テストメソッド
  • 例外のテスト
  • まとめてテスト

第30章 デザインパターン

  • Commandパターン
  • Value Objectパターン
  • Null Objectパターン
  • Template Methodパターン
  • Pluggable Objectパターン
  • Pluggable Selectorパターン
  • Factory Methodパターン
  • Imposterパターン
  • Compositeパターン
  • Collecting Parameterパターン
  • Singletonパターン

第31章 リファクタリング

  • 差異をなくす
  • 変更の分離
  • データ構造の変更
  • メソッドの抽出
  • メソッドのインライン化
  • インタフェースの抽出
  • メソッドの移動
  • メソッドオブジェクト
  • パラメータの追加
  • メソッドからコンストラクタへのパラメータの移動

第32章 TDDを身につける

  • 一歩の大きさはどのくらいか
  • テストしなくてよいものはあるか
  • 良いテストを見分けることができるか
  • TDDはどのようにフレームワークを導くか
  • どのくらいのフィードバックが必要か
  • どのようなときにテストを消すべきか
  • プログラミング言語や環境はTDDに影響するか
  • 巨大なシステムをテスト駆動できるか
  • アプリケーションレベルのテストで開発を駆動できるか
  • 途中からTDDに乗り換えるにはどうすればよいか
  • TDDは誰のためのものか
  • TDDは初期状況に左右されるか
  • TDDとパターンの関係
  • なぜTDDは機能するのか
  • 名前の由来は
  • TDDとXP(eXtreme Programming)のプラクティスとの関係
  • Darachの挑戦

付録A 因果ループ図

  • フィードバック

付録B フィボナッチ

付録C 訳者解説:テスト駆動開発の現在

参考文献

あとがき

訳者あとがき

索引

著者・訳者について