跳到正文

平成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

  • 错误ア

    把三边合计设为 80cm 这一点是错的。80 会归入「80 以内」这一行,所以既不对应 b 列(三边合计=100 以内),也不对应 c 列(同样是 100 以内)。实际上 b 的(A, 80, 10)是第2列、c 的(A, 80, 20)是第3列(即 a 所在的列)的测试数据,两列都向左错开了一格。边界值 80 应当读作属于「80 以内」一侧而不是「100 以内」,这是表2 的约定。

  • イ

    正解 正确答案是 イ。首先要确定 b 和 c 分别是表2 的哪一列。由图中的箭头可知,b 是第5列、c 是第6列,Yes 的标注方式为:b 是「地区=A / 三边合计=100 以内 / 重量=10 以内」,c 是「地区=A / 三边合计=100 以内 / 重量=20 以内」。这里重要的是,表2 中三边合计与重量的各行是互斥的区间划分。80cm 以下的包裹会归入「80 以内」这一行,所以能对应「100 以内」这一行的是 81〜100cm。同样,重量「5 以内」表示 1〜5kg,「10 以内」表示 6〜10kg,「20 以内」表示 11〜20kg。因此 b 的测试数据必须是 地区A、三边合计 81〜100cm、重量 6〜10kg,c 必须是 地区A、三边合计 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 是 三边合计→区分2、重量→区分2,适用区分2,地区A 为 1,600 日元;c 是 三边合计→区分2、重量→区分3,适用较大的区分3,为 2,000 日元。由此也可以确认,相邻的两列确实构成了验证不同区分的测试。

  • 错误ウ

    b 的重量 11kg 不属于「10 以内」而属于「20 以内」,所以这是 c 列而非 b 列的数据。而且 c 的 21kg 违反了需求 (1) 中「重量超过 20kg 的包裹不予受理」,本来就不存在于表2 的任何一列,是不予受理的数据。既把 b 向右错开了一列,c 又落在表格之外,属于双重错误。

  • 错误エ

    三边合计 100cm 属于「100 以内」这一点是对的,但重量的对应整体都往前错开了一行。b 的 5kg 属于「5 以内」这一行,所以是第4列;c 的 10kg 属于「10 以内」这一行,所以是第5列(即 b 所在的列)的数据。即使只把三边合计的条件对上,只要重量的区间与指定的行不一致,就不构成该列的测试。

ここがポイント
  • 判定表(输出结果表)的条件行要按互斥来读:「100 以内」不是 0〜100,而是指不落入上一行「80 以内」的 81〜100。同样,「10 以内」是 6〜10kg,「20 以内」是 11〜20kg。把测试数据与各列对应起来时,不弄错这种边界的切分是最大的要点——把 80、5、10 这样的边界值放进哪一行,会让列整整错开一格。
  • 尺寸区分采用由三边合计求得的区分与由重量求得的区分中较大的一方。另外,三边合计超过 140cm、重量超过 20kg 的包裹不予受理,所以像 21kg 这样的数据不对应表2 的任何一列。表2 是覆盖了 地区4种 × 三边合计3种 × 重量3种 = 36 种组合的预期值表,也是不看内部结构、只按输入与预期输出的对应关系来验证的黑盒测试的典型准备步骤。
用語
解答問92イ
练这一题

作答记录