リグレッション修正プルリクエストテンプレート
元のコミット参照、bisect結果、テストギャップ分析、防止策を含むリグレッション修正用PRテンプレート。
Process Templates
詳細な説明
リグレッション修正PRテンプレート
リグレッション(以前は動作していたが現在壊れている機能)は、通常のバグ修正を超える特定のコンテキストが必要です。レビュアーはリグレッションを導入した原因、既存テストがキャッチしなかった理由、類似のリグレッションを防ぐ手段を理解する必要があります。
テンプレート構造
## Regression Description
<!-- どの機能/動作がリグレッションしましたか?最後に動作していたのはいつですか? -->
## Regression Source
<!-- どのコミットまたはPRがリグレッションを導入しましたか? -->
<!-- 利用可能な場合はgit bisectの結果。 -->
## Fix Description
<!-- このPRはどのようにリグレッションを修正しますか? -->
## Test Gap Analysis
<!-- なぜ既存のテストがこのリグレッションをキャッチしなかったのですか? -->
<!-- どのタイプのテストが欠けていましたか(unit、integration、e2e)? -->
## Checklist
- [ ] リグレッションを導入したコミットを特定した
- [ ] リグレッションテストを追加した
- [ ] リグレッションテストがリグレッション導入コミットに対して失敗する
- [ ] リグレッションテストがこの修正で通過する
- [ ] すべての既存テストが通過する
## Prevention Measures
<!-- 類似のリグレッションを防ぐために何ができますか? -->
リグレッションソースの特定
どのコミットがリグレッションを導入したかを正確に知ることは根本原因の理解に有用です。git bisectは特定のコミットを見つける強力なツールであり、bisect結果の文書化はレビュアーがタイムラインを理解するのに役立ちます。
テストギャップ分析
リグレッション修正テンプレートの最も重要なセクションです。既存テストがリグレッションをキャッチしなかった場合、テストカバレッジにギャップがあることを意味します。このギャップを特定し、どのタイプのテストが欠けていたかを説明することで、チームのテスト戦略を改善できます。
リグレッションテストの検証
チェックリストは新しいリグレッションテストが以下を満たすことを確認します:
- リグレッション導入コミットに適用した場合に失敗する
- 修正を適用した場合に通過する
防止策
直接的な問題の修正を超えて、Prevention Measuresセクションはテストカバレッジの改善、追加のCIチェック、新しいコードレビューガイドラインなどシステム的な改善について考えることを求めます。
ユースケース
リファクタリング、依存関係のアップグレード、大規模な機能マージ後にリグレッションを経験しているチームが、徹底的なリグレッション分析と防止の文化を構築したい場合。