二段階エディット法
二段階エディット法は、ソフトウェアテストの分野でバグの総数を推定する手法である。この方法は、2つの異なるテストを用いてバグを発見し、それぞれのテストの結果から全体のバグ数を推定する。
二段階エディット法の基本公式
この手法では、以下のパラメータを定義する:
- テストAで発見されたバグの数:$N_A$
- テストBで発見されたバグの数:$N_B$
- テストAとBで共通に発見されたバグの数:$N_{AB}$
これらの数値を用いて、推定される全体のバグ数$N$は次の公式で計算される:
$$N = \dfrac{N_A \times N_B}{N_{AB}}$$
考え方と導出過程
-
バグの発見確率:
- テストAがバグを発見する確率 $P_A$ は $\dfrac{N_A}{N}$ である。
- テストBがバグを発見する確率 $P_B$ は $\dfrac{N_B}{N}$ である。
-
テストの独立性:
- 二段階エディット法では、テストAとテストBが独立していると仮定する。この仮定は重要で、テストが独立でなければ、共通バグ発見確率 $P_{AB}$ が単純な確率の積とは異なる値を持つ。
- 独立したテストの場合、テストAとBが同じバグを発見する確率 $P_{AB}$ は $P_A$ と $P_B$ の積で表される:
$$P_{AB} = P_A \times P_B = \left(\dfrac{N_A}{N}\right) \times \left(\dfrac{N_B}{N}\right) = \dfrac{N_A \times N_B}{N^2}$$
-
全体のバグ数の推定:
- 上記の関係から、$N_{AB}$ は $N$ に対するバグの共通発見数として表される:
$$N_{AB} = \dfrac{N_A \times N_B}{N^2} \times N = \dfrac{N_A \times N_B}{N}$$ - これを $N$ について解くと、推定される全体のバグ数は以下のようになる:
$$N = \dfrac{N_A \times N_B}{N_{AB}}$$
- 上記の関係から、$N_{AB}$ は $N$ に対するバグの共通発見数として表される:
具体例
たとえば、テストAで20個のバグを、テストBで25個のバグを発見し、両テストで共通して発見されたバグが5個だった場合、全体のバグ数は以下のように計算される:
$$N = \dfrac{20 \times 25}{5} = 100$$
この例では、推定されるバグの総数は100個となる。