テストとデバッグは別
テストは不具合を示す
デバッグは不具合を取り除くまでの開発行動
品質評価
不具合減少
外部品質
内部品質
システム利用者が見得るか見えないか
- 機能適合性
- タスクに合わせる
- 性能効率性
- パフォーマンス
- 互換性
- 使用性
- 信頼性
- セキュリティ
- 認可を持った人に
- 保守性
- 移植性
TDD
テスト書く
最初は実装が無いので落ちる
テストを通すために実装
リファクタリング
テストが落ちることを確認する
テストを通すことだけを考える
- テスト書きにくい
- 副作用が多くないか
- 他への影響大きくないか
- 責務を持ちすぎてないか、不明瞭でないか
- 設計がやらかしか
- 副作用が多くないか
実務
作ってない関数を呼び出すテスト
テスト駆動により、大きく作る→小さく仕上げる が可能
関数を修正する時も、まずテストから直し、実行してから関数を直す
リファクタリング時は、関数の振る舞いを変えない