【問題】
【難易度】★★★★☆(やや難しい)
次の文章は,ソフトウェア開発におけるプログラムテスト方法に関する記述である。文中の\( \ \fbox{$\hskip3em\Rule{0pt}{0.8em}{0em}$} \ \)に当てはまる最も適切なものを解答群の中から選べ。
ソフトウェア開発には,いくつかのプロセスモデルがある。要求定義,設計,実装(プログラミング),テストなどの工程を上流工程から下流工程へ\( \ \fbox { (1) } \ \)に遂行していくウォーターフォールモデルにおいて,開発者のプログラムテストは,システムの最も小さな構成単位であるモジュールの単体テストから開始し,\( \ \fbox { (2) } \ \)テスト,システムテストへとボトムアップ的に行う。しかしこの進め方においては,最上流の要求定義に起因する欠陥が,最後のシステムテストの段階にならないと検出されないという構造的問題がある。この開発リスクを回避するために,現在では比較的短期間で分析や設計,評価を繰り返し行う反復的なプロセスモデルも用いられている。
テスト工程では,静的解析ツールを用いたプログラム構造解析も行われるが,実行による正しさを確認するためには,実際にソフトウェアを実行環境で動作させる必要がある。単体テストの場面では,プログラムの一部モジュールだけを実行可能なようにテスト環境を整えなければならないため,本来のプログラムに代わって,被テストモジュールを模擬的に呼び出す\( \ \fbox { (3) } \ \)や被テストモジュールから呼び出され模擬的な応答をするスタブを準備することが行われる。
テストを網羅的に行うためには,初めの段階ではプログラムの内部構造に基づいてテスト項目も選ぶ方法で行われる。その後,\( \ \fbox { (2) } \ \)テスト,システムテストと進み,対象のプログラム量が\( \ \fbox { (4) } \ \)に従って,内部構造には関知せずに,インタフェースの仕様からテスト項目を選ぶ\( \ \fbox { (5) } \ \)テストの比重が大きくなる。
〔問8の解答群〕
\[
\begin{eqnarray}
&(イ)& 試行錯誤的 &(ロ)& ホワイトボックス &(ハ)& カバレッジ \\[ 5pt ]
&(ニ)& ドライバ &(ホ)& 変化しなくなる &(ヘ)& ブラックボックス \\[ 5pt ]
&(ト)& スーパバイザ &(チ)& イニシャル &(リ)& 逐次的 \\[ 5pt ]
&(ヌ)& 受入れ &(ル)& 同時並行的 &(ヲ)& 大きくなる \\[ 5pt ]
&(ワ)& 小さくなる &(カ)& ブートローダ &(ヨ)& 結合
\end{eqnarray}
\]
【ワンポイント解説】
プログラム試験は電験のテキストではあまり掲載されておらず,情報伝送の資格の本には必ず掲載されている内容です。情報伝送の範囲は膨大であり出題されても選択問題なので,苦手な方は飛ばしても大丈夫だと思います。情報工学を専攻された方であれば本問は比較的点が取りやすい問題であると思います。
【用語の解説】
(イ)ホワイトボックス,(ヘ)ブラックボックス
ホワイトボックスがプログラムの中身のロジックが正しいかどうかを検証するテストです。一方,ブラックボックスは入出力のみを検証し,与えた入力に対して正しい出力がされるかを検証します。
(ハ)カバレッジ
全体に対してどの範囲をテストしたか(カバーしたか)を見る試験です。
(ニ)ドライバ
プログラムを動作させるために必要なソフトウェアのようなものです。例:プリンタを動作させるために必要なソフトウェアはプリンタドライバ。
(ト)スーパバイザ
コンピュータ用語でOSのことです。
(カ)ブートローダ
パソコン起動時(ブート)にOSをロードさせるプログラム(ローダ)です。
【解答】
(1)解答:リ
ウォーターフォールモデルは題意の通り,上流工程から下流工程へ逐次的に遂行していくものです。比較とされるのがスパイラルモデルで設計とプログラミングを反復して行うものです。
(2)解答:ヨ
単体テストは最小の部品単位(モジュール)で問題が発生していないかをテストするもので,結合テストはモジュールを組み合わせたユニットのテスト,システムテストはシステム全体が問題がないかをテストするものです。単体テストが良くても結合テストがダメということもあり,モジュールを再検討することもあります。
(3)解答:ニ
プログラムを動作させるために必要なものなので(ニ)ドライバとなります。
(4)解答:ヲ
(5)解答:ヘ
題意から,内部構造を関知しないのは(ヘ)ブラックボックスであり,プログラム量が増加すればするほど,ホワイトボックステストは非効率かつ困難になるので,ブラックボックステストの比重が大きくなります。