SC情報処理安全確保支援士試験 午前Ⅰ

平成22年度秋期 情報処理安全確保支援士 午前Ⅰ 問15

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

プログラム実行中の特定の時点で成立する変数問の関係や条件を記述した論理式を埋め込んで、 そのプログラムの正当性を検証する手法はどれか。

選択肢

  1. ア
    アサーションチェック
  2. イ
    コード追跡
  3. ウ
    スナップショットダンプ
  4. エ
    テストカバレッジ分析
解き方のヒントを見る

「ここでは絶対に数値がプラスのはず!」という前提条件をコードに仕込み、もし違ったらその場でエラーにする(アサーション)

プログラムの品質を高める「アサーション(断言・表明)」についての問題だよ。プログラムの特定の場所に、「この時点では変数Xの値は必ず10以下であること」といった前提条件(論理式)をコードとして埋め込んでおくんだ。もしテスト実行中にその前提が破られたら、即座にプログラムを止めて知らせてくれるので、隠れたバグを初期段階で発見しやすくなるよ。

この問題で問われていること

テストの網羅率を見る「カバレッジ分析」や、処理ルートを記録する「トレース」と区別して、「プログラムの特定の箇所で満たされるべき前提条件を宣言し、実行時にそれが成立しているかをチェックする」アサーションの定義を選ぼう。

Assertion Checking

assertion checking embeds logical conditions in the program and verifies at runtime that they hold at specific points

embed condition\ncheck during execution\nvalidate program correctness

確認ポイント

  • プログラム中に条件式を埋め込む。
  • 特定時点の成立条件を確認する。
  • カバレッジ分析とは別物です。
正解と解説を見る

正解

ア

出典

問題文と解答は IPA 公開の過去問題冊子・解答例を基にしています。

選択肢ア(正解)

正解だよ。アサーションチェックは、プログラムの途中に「ここでは必ずこうなっているはず」という確認ポイントを置いて、実行中にその条件が守られているかを見る方法だよ。料理中に『この時点で火は止まっているはず』と指差し確認する感じだね。問題文の『変数間の条件を埋め込んで正当性を検証する』にぴったりだよ。

選択肢イ

不正解だよ。コード追跡は、プログラムを1行ずつたどって動きを確認する方法だよ。迷路で足跡を追いながら『次はこっちに進んだ』と見る感じだね。実行の流れを調べる方法であって、変数同士の条件式を埋め込んで自動チェックする方法ではないよ。

選択肢ウ

不正解だよ。スナップショットダンプは、ある瞬間のメモリやレジスタの状態を写真みたいにパシャッと記録するものだよ。部屋の散らかり具合を写真で残す感じで、状態確認には役立つけど、『この条件が成り立つはず』というルールをプログラムに埋め込んで検査する方法ではないよ。

選択肢エ

不正解だよ。テストカバレッジ分析は、テストでプログラムのどこまで通ったかを調べる方法だよ。地図で『この道は通った、この道はまだ』と塗りつぶす感じだね。テストの網羅度を見るもので、実行中に条件式を入れて正しさを確認するアサーションチェックとは別物だよ。

出典:独立行政法人 情報処理推進機構(IPA)平成22年度秋期 情報処理安全確保支援士試験 午前Ⅰ 問15(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針