【かいきてすと】

回帰テスト(リグレッションテスト) とは?

💡 直したつもりが別の場所が壊れた!を防ぐ安全確認テスト
📌 このページのポイント
回帰テストの流れ コード変更 バグ修正・機能追加 回帰テスト実行 既存テストを再実行 ✔ 全テスト合格 ✘ テスト失敗 デプロイ デグレード発見 → 修正して再テスト ✘ 回帰テストなしの場合 修正したのに別の機能が壊れて 本番障害が発生するリスク ✔ 回帰テストありの場合 既存機能の破壊を早期発見し 安全にリリースできる
回帰テストの流れとメリット
ひよこ ひよこ

回帰テストって何のためにやるの?

ペンギン先生 ペンギン先生

ソフトウェアを修正したり新機能を追加したりすると、思わぬところで既存の機能が壊れることがあるんだよ。それを防ぐために、変更後にもう一度既存のテストを実行して問題がないか確認するのが回帰テストなんだ

ひよこ ひよこ

直したのに別の場所が壊れるってどういうことなの?

ペンギン先生 ペンギン先生

例えばログイン機能を修正したら、実はパスワードリセット機能が同じコードを使っていて、そっちが動かなくなった、というケースだよ。プログラムは色んな部分が繋がっているから、1箇所直すと別の場所に影響が波及することがあるんだ。これを「デグレード」って呼ぶんだね

ひよこ ひよこ

毎回全部のテストをやり直すの?大変そう…

ペンギン先生 ペンギン先生

全部やるのが理想だけど、時間がかかるから工夫が必要だね。変更の影響範囲を分析して、関連するテストだけ実施する方法もあるよ。だからこそテスト自動化が重要なんだ。自動テストなら何百ものテストケースを短時間で実行できるからね

ひよこ ひよこ

CI/CDと組み合わせて使うって聞いたことがあるよ!

ペンギン先生 ペンギン先生

そうだよ。コードをプッシュするたびにCIパイプラインで自動的に回帰テストを実行する仕組みが今の開発では定番だね。テストが失敗したらマージをブロックすることで、壊れたコードが本番に入るのを防げるんだ

ひよこ ひよこ

テストケースはどんどん増えていくの?

ペンギン先生 ペンギン先生

増えるよ。バグが見つかるたびに、そのバグを検出するテストを追加するんだ。同じバグが二度と起きないようにする「バグ再発防止テスト」とも言えるね。ただし増えすぎると実行時間が膨大になるから、テストの優先度付けや並列実行で工夫するのがベテランの腕の見せどころだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
回帰テスト」って出てきたら「修正後に他の機能が壊れていないか確かめるテスト」と思えればだいたいOK!
📖 おまけ:英語の意味
「Regression Testing」 = 回帰テスト・退行テスト
💬 Regressionは「後退」という意味で、品質が後退していないかを確認するテストだから回帰テストって呼ばれるんだよ
← 用語集にもどる