テストとデバッグは別
テストは不具合を示す
デバッグは不具合を取り除くまでの開発行動

品質評価
不具合減少

外部品質
内部品質

システム利用者が見得るか見えないか

  • 機能適合性
    • タスクに合わせる
  • 性能効率性
    • パフォーマンス
  • 互換性
  • 使用性
  • 信頼性
  • セキュリティ
    • 認可を持った人に
  • 保守性
  • 移植性

TDD

テスト書く
最初は実装が無いので落ちる
テストを通すために実装
リファクタリング

テストが落ちることを確認する
テストを通すことだけを考える

  • テスト書きにくい
    • 副作用が多くないか
      • 他への影響大きくないか
    • 責務を持ちすぎてないか、不明瞭でないか
      • 設計がやらかしか

実務

作ってない関数を呼び出すテスト
テスト駆動により、大きく作る→小さく仕上げる が可能
関数を修正する時も、まずテストから直し、実行してから関数を直す

リファクタリング時は、関数の振る舞いを変えない