第三章 黑盒测试参
(注意:答案仅供参考,若有误,请自行修改。)
1、某保险公司计算保险费率。
计算方式为10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下表所示。其中,年龄有效输入范围为1-100;抚养人数可输入“无”或1-9之间的整数。 使用等价类划分进行测试用例设计。 年龄 20~39 6点 40~59 4点 性别 其它 M F 已婚 婚姻 未婚 5点 抚养人数 1人扣0.5点 最多扣3点 2点 5点 3点 3点 参: (1) 通过对程序功能的分析,其等价类表如下所示: 输入条件 有效等价类 年龄 20~39岁 (1) 40~59岁 (2) 1~19岁或60~100岁 (3) ‘M’ (4) ‘F’ (5) 已婚 (6) 未婚 (7) 无效等价类 小于1岁 (11) 大于100岁 (12) 性别 婚姻 除‘M’和‘F’之外的其他字符(13) 除已婚和未婚之外的其他字符 (14) 除无和数字之外的其他字符 (15) 小于1 (16) 大于9 (17) 无 (8) 抚养人数 1~6人 (9) 6~9人 (10) (2) 设计测试用例表,覆盖等价类。 测试 用例 1 2 3 4 5 6 7 8 9 输入数据 年龄 27 50 70 0 102 30 30 30 30 性别 M F M M F T M M M 婚姻 已婚 未婚 已婚 已婚 未婚 已婚 离婚 已婚 已婚 抚养 人数 无 2 7 无 4 无 无 没有 -1 覆盖的等价类 1 4 6 8 2 5 7 9 3 4 6 10 11 4 6 8 12 5 7 9 1 13 6 8 1 4 14 8 1 4 6 15 1 4 6 16 0.6% 0.6% 0.1% 预期输出 保险费率 提示“年龄应在1~100之间” 提示“年龄应在1~100之间” 提示“性别应输入M或F” 提示“婚姻应为已婚或未婚” 提示“抚养人数应为无或1-9之间的整数” 提示“抚养人数应为无或1-9之间的整数” 10 30 M 已婚 20 1 4 6 17 提示“抚养人数应为无或1-9之间的整数” 2、NextDate函数。
该函数要求输入三个变量month、day和year,输出该日期之后一天的日期。其中year的取值范围为:1900-2079。如果输入的日期组合不合法,则显示“无效的输入日期”。
使用等价类划分进行测试用例设计。 参:
(1) 通过对程序功能的分析,其等价类表如下所示: 输入条件 有效等价类 无效等价类 Month 1≤month≤ 12 (1) Month<1 (11) Month>12 (12) day<1 (13) day>31 (14) year<1900 (15) year>2079 (16) Day year 1≤day≤31 (2) 1900≤year≤2079 (3) (2) 设计测试用例表,覆盖等价类。 测试 用例 1 2 3 4 5 6 7 输入数据 month 6 -1 14 6 6 6 6 day 20 20 20 -1 32 20 20 year 2008 2008 2008 2008 2008 1800 2080 覆盖的等价类 1 2 3 11 2 3 12 2 3 1 13 3 1 14 3 1 2 15 1 2 16 预期输出 2008-6-21 month超出范围 month超出范围 day超出范围 day超出范围 year超出范围 year超出范围 3、P62,习题7。 参略。
4、某软件的一个模块的需求规格说明书中描述:
(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。 (2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。 请绘制出因果图和判定表,并给出相应的测试用例。 参:
(1) 根据程序的规格说明,原因和结果如下: 原因:C1:年薪制员工。(1:是年薪制员工;0:非年薪制员工) C2:严重过失 C3:过失
结果:e1:扣年终风险金的4% e2:扣年终风险金的2% e3:扣当月薪资的8% e4:扣当月薪资的4% (2) 因果图:略 (3) 决策表:
规则 选项 C1:年薪制员工 条件 C2:严重过失 C3:过失 e1:扣年终风险金的4% e2:扣年终风险金的2% 结果 e3:扣当月薪资的8% e4:扣当月薪资的4% 不操作 不可能 (4) 用例表: 用例 TC1 TC2 TC3 TC4 输入数据 年薪制员工,严重过失 年薪制员工,过失 非年薪制员工,严重过失 非年薪制员工,过失 预期输出 扣年终风险金的4% 扣年终风险金的2% 扣当月薪资的8% 扣当月薪资的4% 1 1 1 1 √ 2 1 1 0 √ 3 1 0 1 √ 4 1 0 0 √ 5 0 1 1 √ 6 0 1 0 √ 7 0 0 1 √ 8 0 0 0 √ 5、有一个处理单价为1元5角钱的盒装饮料的自动售货机软件,若投入1元5角硬币,按下“可乐”、“雪碧”或“橙汁”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出相应的饮料同时退换5角硬币。
请绘制出因果图和判定表,并给出相应的测试用例。 参:
(1) 根据程序的规格说明,原因和结果如下: 原因:
C1——投入1元5角硬币 C2——投入2元硬币 C3——按下可乐按钮 C4——按下雪碧按钮 C5——按下橙汁按钮 结果:
E1——退还5角硬币 E2——送出可乐饮料 E3——送出雪碧饮料 E4——送出橙汁饮料 中间结点: 11——已投币 12——已按钮 (2)因果图:
(3)判定表:
选项 1-8 9-16 规则 C1 C2 条件 C3 C4 C5 E1 E2 结果 E3 E4 不可能 选规则 C1 C2 条件 C3 C4 C5 E1 E2 结果 E3 E4 不可能 项 25 0 1 0 0 0 √ 26 0 1 0 0 1 √ √ 27 0 1 0 1 0 √ √ 28 0 1 0 1 1 √ 29 0 1 1 0 0 √ √ 30 0 1 1 0 1 √ 31 0 1 1 1 0 √ 32 0 1 1 1 1 √ 0 0 — — — √ 1 1 — — — √ 17 1 0 0 0 0 √ 18 1 0 0 0 1 √ 19 1 0 0 1 0 √ 20 1 0 0 1 1 √ 21 1 0 1 0 0 √ 22 1 0 1 0 1 √ 23 1 0 1 1 0 √ 24 1 0 1 1 1 √
(4)测试用例表。略 6、P62,习题10。 参略。
6、PriorDate函数。该函数要求输入三个变量month、day和year,输出该日期之前一天的日期。使用判定表法进行测试用例设计。 参:
(1)根据函数的功能,划分以下等价类集合。
月: M1:={month | month=4,6,9,11月(30天)}
M2:={month | month=5,7,8,10,12月(31天)} M3:={month | month=3月(31天)} M4:={month | month=2月 }
M5:={month | month=1月(31天)}
日: D1:={Day | day=1} D2:={Day | day=2-28}
D3:={Day | day=29} D4:={Day | day=30}
D5:={Day | day=31}
年: Y1:={year | year是闰年} Y2:={year | year不是闰年} (2)根据以上等价类集合,建立的判定表为: C2:day在 C3:year在 动作: 不可能 Day - 1 Year – 1 Day=30 Day=31 Month=12 Day=29 Day=28 C1:month在 C2:day在 C3:year在 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 M5 M5 - - √ C1:month在 M1 M1 - - √ 1 M1 M2 M2 - - - √ 3 4 M3 M3 M3 Y1 Y2 - √ M4 M4 M4 M4 M4 - 7 - Y1 Y2 - √ √ 14 M5 D1 D2-D4 D5 D1 D2-D5 D1 D1 D2-D5 D1 D2 D3 D3 D4-D5 D1 D2-D5 √ 2 √ √ Month – 1 √ √ √ √ √ √ √ √ √ √ √ √ √ 合并后的判定表如下: 5,8,6 15 10 11 12 13 M1 M1 M1 M2 M2,M3 M3 M4 M4 M4 M4 M3,M5 D1 D2-D4 D5 D1 D2-D5 D1 D1 D2 D3 D3 D4-D5 D1 - - √ - - - √ Y1 Y2 - Y1 Y2 - √ √ - √ √ √ 动作: 不可能 Day - 1 √ √ √ Month – √ 1 Year – 1 Day=30 Day=31 Day=29 Day=28 √ √ √ √ √ Month=12 √ √ (2) 测试用例表
略
7、网上购物商场测试 略