平成29年度 秋期 システムアーキテクト試験 午前Ⅱ 問9

ソフトウェアの潜在エラー数を推定する方法の一つにエラー埋込み法がある。100個のエラーを意図的に埋め込んだプログラムを,そのエラーの存在を知らない検査グループがテストして30個のエラーを発見した。そのうち20個は意図的に埋め込んでおいたものであった。この時点で,このプログラムの埋込みエラーを除く残存エラー数は幾つと推定できるか。

解答・解説

正解: ア. 40

エラー埋込み法は、テスト対象のプログラムに既知のエラー(埋込みエラー)を意図的に埋め込み、テストで発見された埋込みエラーの割合と、未知のエラー(真の潜在エラー)が発見される割合が等しいと仮定して、プログラム全体の潜在エラー数を推定する手法です。

計算の手順

  1. 発見された真のエラー数を求める
    テストで発見されたエラーの総数は 3030 個であり、そのうち意図的に埋め込んだエラーは 2020 個であるため、元からプログラムに存在していて発見された真のエラー数は次のようになります。
    30−20=10 個30 - 20 = 10\text{ 個}

  2. エラーの発見率を求める
    意図的に埋め込んだ 100100 個のエラーのうち 2020 個が発見されたため、エラーの発見率は次の通りです。
    20100=0.2 (20%)\frac{20}{100} = 0.2\text{ (20\%)}

  3. テスト前の真の潜在エラー総数を推定する
    真の潜在エラー総数を NN 個とすると、そのうち 20%20\% にあたる 1010 個が発見されたことになるため、次の比例式が成り立ちます。
    20100=10N\frac{20}{100} = \frac{10}{N}
    N=10×10020=50 個N = 10 \times \frac{100}{20} = 50\text{ 個}

  4. 残存エラー数を求める
    テスト前の真の潜在エラー総数が 5050 個と推定され、そのうち 1010 個が今回のテストですでに発見されているため、埋込みエラーを除く残存エラー数は次のようになります。
    50−10=40 個50 - 10 = 40\text{ 個}

したがって、正解はアです。

各選択肢の解説

  • ア(40):正解です。テスト前の真の潜在エラー数 5050 個から、すでに発見された真のエラー数 1010 個を引いた残存エラー数です。
  • イ(50):誤りです。これはテスト開始前に存在していたと推定される真の潜在エラーの総数であり、今回のテストで発見された 1010 個を差し引いていません。
  • ウ(70):誤りです。総エラー数を 100100 個と誤認し、発見された総エラー数 3030 個を引いた値(100−30=70100 - 30 = 70)です。
  • エ(150):誤りです。発見された総エラー数 3030 個をそのまま分子に用いて 30×10020=15030 \times \frac{100}{20} = 150 と計算した値であり、埋込みエラーを含んだテスト前の総エラー数になっています。

Spineチーム