テスト駆動開発のポイントとは
実践テスト駆動開発(Growing Object-Oriented Software, Guided By Tests)の第1章
学習プロセスとしてのソフトウェア開発
ソフトウェアプロジェクト=誰も経験していない何かをやること=過程で学ぶ
フィードバックは欠かせないツール
システムとその用途について学ぶために、実地からのフィードバックを活用する
変化を支えるプラクティス 必要なものは?
常にテストを実施してリグレッションエラーを回避すること
コードをできる限りシンプルにしておくこと、そのためのリファクタリング
これらをテスト駆動開発(TDD)によって打破する
テスト駆動開発ひとめぐり
ユニットテストを書く、通るように実装する、コードをリファクタリングする。
全体像
フィーチャを実装するときは受け入れテスト(Acceptance Test)を書くことから始める
エンドツーエンドでテストする
可能な限り、受け入れテスト(Acceptance Test)は、エンドツーエンドテストにする
テストのレベル
受け入れテスト(Acceptance Test)
インテグレーションテスト(Integration Test)
ユニットテスト(Unit Test)
外側の質(外部品質)と内側の質(内部品質)
エンドツーエンドテストを、
実行することで外側の質(外部品質)がわかる
書くことでドメインについてチームがどれほど理解できているかについての知見が得られる
ユニットテスト(Unit Test)を、
実行することでどのクラスも壊れていないことがわかる