基本情報 令和元年度 秋期 問48:テクノロジ系に関する問題
テストで使用するスタブ又はドライバの説明のうち, 適切がものはどれか。
- a問49 単一の入り口をもち, 入力項目を用いた複数の判断を含むプログラムのテストケ
- bH へ
- cを設計する。 命令網羅と判定条件網羅の関係のうち, 適切なかものはどれか。
- d判定条件網羅を満足しても, 命令網羅を満足しない場合がある。 判定条件網羅を満足するならば, 命令網羅も満足する。 命令網羅を満足しなくても, 判定条件網羅を満足する場合がある。 命令網羅を満足するならば, 判定条件網羅も満足する。正答
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは d です(資料上のラベルに従う/命令網羅⊂判定条件網羅の関係性)。
判定条件網羅は「分岐の両側を通る」テスト方法。これを満たせば、自動的に「全部の命令を1回は通る」命令網羅も達成できます。
例:if文の真の枝と偽の枝の両方を試せば、両側の命令が全部実行される、という関係。
👉 覚え方:判定条件網羅は命令網羅より厳しい。厳しい方を満たせば緩い方も自動で満たせる。
ほかの選択肢:a 命令網羅で判定条件網羅は満たせない/b は逆方向/c は逆方向。包含関係を意識。
なぜこれが正解か
正解は d(資料上のラベル)。テストカバレッジ基準の包含関係は 命令網羅 ⊂ 判定条件網羅 ⊂ 複数条件網羅。
- 命令網羅(C0):全ての命令を1回以上実行(最も弱い)
- 判定条件網羅/分岐網羅(C1):全ての分岐(if文の真/偽)を1回以上通過
- 条件網羅(C2):各条件の真偽双方を1回以上評価
- 複数条件網羅:条件の組合せを網羅(最も強い)
判定条件網羅を達成すれば、各分岐の両側に命令があるため、自動的に命令網羅も満たされる。
各選択肢の解説(一般論)
- 「判定条件網羅を満たすなら命令網羅も満たす」が真の関係。
- 「命令網羅を満たしても判定条件網羅を満たさない」場合あり(else側の命令が空の場合等は例外)。
覚え方・ひっかけ注意
包含関係を1直線で覚える:
```
命令網羅 ⊆ 判定条件網羅 ⊆ 複数条件網羅
(≠ 条件網羅 → 独立)
```
注意:条件網羅と判定条件網羅は単純な包含関係ではない(独立)。MC/DC(修正条件判定網羅)は航空・原子力で必須の高位カバレッジ。
理論的背景
テストカバレッジ基準はソフトウェアテストの構造ベース技法で、コードがどの程度実行されたかを定量評価する。主要な階層:
1. C0:命令網羅(Statement Coverage):実行された命令の割合
2. C1:判定条件網羅(Branch Coverage / Decision Coverage):実行された分岐の割合
3. C2:条件網羅(Condition Coverage):各条件の真偽双方を評価
4. 判定条件/条件網羅:C1とC2を同時に達成
5. 複数条件網羅(Multiple Condition Coverage):条件の全組合せ網羅
6. MC/DC(Modified Condition/Decision Coverage):各条件が独立して判定結果に影響することを確認
7. パス網羅(Path Coverage):全実行パス網羅(理論的最強だが実用不可能)
詳細な包含関係
- 命令網羅 ⊆ 判定条件網羅(分岐を通れば命令を通る)
- 判定条件網羅 ⊆ 複数条件網羅(条件組合せ網羅は分岐網羅を含む)
- 条件網羅と判定条件網羅は独立(一方が他方を含意しない)
反例:`if (A && B)` で A=true,B=false と A=false,B=true をテストすると、条件網羅(各条件の真偽両方)は満たすが判定条件網羅は片方(偽)しか網羅しない。
MC/DC(航空・安全クリティカル系)
- DO-178C(航空ソフト規格)でLevel A/BのソフトウェアにMC/DC必須
- ISO 26262(自動車機能安全)でASIL DでMC/DC推奨
- IEC 61508(一般機能安全)の高SILレベル
短絡評価(短絡的論理和/論理積)の動作も考慮した網羅基準。
実務での使われ方
- カバレッジ計測ツール:JaCoCo(Java)、Istanbul(JS)、Coverage.py(Python)、gcov(C/C++)、Cobertura
- CI/CDゲート:カバレッジ80%以上を必須にしてマージ可否判定
- ミューテーションテスト:PIT、Stryker、Mutmut。テストの欠陥検出能力を評価
- カバレッジの罠:高カバレッジ≠高品質。アサーション無しの実行だけでもカバレッジは上がる
試験での位置づけ
基本情報・応用情報のソフトウェアテスト分野で頻出。応用情報・科目B、ソフトウェアテスト関連資格(JSTQB)で必須。航空・自動車・医療分野では認証要件として組込み。
選択肢の発展補足
ブラックボックステスト技法(同値分割、境界値分析、デシジョンテーブル、状態遷移、ペアワイズ)とホワイトボックステスト(本問のカバレッジ基準)の併用が現代のテスト戦略の基本。アジャイル/TDDでは赤・緑・リファクタリングサイクルで自然と高カバレッジを達成する。最近はプロパティベーステスト(QuickCheck、Hypothesis)、ファジングテスト(AFL、libFuzzer)、シンボリック実行(KLEE、Pex)といった次世代技法も応用情報で出題されつつある。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 令和元年度 秋期 問48/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。