本文へスキップ

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

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

問92
頻出度★★★

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

注 網掛けの部分は,表示していない。 表2の出力結果表のb,cで示すそれぞれの列のテストデータ(地区,3辺計,重量)の組合せとして,適切なものはどれか。

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

問 92

  • 不正解ア

    3辺計を 80cm にしている点が誤り。80 は「80まで」の行に該当してしまうので、b の列 (3辺計=100まで) にも c の列 (同じく 100まで) にも対応しない。実際には b の (A, 80, 10) は第2列、c の (A, 80, 20) は第3列 (=a の列) のテストデータであり、2列とも1段左にずれている。境界値 80 は「100まで」ではなく「80まで」側に属すると読むのが表2 の約束である。

  • イ

    正解 正解は イ。まず b と c が表2 のどの列かを押さえる。図の矢印より b は第5列、c は第6列で、Yes の付き方は b が「地区=A / 3辺計=100まで / 重量=10まで」、c が「地区=A / 3辺計=100まで / 重量=20まで」である。ここで大事なのは、表2 の3辺計や重量の行が互いに排他的な区分だという点。80cm 以下の荷物は「80まで」の行に入るので、「100まで」の行に該当するのは 81〜100cm。同じく重量は「5まで」が 1〜5kg、「10まで」が 6〜10kg、「20まで」が 11〜20kg を表す。したがって b のテストデータは 地区A・3辺計 81〜100cm・重量 6〜10kg、c は 地区A・3辺計 81〜100cm・重量 11〜20kg でなければならない。イ の b (A, 90, 10) は 90cm が 81〜100、10kg が 6〜10 に収まり第5列にぴったり該当する。c (A, 90, 11) も 90cm が 81〜100、11kg が 11〜20 なので第6列に該当する。念のため予想出力を確かめると、b は 3辺計→区分2・重量→区分2 で区分2 が適用され地区A の 1,600円、c は 3辺計→区分2・重量→区分3 で大きい方の区分3 が適用され 2,000円 となり、隣り合う2列がきちんと異なる区分を検証するテストになっていることも確認できる。

  • 不正解ウ

    b の重量 11kg は「10まで」ではなく「20まで」に該当するので、これは b ではなく c の列のデータである。さらに c の 21kg は要件 (1) の「重量が20kgを超える荷物は受け付けない」に反し、そもそも表2 のどの列にも存在しない受付不可のデータ。b を1つ右にずらしたうえ、c は表の枠外という二重の誤りになっている。

  • 不正解エ

    3辺計 100cm は「100まで」で正しいが、重量の対応がそろって1段ずつ手前になっている。b の 5kg は「5まで」の行なので第4列、c の 10kg は「10まで」の行なので第5列 (=b の列) のデータである。3辺計の条件だけを合わせても、重量の区分が指定の行と一致しなければその列のテストにはならない。

ここがポイント
  • 決定表 (出力結果表) の条件行は排他的に読む: 「100まで」は 0〜100 ではなく、上の行「80まで」に入らない 81〜100 を指す。同様に「10まで」は 6〜10kg、「20まで」は 11〜20kg。テストデータを列に対応づけるときは、この境界の切り分けを間違えないことが最大のポイントで、80 や 5 や 10 といった境界値をどちらの行に置くかで列が1つずれる。
  • サイズ区分は 3辺計から求めた区分と重量から求めた区分のうち大きい方を適用する。また 3辺計140cm超・重量20kg超は受付不可なので、21kg のようなデータは表2 のどの列にも該当しない。表2 は地区4通り × 3辺計3通り × 重量3通り = 36通りを網羅した期待値表であり、内部構造を見ずに入力と期待出力の対応で検証するブラックボックステストの典型的な準備手順である。
用語

解答の記録