第三章黑盒测试参考答案(注意:答案仅供参考,若有误,请自行修改。)1、某保险公司计算保险费率。计算方式为10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下表所示。其中,年龄有效输入范围为1-100;抚养人数可输入“无”或1-9之间的整数。使用等价类划分进行测试用例设计。年龄性别婚姻抚养人数20~3940~59其它MF已婚未婚1人扣0.5点最多扣3点6点4点2点5点3点3点5点参考答案:(1)通过对程序功能的分析,其等价类表如下所示:输入条件有效等价类无效等价类年龄20~39岁(1)40~59岁(2)1~19岁或60~100岁(3)小于1岁(11)大于100岁(12)性别‘M’(4)‘F’(5)除‘M’和‘F’之外的其他字符(13)婚姻已婚(6)未婚(7)除已婚和未婚之外的其他字符(14)抚养人数无(8)1~6人(9)6~9人(10)除无和数字之外的其他字符(15)小于1(16)大于9(17)(2)设计测试用例表,覆盖等价类。测试用例输入数据覆盖的等价类预期输出保险费率年龄性别婚姻抚养人数127M已婚无14680.6%250F未婚225790.6%370M已婚7346100.1%40M已婚无11468提示“年龄应在1~100之间”5102F未婚412579提示“年龄应在1~100之间”630T已婚无11368提示“性别应输入M或F”730M离婚无14148提示“婚姻应为已婚或未婚”830M已婚没有14615提示“抚养人数应为无或1-9之间的整数”930M已婚-114616提示“抚养人数应为无或1-9之间的整数”1030M已婚2014617提示“抚养人数应为无或1-9之间的整数”2、NextDate函数。该函数要求输入三个变量month、day和year,输出该日期之后一天的日期。其中year的取值范围为:1900-2079。如果输入的日期组合不合法,则显示“无效的输入日期”。使用等价类划分进行测试用例设计。参考答案:(1)通过对程序功能的分析,其等价类表如下所示:输入条件有效等价类无效等价类Month1≤month≤12(1)Month1(11)Month12(12)Day1≤day≤31(2)day1(13)day31(14)year1900≤year≤2079(3)year1900(15)year2079(16)(2)设计测试用例表,覆盖等价类。测试用例输入数据覆盖的等价类预期输出monthdayyear162020081232008-6-212-12020081123month超出范围3142020081223month超出范围46-120081133day超出范围563220081143day超出范围662018001215year超出范围762020801216year超出范围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)决策表:规则选项12345678条件C1:年薪制员工11110000C2:严重过失11001100C3:过失10101010结果e1:扣年终风险金的4%√e2:扣年终风险金的2%√e3:扣当月薪资的8%√e4:扣当月薪资的4%√不操作√√不可能√√(4)用例表:用例输入数据预期输出TC1年薪制员工,严重过失扣年终风险金的4%TC2年薪制员工,过失扣年终风险金的2%TC3非年薪制员工,严重过失扣当月薪资的8%TC4非年薪制员工,过失扣当月薪资的4%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-89-161718192021222324条件C10111111111C20100000000C3——00001111C4——00110011C5——01010101结果E1E2√E3√E4√不可能√√√√√√√选项规则2526272829303132条件C100000000C211111111C300001111C400110011C501010101结果E1√√E2√√E3E4√√不可能√√√√√(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)根据以上等价类集合,建立的判定表为:123456789101112131415C1:month在M1M1M1M2M2M3M3M3M4M4M4M4M4M5M5C2:day在D1D2-D4D5D1D2-D5D1D1D2-D5D1D2D3D3D4-D5D1D2-D5C3:year在-----Y1Y2---Y1Y2---动作:不可能√√√Day-1√√√√√√Month–1√√√√√Year–1√Day=30√Day=31√√√Month=12√Day=29√Day=28√合并后的判定表如下:12345,8,15671011121314C1:month在M1M1M1M2M2,M3,M5M3M3M4M4M4M4M5C2:day在D1D2-D4D5D1D2-D5D1D1D2D3D3D4-D5D1C3:year在-----Y1Y2-Y1Y2--动作:不可能√√√Day-1√√√√Month–1√√√√Year–1√Day=30√Day=31√√Month=12√Day=29√Day=28√(2)测试用例表略7、网上购物商场测试略