戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

システムアーキテクト 2025年 午前207


問題文

プログラムPをテストケースの集合であるテストセットTでテストし、テスト結果が全て想定結果と一致することを確認した。そのテストセットTに不具合を検出できる十分な能力があるかどうかを評価するために、次の手順でテストを行った。このテストを何と呼ぶか。
〔手順〕 ① プログラムPのステートメントの1か所に、例えば(a+b>1)を(a+b>0)にするというような、軽微な変更を行ったプログラム, , ,...,を作成する。このm個のプログラムの変更内容は、全て異なっている。 ② テストセットTを用いて全てのプログラム, , ,...,をテストする。 ③ からまでのm個のプログラムのうち、プログラムPと異なるテスト結果となったプログラムの総数をNとし、次式によって、テストセットTの有効性の指標Eを算出する。

選択肢

探索的テスト
ドメイン分析テスト
ミューテーションテスト(正解)
ユースケーステスト

##: テストセットの有効性を評価する手順は何か【午前2 解説】

要点まとめ

  • 結論: 与えられた手順はミューテーションテストであり、テストセットTの不具合検出能力を変異体の検出率で定量的に評価します。
  • 根拠: プログラムのステートメントを小さく改変した複数の変異体()を作り、Tで異なる出力になった数Nからを算出する定義と一致します。
  • 差がつくポイント: ミューテーションテストは単なるカバレッジ測定でなく「故意に導入した欠陥」を検出できるかを評価するため、テストの厳密さを測る指標になります。

正解の理由

正解は (ミューテーションテスト)です。問題文の手順は「原プログラムの各所を小さく変更して複数の変異体を作成し、それらをテストセットで実行して検出できた変異体の割合を算出する」もので、ミューテーションテスト(mutation testing/変異テスト)の定義そのものです。算出式 は一般にミューテーションスコア(殺せた変異体の割合)を表します。

よくある誤解(2〜3 行)

  • ミューテーションテストは単にコードカバレッジを上げる手法ではなく、テストが実際に欠陥を検出できるかを評価する点が本質です。
  • 「軽微な変更=バグを入れる」と思いがちですが、同一の振る舞いを保つ等価変異体(equivalent mutant)も存在し処理が必要です。

解法ステップ(番号付きリスト)

  1. 問題文を読み、手順で行っていること(プログラムの小変更→複数の変異体作成)を整理する。
  2. テストセットで変異体を実行し「異なる出力になった割合」を求める点が何を意味するか考える。
  3. 選択肢と照らし合わせ、定義が一致するテスト手法を特定する(ミューテーションテストと一致)。
  4. 他選択肢(探索的、ドメイン分析、ユースケース)と比較して「故意に変異を導入して評価する」特徴が唯一該当することを確認する。

選択肢別の誤答解説

  • ア: 探索的テスト
    探索的テストはテスターの知見でテストを設計・実行する手法であり、プログラムを意図的に変更して割合を算出する手順とは異なります。
  • イ: ドメイン分析テスト
    ドメイン分析テスト(境界値や入力ドメインに基づく設計)は入力空間の代表値選びに関する手法で、変異体を作って評価する概念とは無関係です。
  • ウ: ミューテーションテスト(正解)
    変異体(mutants)を生成してテストがそれらを「殺せる(出力が異なる)」かを評価する手法で、問題文の手順と完全に一致します。
  • エ: ユースケーステスト
    ユースケーステストは利用者シナリオに基づく機能確認であり、ソースに小変更を加えて検出率を算出する性質は持ちません。

補足コラム(関連知識など)

  • ミューテーションテストの目的はテストスイートの「欠陥検出能力」を評価することであり、カバレッジ(行・分岐)だけでは見えない弱点を明らかにします。
  • ミューテーションスコアは一般に (殺せた変異体数÷生成変異体数)で表されます。ただし「等価変異体」はテストで検出不可能なため除外する必要があります。
  • 欠点としては変異体の数が膨大になり計算コストが高くなること、等価変異体の判定に手間がかかることが挙げられます。自動化ツールや代表的な変異演算子(置換・削除・比較演算子の変更等)を用いることで実用化されます。

FAQ(Q:/A: を 2〜3 組)

Q: ミューテーションテストはコードカバレッジと何が違いますか?
A: カバレッジはどれだけコードが実行されたかを測る指標で、ミューテーションテストはテストが実際に導入した欠陥を検出できるかを測るため目的と評価軸が異なります。
Q: 等価変異体とは何ですか?どう扱えばよいですか?
A: 等価変異体は変更しても元プログラムと振る舞いが同じためテストで検出できない変異体です。解析して除外するか、ツールや手動で判定・管理します。
Q: ミューテーションスコアが高ければテストは完璧ですか?
A: スコアが高いほど強力ですが、等価変異体の未除外や変異演算子の偏りで過大評価される場合があり、総合的に評価する必要があります。

関連キーワード: ミューテーションテスト、変異体、ミューテーションスコア、テスト設計、テストカバレッジ、等価変異体、単体テスト、変異演算子
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

システムアーキテクト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について