システムアーキテクト 2010年 午前2 問09
問題文
受注処理の入力データをチェックするプログラムを、実験計画法に基づいてテストする。直交表を用いてテストケースを作成する場合、テストケースのa~cの組合せとして、適切なものはどれか。


選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
直交表の水準割当【午前2解説】
正解の理由
直交表の各列をそれぞれ因子(a: 得意先コード、b: 商品コード、c: 受注数量)に対応させ、直交表の 0/1 を具体的な水準に対応づけると、直交表の4行は図にあるテストケース1〜4と一対一に一致します。直交表の第4行 (1,1,0) がテストケース4の a〜c に対応するため、a=存在する、b=存在する、c=数字以外の文字も含む、すなわち選択肢 エ が条件と一致します。
(対応づけを明示的に示すと)
- 直交表の列1 → 得意先コード(a)
- 列2 → 商品コード(b)
- 列3 → 受注数量(c)
- 0 の水準 = 「存在しない」(a,b)、c は「数字以外の文字も含む」
- 1 の水準 = 「存在する」(a,b)、c は「数字だけ」
この割当はテストケース1〜3の既知の記述と照合して決定できます。結果、直交表第4行 (1,1,0) によって test case 4 の a,b,c が上記のように確定し、選択肢 エ と一致します。
解法ステップ
- 因子の特定:テストの仕様から因子は a=得意先コード、b=商品コード、c=受注数量 と認定する。
- 直交表の行・列値を確認:与えられた直交表の各行は次の通り。
- 行1: (0,0,0)
- 行2: (0,1,1)
- 行3: (1,0,1)
- 行4: (1,1,0)
- 0/1 と各因子の水準を決める(既知のテストケースと突き合わせて決定):
- テストケース1 が a=存在しない、b=存在しない、c=数字以外 の組み合わせであることと行1=(0,0,0) を照合し、0 を a,b の「存在しない」、c の「数字以外」に対応づける。
- したがって 1 は a,b の「存在する」、c の「数字だけ」。
- 直交表の各行をテストケース1〜4へ対応させて確認:
- 行1 (0,0,0) → テストケース1(一致)
- 行2 (0,1,1) → テストケース2(一致)
- 行3 (1,0,1) → テストケース3(一致)
- 行4 (1,1,0) → テストケース4 → ここから a=存在する、b=存在する、c=数字以外 が導かれる。
- 選択肢と照合して、該当する組合せを選ぶ(該当は エ)。
選択肢別の誤答解説
(各選択肢の a,b,c を直交表から導かれる値と比較)
-
ア: a=存在しない、b=存在しない、c=数字だけ
- 直交表の行4 が求める a,b は「存在する」「存在する」であり、ア の a,b は両方とも不一致。よって誤り。
-
イ: a=存在しない、b=存在する、c=数字以外の文字も含む
- a が不一致(直交表行4では a=存在する)。したがって誤り。
-
ウ: a=存在する、b=存在しない、c=数字以外の文字も含む
- b が不一致(直交表行4では b=存在する)。したがって誤り。
-
エ: a=存在する、b=存在する、c=数字以外の文字も含む
- 直交表行4 (1,1,0) の割当と完全に一致するため正しい。
よくある誤解
- 0 と 1 の対応を勝手に逆にする
- 0/1 のどちらが「存在する」か「存在しない」かは任意に決められるが、必ず既知のテストケース(ここではテストケース1〜3)と突き合わせて一意に決める必要がある。突き合わせをせず逆にしてしまうと誤答になる。
- 列と因子の対応を取り違える
- どの直交表の列がどの因子を表すかは問題文(テストケースの列順)と照合して決める。列と因子を入れ替えると全行の解釈が変わるため注意。
- 行ごとの対応を確認しない
- 1行ずつ既知のテストケースと突き合わせて整合性を取らないと、誤った水準対応で進めてしまう。
補足コラム
- 直交表(ここでは 2水準因子3因子の L4 直交表)は、最少の実験(テスト)で各因子の主要な組合せを効率的に網羅するために用いられます。重要なのは「0/1 の割当(どちらを水準A、どちらを水準Bとするか)は任意だが、与えられた既知のケースと照合して一意に定める」ことです。
- 実務では、各水準の意味を明確にドキュメント化しておくこと(0=否定、1=肯定 など)は、テストの再現性とレビュー時の誤解防止に有効です。
FAQ
Q1. もしテストケースのどれとも直交表の行が一致しないときは?
A1. その場合は列の因子割当(どの列がどの因子か)か、0/1 の水準対応が誤っている可能性が高い。既知のテストケース(本文に明記されたもの)を使って再度対応づけを試みる。
A1. その場合は列の因子割当(どの列がどの因子か)か、0/1 の水準対応が誤っている可能性が高い。既知のテストケース(本文に明記されたもの)を使って再度対応づけを試みる。
Q2. 0/1 のどちらを「存在する」にするか決める基準は?
A2. 基準は特にない。重要なのは既知ケースと照合して整合性を取ること。通常は「0 = 基準(負の状態)、1 = 変化(肯定)」とする慣習が多いが問題文の既知データに合わせる。
A2. 基準は特にない。重要なのは既知ケースと照合して整合性を取ること。通常は「0 = 基準(負の状態)、1 = 変化(肯定)」とする慣習が多いが問題文の既知データに合わせる。
Q3. 因子数が増えたときの基本的な手順は?
A3. 手順は同じ:因子を列に割り当て、既知ケースと照合して各列の水準(0/1)を決め、直交表の各行を既知ケースへ順に対応させる。必要なら直交表の種類(L4, L8 など)を確認して因子数に対する適切な表を選択する。
A3. 手順は同じ:因子を列に割り当て、既知ケースと照合して各列の水準(0/1)を決め、直交表の各行を既知ケースへ順に対応させる。必要なら直交表の種類(L4, L8 など)を確認して因子数に対する適切な表を選択する。
関連キーワード: 直交表、実験計画法、因子水準、L4直交表、テスト設計

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

