0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

新人エンジニアの読書録 『単体テストの考え方/使い方』 chap.4

Posted at

今回は、前回に引き続き、「単体テストの考え方/使い方」の読書メモです。
第4章では、良い単体テストを書くための考え方を4つの柱に沿って解説しています。

それでは早速、本文メモへ↓

良い単体テストを構成する4本の柱

下記の4項目を意識することが重要である。

  • 退行(regression)に対する保護
  • リファクタリングへの耐性
  • 迅速なフィードバック
  • 保守のしやすさ

退行に対する保護

退行:=バグ。なんらかの変更を加えた後に、既存のコードが想定通りに振る舞わなくなること。

通常、コードが大きくなればなるほど、退行が発生する可能性が高くなるため、退行から救い出す措置として「テスト」を用意しなければいけない。

リファクタリングへの耐性

リファクタリングへの耐性=偽陽性が生まれづらい性質

偽陽性:嘘の警告。プロダクションコードの振る舞いは正常なのに、テストケースが失敗すること。通常、リファクタリングが行われた際に発生することが多い。

リファクタリングへの耐性が低いテストが行われていると、開発者がテストの失敗に対して真剣に向き合わなくな理、重大なバグによってテストが失敗しても、見過ごしてしまう可能性がある。

偽陽性は、テストコードが対象のコードと深く結びついた場合に起こりやすくなる。そのため、テスト対象コードが観察可能な振る舞いを返すように設計し、その結果のみをテストするようにすると、偽陽性の発生を減らすことができる。

迅速なFB

テスト結果のフィードバックが早ければ、その分バグへの対応も早くなる。

保守のしやすさ

以下の2つの性質によって測られる

  1. テストケースを理解することがどのくらい難しいのか
  2. テストを行うことがどのくらい難しいのか

今回の記事で紹介した「4本の柱」を意識することで、より良いテスト(実用的なテスト)を書くことができるそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?