本文へスキップ

平成22年度 秋期 ITパスポート試験 問89

この問題の解説と、これまでの解答の記録です。

問89
頻出度★★★

M さんは,総務課の N さんから宅配荷物の発送業務で利用する料金計算プログラム(以下,プログラムという)の作成を依頼された。そこで,N さんから聞いた料金計算の方法を基に次のように要件をまとめ,プログラムを作成した。 (1) 料金はサイズ区分と発送先の地区から表1の料金表で求める。サイズ区分は荷物の3辺計(荷物の縦,横,高さの長さの合計で1cm単位)と重量(1kg単位)を比較し,どちらか大きい方の区分を適用する。 なお,3辺計が140cm又は重量が20kgを超える荷物は受け付けない。 (2) 荷物の3辺計と重量,発送先の地区(A~D)を入力すると,料金を出力する。 表1 料金表(単位 円)

区分3辺計(cm)重量(kg)ABCD
180まで5まで1,3009501,1501,800
2100まで10まで1,6001,2001,4002,350
3140まで20まで2,0001,6001,8003,400

M さんは,プログラムを N さんに引き渡す前にテストを行うことにした。 テストに当たり,表2の出力結果表を作成し,これに基づいてテストデータを準備した。表2は,入力データが各列に示す Yes の組合せに該当する値であるときの正しい出力を,欄“予想出力”に記入したものである。 表2 出力結果表

123456…36
地区AYesYesYesYesYesYes…
B…
C…
D…Yes
3辺計(cm)80までYesYesYes…
100までYesYesYes…
140まで…Yes
重量(kg)5までYesYes…
10までYesYes…
20までYesYes…Yes
予想出力(円)a…
↑ b↑ c

注 網掛けの部分は,表示していない。 M さんがプログラムのテストに使うデータを準備するために表2の出力結果表を作成した理由として,適切なものはどれか。

出典 平成22年度 秋期 ITパスポート試験 問89
解説

問 89

  • 不正解ア

    「処理の間違いが起こりそうなケースを洗い出して」というのは、経験や勘で不具合が出そうな箇所を狙い撃ちする エラー推測 の考え方であり、怪しいケースだけを選ぶ手法である。しかし表2 は 36 通りを機械的に全部並べた表で、あやしい列とそうでない列の区別はどこにも無い。「洗い出して選ぶ」ではなく「全部並べる」表なので、表2 を作った理由の説明になっていない。

  • 不正解イ

    命令の実行順序を追跡して設計どおりの順序で実行されるかを見るのは、プログラムの内部構造 (コード) を根拠にする ホワイトボックステスト である。表2 に書かれているのは入力条件の組合せと期待される料金だけで、命令も処理の流れも一切現れない。表2 からは実行順序を追跡できないため、この表を作る理由にはならない。

  • 不正解ウ

    「発生頻度の高そうなケースを選んで」「少ないテストデータで効率的に」というのは、考えられるケースの一部に絞り込む話である。ところが表2 は 36 通りの列をすべて持ち、1件も間引いていない。そもそも表中に発生頻度を示す情報が無く、絞り込みの根拠が存在しない。網羅を目的とした表2 とは正反対の説明になっている。

  • エ

    正解 正解は エ。表2 が何をしている表かを読み解けば答えが決まる。入力条件は「地区」が A〜D の4通り、「3辺計」が 80まで・100まで・140まで の3通り、「重量」が 5まで・10まで・20まで の3通りで、組合せは 4 × 3 × 3 = 36 通り。表2 の列は 1 から 36 まで振られており、まさにこの 36 通りを1つ残らず並べたものである。各列には 地区・3辺計・重量 の各グループにちょうど1個ずつ Yes が立ち、その列が1つの入力パターンを表す (例: 列1 は 地区A・3辺計80まで・重量5まで)。さらに「予想出力」欄は、プログラムを実行して得た結果ではなく、要件である表1 の料金表から先に求めておいた正しい出力である。つまり M さんは、要件から考えられる入力の組合せを漏れなく洗い出し、それぞれの期待値をテスト前に確定させたうえでテストデータを準備している。プログラムの中身 (命令や分岐) は一切見ず、入力と出力の対応だけで正しさを確かめるやり方で、狙いは「すべてのケースを漏れなくテストすること」。これを述べた エ が適切である。

ここがポイント
  • 出力結果表 (決定表・デシジョンテーブルの考え方) を使ったテスト設計とは、要件から入力条件の組合せを全列挙し、各組合せの期待値を要件側から先に確定させてからテストすること。組合せの総数は各条件の選択肢数の積で求まる (本問は 地区4 × 3辺計3 × 重量3 = 36 通り)。
  • テスト技法の区別: 入力と出力の対応だけを見て内部構造を問わないのが ブラックボックステスト (表2 はこちら)、命令や分岐の実行経路を追うのが ホワイトボックステスト。またエラー推測や発生頻度による絞り込みは、ケースを「選別」する手法であって「網羅」する手法ではない。
用語

解答の記録