Test Concerns Separately(関心事を分離してテストする)
1. 原則
関心事の分離
- 1つのテストケースで1つの関心事のみを検証する
- テスト対象のクラスやメソッドが持つ複数の振る舞いを、それぞれ独立したテストケースで検証する
- 例えば、関数の入力値の検証と、その関数が返す計算結果の検証を、別のテストケースに分ける
2. 根拠
テストの目的の明確化
- テスト失敗時の原因特定を容易にする
- 1つのテストが失敗した場合、そのテストが検証している特定の振る舞いに問題があると特定できる
- 複数の関心事が混在したテストでは、どの部分に問題があるか判別しにくい
3. 指針
独立した検証項目
- テスト対象のメソッドの各振る舞いを列挙する
- 例えば、メソッドの正常系、異常系、境界値など
- 列挙した各振る舞いを独立したテストケースとして実装する
4. 注意事項
過度な分割の回避
- 細分化しすぎるとテストケースの数が膨大になる
- テストコードの保守コストが増加する
- 適切な粒度で関心事を分離する
- テストの読みやすさやメンテナンス性を考慮する