品質の出口はテスト:仕様書からテストケースを書くアプローチ
概要¶
ryoya nagasawa さんの Zenn 記事「品質の出口はテスト。なら仕様書からテストケースで書く」へのバッジ贈呈ポスト。テスト駆動・仕様駆動の開発アプローチについて。
詳細¶
「品質の出口はテスト」という考え方¶
品質の担保は、コードレビューや静的解析だけでは不十分で、最終的にはテストが品質の出口となる。
仕様書からテストケースを書くアプローチ¶
仕様書ドリブンなテスト設計:
仕様 → テストケース設計 → 実装 → テスト実行
メリット:
1. 仕様の曖昧さを実装前に発見できる
2. テストが仕様のドキュメントになる(Living Documentation)
3. 実装者とテスト設計者の認識ズレを防ぐ
実践的な流れ¶
1. 仕様書を読んでテストケースを列挙する
例:「ユーザー登録 API の仕様」
- 正常系: 有効なメールとパスワードで登録 → 201 返却
- 異常系: 重複メール → 409 Conflict
- 異常系: パスワードが8文字未満 → 400 Bad Request
- 異常系: メール形式不正 → 400 Bad Request
2. テストコードを先に書く(TDD 的アプローチ)
func TestCreateUser_DuplicateEmail(t *testing.T) {
// 同じメールで2回登録した場合 409 が返ること
}
3. テストが通るように実装する
4. 仕様に漏れがあればテストケースに追加 → 仕様を更新
なぜこれが重要か¶
なぜ重要か / いつ使うか¶
- チームで API 仕様を決めた直後にテストケースを設計するとき
- レビューで「仕様通りに動くか」を担保する基準を作るとき
- 「テストを書く文化」をチームに根付かせるための入口として