回帰テスト
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/12/04 20:52 UTC 版)
この記事は別の言語から大ざっぱに翻訳されたものであり、場合によっては不慣れな翻訳者や機械翻訳によって翻訳されたものかもしれません。 |
背景
ソフトウェアが更新または変更されたり、変更されたターゲットで再利用されたりすると、新しい障害の発生や古い障害の再発生が非常に一般的である。不十分なリビジョン管理手法(またはリビジョン管理における単純な人為的エラー)によって修正が失われるために、再出現が発生することがある。多くの場合、問題の修正は「脆弱」であり、最初に観察された狭いケースでは問題が修正されるが、ソフトウェアの存続期間中に発生する可能性のあるより一般的なケースでは修正されない。多くの場合、ある領域の問題を修正すると、別の領域でソフトウェアのバグが発生する。最後に、一部の機能が再設計されると、その機能の元の実装で行われたのと同じ間違いのいくつかが再設計で行われる場合がある。
そのため、ほとんどのソフトウェア開発の状況では、コーディングのベストプラクティスとして、バグの修正を行ったら、バグを再現させたテストを実行して、さらにプログラムに以降の変更を行ったときに定期的にプログラムへの同じテストを再実行することが挙げられている[4]。 これは、プログラミング手法を使用した手動テスト手順で実行できるが、多くの場合、自動テストツールを使用して実行される[5]。 このようなテストスイートには、テスト環境ですべての回帰テストケースを自動的に実行できるようにするソフトウェアツールが含まれる。一部のプロジェクトでは、自動システムをセットアップして、指定された間隔ですべての回帰テストを再実行し、障害を報告する(これは回帰または古いテストを意味する可能性がある)[6]。 一般的な戦略では、コンパイルが成功するたびに(小さなプロジェクトの場合)、毎晩、または週に1回、このようなシステムを実行する。これらの戦略は、外部ツールによって自動化できる。
回帰テストは、エクストリームプログラミングソフトウェア開発手法の不可欠な部分である。この方法では、設計ドキュメントは、ソフトウェア開発プロセスの各段階を通じて、ソフトウェアパッケージ全体の広範囲にわたる反復可能な自動テストに置き換えられる。回帰テストは、機能テストが終了した後に実行され、他の機能が機能していることを確認する。
企業の世界では、従来、回帰テストは、開発チームが作業を完了した後にソフトウェア品質保証チームによって実行されてきた。ただし、この段階で見つかった欠陥は、修正するのに最も費用がかかる。この問題は、単体テストによって対処されている。開発者は常に、開発サイクルの一環として、テストケースを書いているが、これらのテストケースは、一般的にどちらかだった機能テストや単体テストのみ意図成果を検証する。開発者テストでは、開発者は単体テストに集中し、ポジティブテストケースとネガティブテストケースの両方を含める必要がある[7]。
テクニック
回帰テスト手法は次のとおり。
すべてを再テスト
現在のプログラムのすべてのテストケースをチェックして、その整合性をチェックする。すべてのケースを再実行する必要があるためコストがかかるが、コードが変更されたためにエラーが発生しないことが保証される[8]。
回帰テストの選択
すべてを再テストするのとは異なり、この手法は、テストスイートの一部を選択するコストがすべてを再テストする手法よりも少ない場合、テストスイートの一部を実行する(すべてを再テストするコストがかかるため)[8]。
テストケースの優先順位付け
テストスイートの障害検出率を高めるために、テストケースに優先順位を付ける。テストケースの優先順位付け手法では、優先度の高いテストケースが、優先度の低いテストケースの前に実行されるようにテストケースをスケジュールする[8]。
テストケースの優先順位付けの種類
- 一般的な優先順位付け–後続のバージョンで有益となるテストケースに優先順位を付ける。
- バージョン固有の優先順位付け–ソフトウェアの特定のバージョンに関してテストケースに優先順位を付ける。
ハイブリッド
回帰テストの選択とテストケースの優先順位付けを組み合わせたもの[8]。
- ^ Basu, Anirban (2015). Software Quality Assurance, Testing and Metrics. PHI Learning. ISBN 978-81-203-5068-7
- ^ National Research Council Committee on Aging Avionics in Military Aircraft: Aging Avionics in Military Aircraft. The National Academies Press, 2001, page 2: ″Each technology-refresh cycle requires regression testing.″
- ^ Boulanger, Jean-Louis (2015). CENELEC 50128 and IEC 62279 Standards. Wiley. ISBN 978-1119122487
- ^ Kolawa, Adam; Huizinga, Dorota (2007). Automated Defect Prevention: Best Practices in Software Management. Wiley-IEEE Computer Society Press. p. 73. ISBN 978-0-470-04212-0
- ^ Automate Regression Tests When Feasible, Automated Testing: Selected Best Practices, Elfriede Dustin, Safari Books Online
- ^ daVeiga (2008年2月6日). “Change Code Without Fear: Utilize a Regression Safety Net”. Dr. Dobb's Journal. 2020年12月21日閲覧。
- ^ Dudney (2004年12月8日). “Developer Testing Is 'In': An interview with Alberto Savoia and Kent Beck”. 2007年11月29日閲覧。
- ^ a b c d Duggal, Gaurav; Suri, Bharti (2008-03-29). “Understanding Regression Testing Techniques”. National Conference on Challenges and Opportunities. Mandi Gobindgarh, Punjab, India
- ^ a b c Yoo, S.; Harman, M. (2010). “Regression testing minimization, selection and prioritization: a survey”. Software Testing, Verification and Reliability 22 (2): 67–120. doi:10.1002/stvr.430.
- ^ Kolawa. “Regression Testing, Programmer to Programmer”. Wrox. 2020年12月21日閲覧。
- 回帰テストのページへのリンク