単体テスト
1. 少ない時間で検証できる
CIで回して不満が出なければ十分短い
2. 単体と呼ばれる少量のコードを検証する
3. 隔離された状態で実行される
単体テストの目的はソフトウェアの成長速度を持続可能なものにすること
リグレッションがないことに自信が持てるようになり、リファクタリングや新機能開発が簡単に行えるようになる この目的のために必要な能力
テストケースの質の良しあしを区別できること
より価値のあるテストコードとなるようにリファクタリングできること
1. テストすることが開発サイクルの中に組み込まれている
2. コードベースの特に重要な部分のみがテスト対象となっている
プロダクトの核となる部分(ドメインモデル)とそうでないものを区別し、前者に注力すること
3. 最小限の保守コストで最大限の価値を生み出すようになっている
このためには価値のあるテストケースを認識し、作成するスキルが必要
価値のあるテストケースの基準
退行(regression)に対する保護
リファクタリングへの耐性
迅速なフィードバック
保守のしやすさ