今回は、前回に引き続き、「単体テストの考え方/使い方」の読書メモです。
第4章では、良い単体テストを書くための考え方を4つの柱に沿って解説しています。
それでは早速、本文メモへ↓
良い単体テストを構成する4本の柱
下記の4項目を意識することが重要である。
- 退行(regression)に対する保護
- リファクタリングへの耐性
- 迅速なフィードバック
- 保守のしやすさ
退行に対する保護
退行:=バグ。なんらかの変更を加えた後に、既存のコードが想定通りに振る舞わなくなること。
通常、コードが大きくなればなるほど、退行が発生する可能性が高くなるため、退行から救い出す措置として「テスト」を用意しなければいけない。
リファクタリングへの耐性
リファクタリングへの耐性=偽陽性が生まれづらい性質
偽陽性:嘘の警告。プロダクションコードの振る舞いは正常なのに、テストケースが失敗すること。通常、リファクタリングが行われた際に発生することが多い。
リファクタリングへの耐性が低いテストが行われていると、開発者がテストの失敗に対して真剣に向き合わなくな理、重大なバグによってテストが失敗しても、見過ごしてしまう可能性がある。
偽陽性は、テストコードが対象のコードと深く結びついた場合に起こりやすくなる。そのため、テスト対象コードが観察可能な振る舞いを返すように設計し、その結果のみをテストするようにすると、偽陽性の発生を減らすことができる。
迅速なFB
テスト結果のフィードバックが早ければ、その分バグへの対応も早くなる。
保守のしやすさ
以下の2つの性質によって測られる
- テストケースを理解することがどのくらい難しいのか
- テストを行うことがどのくらい難しいのか
今回の記事で紹介した「4本の柱」を意識することで、より良いテスト(実用的なテスト)を書くことができるそうです。