マナビング基本情報技術者

静的解析ツールは何を手掛かりに見分ける?

基本情報技術者試験 平成31年度春期 午前 問48 / システム開発技術 › ソフトウェア構築

過去問にチャレンジ

平成31年度春期 午前 問48

ソフトウェアのテストツールの説明のうち,静的テストを支援する静的解析ツールのものはどれか。

  1. ア

    指定された条件のテストデータや,プログラムの入力ファイルを自動的に生成する。

  2. イ

    テストの実行結果を基に,命令の網羅率や分岐の網羅率を自動的に計測し,分析する。

  3. ウ

    プログラム中に文法上の誤りや論理的な誤りなどがあるかどうかを,ソースコードを分析して調べる。

  4. エ

    モジュールの呼出し回数や実行時間,実行文の実行回数などの,プログラム実行時の動作特性に関するデータを計測する。

会話形式の解説

講師講師
静的解析ツールを見分けるには、プログラムを実行せずにソースコードを調べているかに注目します。
受験者受験者
テストに使うツールが並んでいるので、何を調べているかを分けて考えるのですね。
講師講師
はい。条件に合うテストデータや入力ファイルを作る機能は、何をしていますか。
受験者受験者
テストの準備です。コード中の誤りを分析しているわけではありません。
講師講師
その通りです。では、命令や分岐の網羅率、つまりどれだけ実行されたかの割合を測るには、何が必要ですか。
受験者受験者
テストを実行した結果が必要です。実行せずに調べる静的解析とは違います。
講師講師
呼出し回数や実行時間を測る説明も同様です。動作中の特性を測るので、プロファイラが扱う内容です。
受験者受験者
すると、ソースコードを分析して文法上や論理上の誤りを調べる説明が当てはまりますか。
講師講師
はい。プログラムを実行せずにコードを調べるため、静的解析ツールの説明です。
受験者受験者
テストに関係するかだけで選ばず、コードの分析か、準備や実行結果の測定かを確認します。
講師講師
その見方で整理できます。特に網羅率や実行時間は、プログラムを動かした結果を使う点が手掛かりです。

まとめ

静的解析ツールは、プログラムを実行せずにソースコードを分析し、文法上や論理上の誤りを調べます。テストデータの生成はテストの準備であり、コード中の誤りの分析ではありません。命令や分岐の網羅率、呼出し回数や実行時間の測定には、プログラムを動かした結果を用います。

解答・解説

正解はウです

この問題のテーマ

静的解析ツールが行う処理を、テストデータの生成やプログラム実行時の測定と区別する問題です。

解き方の考え方

静的解析は、プログラムを実行せずにソースコードを調べます。各選択肢について、コードを調べているのか、テストの準備や実行結果の測定をしているのかを見分けます。

選択肢ごとの解説

  1. ×ア  指定された条件のテストデータや,プログラムの入力ファイルを自動的に生成する。
    条件に合うテストデータや入力ファイルを作る説明です。テストの準備をする機能であり、ソースコードを分析して誤りを調べる静的解析には当たりません。
  2. ×イ  テストの実行結果を基に,命令の網羅率や分岐の網羅率を自動的に計測し,分析する。
    命令や分岐がどれだけ実行されたかを、テストの実行結果から測る説明です。実際に動かした結果を用いるため、静的解析ではありません。
  3. ○ウ  プログラム中に文法上の誤りや論理的な誤りなどがあるかどうかを,ソースコードを分析して調べる。
    ソースコードを分析し、文法上や論理上の誤りを調べる説明です。プログラムを実行せずにコードを調べるので、静的解析ツールに該当します。
  4. ×エ  モジュールの呼出し回数や実行時間,実行文の実行回数などの,プログラム実行時の動作特性に関するデータを計測する。
    呼出し回数や実行時間など、動かしているプログラムの特性を測る説明です。こうした測定にはプログラムの実行が必要であり、プロファイラが扱う内容です。

POINT

  • 静的解析は、プログラムを実行せずにソースコードを調べます。
  • テストデータの生成は、コード中の誤りを分析する処理とは異なります。
  • 網羅率や実行時間の測定は、プログラムを動かした結果を用います。

※出典:平成31年度春期 基本情報技術者試験 午前 問48