テスト7原則について
はじめに
テストについて勉強しています。テストを行う上で原則があったことが発見だったのでまとめたいと思います。
原則1:テストは欠陥があることは示せるが、欠陥が無いことは示せない
テストにより、ソフトウェアに残る未検出欠陥の数を減らせるが、欠陥が見つからないとしても、正しさの証明にはならない。
原則2:全数テストは不可能である
全てをテストすること(入力と事前条件の全組み合わせ)は、ごく単純なソフトウェア以外では非現実的である。全数テストの代わりに、リスク分析、テスト技法、および優先度によりテストに欠ける労力を集中すべきである。
原則3:早期テストで時間とコスト節約
早い段階で結果を見つけるために、静的テスト活動と動的テスト活動の両方をソフトウェアテスト開発ライフサイクルのなるべく早い時期に開始すべきである。早期テストは、シフトレフトとも呼ばれる。ソフトウェア開発ライフサイクルの早い時期にテストを行うことより、コストを低減または削減することができる。
原則4:欠陥の偏在
リリース前のテストで見つかる欠陥や運用時の故障の大部分は、特定の少数モジュールに集中する。テストの労力を集中させるために、欠陥の偏在を予測し、テストや運用での実際の観察結果に基づいてリスク分析を行う。
原則5: 殺虫剤のパラドックスにご用心
同じテストを何度も繰り返すと、最終的にはそのテストでは新しい欠陥を見つけられなくなる。
この「殺虫剤のパラドックス」を回避するため、テストデータを定期的に見直して、改定したり新規にテストを作成する必要がある(殺虫剤を繰り返し使用すると効果が低減する)。ただし、自動化されたりリグレッションテストの場合は、同じテストを繰り返すことでリグレッションが低減しているという有益な結果を示すことができる。
原則6:テストは状況次第
状況が異なれば、テストの方法も変わる。例えば、安全性が重要な産業制御ソフトウェアのテストは、eコマースモバイルアプリケーションのテストとは異なる。また、アジャイルプロジェクトとシーケンシャルライフサイクルプロジェクトでは、テストの実行方法が異なる。
原則7: 「バグゼロ」の落とし穴
テスト担当者は可能なテスト全てを実行でき、可能性のある欠陥全てを検出できると期待する組織があるが、原則2と原則1により、これは不可能となる。また、大量の欠陥を検出して修正するだけでシステム、ユーザーのニーズや期待を満たさないシステム、またはその他の競合システムに比べて劣るシステムが構築されることがある。
まとめ
テスト7原則
・原則1:テストは欠陥があることは示せるが、欠陥が無いことは示せない。
・原則2:全数テストは不可能
・原則3:早期テストは不可能
・原則4: 欠陥の偏在
・原則5: 殺虫剤のパラドックスにご用心
・原則6:テストは状況次第
・原則7: 「バグゼロ」の落とし穴