リグレッションテスト(Regression Test)とは、プログラムを修正したり機能を追加したりした後で、これまで正常に動いていた部分が壊れていないかを確かめるテストのことです。日本語では「回帰テスト」「退行テスト」とも呼ばれます。
現実世界に例えると、リグレッションテストは壁に棚を取り付けた後、隣の部屋の電気がちゃんと点くか確かめる作業のようなものです。手を加えた場所だけを見ていては、思わぬところで起きた不具合を見逃してしまいます。
なぜ必要なのか
プログラムの各部分は、見えないところで互いにつながっています。ある画面の不具合を直したことが、まったく別の画面の動きに影響してしまうことは珍しくありません。直した本人にも予想がつかないため、確かめる工程が要ります。
いつ実施するか
| 場面 | 確かめたいこと |
|---|---|
| 不具合を直したとき | 直したことで別の場所が壊れていないか |
| 機能を追加したとき | 既存の機能がこれまで通り動くか |
| 環境を更新したとき | 基盤の入れ替えで動かなくなった部分がないか |
範囲をどこまで広げるか
すべてを毎回確かめられれば安心ですが、現実には時間が足りません。影響が及びそうな範囲を見極めて絞り込むか、重要な部分だけを選んで繰り返し確認するか。この線引きが、実務では悩みどころになります。
手作業では続かない
リグレッションテストは、修正のたびに同じ内容を繰り返す作業です。手で行っていると回数を重ねるほど負担が増し、やがて省かれるようになります。省いた途端に不具合が漏れ出すため、続けられる形にすることが重要です。
自動化との相性が良い
毎回まったく同じ手順を繰り返すという性質から、リグレッションテストは自動化に最も向いた工程とされています。手順をプログラムとして書いておけば、修正のたびに自動で実行し、結果だけを確認できます。
デグレを防ぐための仕組み
以前は動いていた機能が動かなくなることを、現場では「デグレ」と呼びます。リグレッションテストは、このデグレを世に出す前に見つけるための仕組みだといえます。テストが揃っているほど、安心して手を入れられるようになります。
テストが資産になる
一度書いたテストは、その後の修正のたびに使い回せます。積み重ねるほど守りが厚くなり、開発を続けるうえでの財産になっていくという性質があります。逆にテストが無いシステムは、手を入れるたびに不安がつきまといます。
直せない状態を招かないために
テストが整っていないと、「触ると何が壊れるか分からないから、なるべく手を入れない」という空気が生まれます。改善が止まり、古いまま使い続けるほかなくなる。リグレッションテストは、システムを変え続けられる状態を保つための備えでもあります。
まず何から始めるか
すべてを一度にそろえる必要はありません。止まると業務への影響が大きい機能から順に、少しずつテストを用意していくのが現実的な進め方です。過去に不具合が起きた箇所は、再発しやすいため優先度が高くなります。

コメント