Skip to content

5.3 欠陥の再発を軽減する

欠陥の再発を防ぐためのアプローチ

Section titled “欠陥の再発を防ぐためのアプローチ”

テストアナリスト(TA)は、ソフトウェアに同じような欠陥が再び発生するのを最小限に抑えるために、プロアクティブ(予防的)に貢献することができます。シラバスでは、欠陥の再発を軽減するための2つの主要なアプローチを解説しています。

  1. テスト結果を分析して、欠陥検出のプロセス自体を改善する。
  2. 欠陥を分類し、根本原因分析(RCA)をサポートする。

5.3.1 テスト結果の分析による欠陥検出の改善

Section titled “5.3.1 テスト結果の分析による欠陥検出の改善”

テスト結果は、単に「テストが失敗した」という事実を伝えるだけでなく、今後のテストの欠陥検出能力を向上させるための有益なフィードバックをTAに提供します。以下は、TAがテスト結果を分析して改善に繋げるための一般的な手法です。

予測した欠陥クラスターと実際の欠陥クラスターの分析

Section titled “「予測した欠陥クラスターと実際の欠陥クラスターの分析」”

ソフトウェアの欠陥は、特定の少数のコンポーネントに集中する傾向(クラスター)があります。テスト終了後、TAは予測していたクラスターと、実際に欠陥が集中した領域を比較します。もし想定よりも多くの欠陥が見つかった領域があれば、そこにはより厳密なテストを適用する必要があります。この判断においては、単なる欠陥の数だけでなく、欠陥の「深刻度(シビアリティ)」が重要な役割を果たします。

欠陥検出率 (DDP: Defect Detection Percentage) の分析

Section titled “「欠陥検出率 (DDP: Defect Detection Percentage) の分析」”

DDPは、特定のテストレベルにおけるテストの有効性を示す非常に重要な指標です。DDPが低いということは、市場や次フェーズに流出した欠陥(エスケープ欠陥)の割合が高いことを意味し、テストが効果的でなかったことを示します。TAはこの原因を分析し、テストをより焦点の絞った厳密なものに改善するための対策を提案します。

ステートメントカバレッジやブランチカバレッジなど、テストがテスト対象のどの領域を実行したか(または実行していないか)を評価します。カバレッジが低い領域を特定し、その領域の「リスクレベル」を考慮した上でテストを追加することで、これまで見逃されていた新たな欠陥を発見できるようになります。

長期間変更されていない古いコードの低いカバレッジを追い求めるのではなく、最近変更されたばかりのコードがどの程度テストされたかを評価します。これにより、まったくテストされていない「エラーになりやすい新たな変更箇所」に、集中的にテストの労力を向けることができます。

プロジェクトの進行に伴って発見される欠陥数の推移を、レイリーモデルなどの理論的な分布パターンと比較します。例えば、パターンの予測では欠陥発見数が増加し始めるはずの時期に、実際の検出数が低いまま横ばいである場合、「既存のテストが弱すぎて、見つけるべき欠陥を見つけられていないのではないか」と推測し、テストを強化する契機とすることができます 。

注意点:テスト結果と欠陥の「多対多」の関係 分析指標を計算する際、「失敗したテストの数」=「検出した欠陥の数」とは限らないことに注意が必要です。複数のテストが同じ1つの欠陥で失敗することもあれば、1つのテストが複数の欠陥を検出することもあります。正確な欠陥数を把握するには、デバッグプロセスや不具合レポートを慎重に分析する必要があります。


5.3.2 欠陥分類による根本原因分析(RCA)のサポート

Section titled “5.3.2 欠陥分類による根本原因分析(RCA)のサポート”

根本原因分析(RCA: Root Cause Analysis)は、表面的な「症状」を修正するだけでなく、欠陥を引き起こした「根本的な原因」を特定・対処し、再発を防ぐための構造化されたアプローチです。

しかし、発見されたすべての欠陥に対して個別にRCAを実施するのは、非常に非効率で時間がかかります。そこで、まず「欠陥の分類 (Defect Classification)」を行い、特定の欠陥タイプごとにRCAを実施するというアプローチがとられます。

欠陥分類は、定量的な「欠陥の統計データ」と、定性的な「RCA」の間のギャップを埋める役割を果たします。SDLC全体を通じて統一された基準で欠陥を分類することで、開発プロセスのどの段階でどのようなエラーが頻発しているかというインサイトが得られ、プロセス改善の強力な武器となります。

TAは、組織における欠陥分類の標準化をサポートすべきです。これにより、開発者や組織間のコミュニケーションが向上し、RCAが円滑に進むようになります。

シラバスでは、以下のようないくつかの分類手法が例示されています。

  • 直交欠陥分類 (ODC: Orthogonal Defect Classification): 欠陥の報告時と修正時の両方において、互いに排他的(重複しない)属性に分類する手法です。
  • IEEE 1044: ソフトウェアの異常(アノマリ)を分類するための、コアとなる属性セットを提供する標準規格です。
  • 深刻度ベースの分類: クリティカル、メジャー、マイナー、トリビアル(軽微)などの「深刻度(シビアリティ)」に基づいて分類します。
  • 欠陥分類法(タクソノミ)モデル: BeizerやCatolinoらによって提唱された分類モデルを利用します。
  • 品質モデルへのマッピング: ISO/IEC 25010やFURPSモデルといったソフトウェア品質モデルの特性(セキュリティ、性能、移植性など)に基づいて欠陥をマッピングします。