阅读下列说明,回答下列问题。
【说明】
某航空公司进行促销活动,会员在指定日期范围内搭乘航班将获得定奖励,奖励分为4个档次,由乘机次数和点数共同决定,如表2-1所示。其中点数果票面价格和购票渠道有关,规则如表2-2所示。
表2-1促销奖励
| 乘机次数 | 点数 | 奖励档次 | 奖励 |
| ≥20次 | ≥200点 | 1 | 国内任意航段免票2张 |
| ≥15次 | ≥150点 | 2 | 国内任意航段免票1张 |
| ≥10次 | ≥100点 | 3 | 280元国内机票代金券2张 |
| ≥7次 | ≥70点 | 4 | 180元内机票代金券2张 |
表2-2点数累计规则
| 票面价 | 官网购票 | 手机客户端购票 |
| 每满100元 | 1点 | 1.2点 |
航空公司开发了一个程序来计算会员在该促销活动后的奖励,程序的输入包括会员在活动期间的乘机次数C、官网购票金额A (单位:元) 和手机客户端购票金额B (单位:元),程序的输出为本次活动奖励档次L。其中,C、A、B为非负整数,L为0~5之间的整数(0表示无奖励)。
采用等价类划分法对该程序进行测试(同时对输入输出进行等价类划分), 等价类表如表2-3所示,请补充表2-3中的空(1) ~ (4)。
表2-3等价类
| 输入/输出 | 有效等价类 | 编号 | 无效等价类 | 编号 |
| 乘机次数C | (1) | 1 | 非整数 | 9 |
| 负整数 | 10 | |||
| 官网购票金额A | 非负整数 | 2 | 非整数 | 11 |
| 负整数 | 12 | |||
| 手机客户端 购票金额B |
非负整数 | 3 | 非整数 | 13 |
| (4) | 14 | |||
| 奖励档次L | 1 | 4 | ||
| 2 | 5 | |||
| 3 | 6 | |||
| (2) | 7 | |||
| (3) | 8 |
(1)非负整数
(2)4
(3)0
(4)负整数
划分等价类的6条原则:
(1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类;
(2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类;
(3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类;
(4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类;
(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
(6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则再将该等价类进一步地划分为更小的等价类;
题干中明确:C、A、B为非负整数,结合乘机次数的无效等价了,A、B的有效等价类(1)处应该填写非负整数;
题干中明确:C、A、B为非负整数,L为0~5之间的整数(结合题干分析,应该是0~4之间整数),而且每一种是单独处理的,再结合问题【2】的测试用例表的测试编号1和4,所以,(2)(3)应该填写4、0;
题干中明确:C、A、B为非负整数,结合前面两个无效等价,(4)处应该填写负整数。
根据以上等价类表设计的测试用例如表2-4 所示,请补充表24中的空(1)~(9)。
表2-4测试用例
| 编号 | 输入 | 覆盖等价类(编号) | 预期输出L | ||
| C | A | B | |||
| 1 | 0 | 0 | 0 | [1] | [2] |
| 2 | [3] | 20000 | 0 | 1,2,3,4 | 1 |
| 3 | 15 | [4] | 0 | 1,2,3,5 | 2 |
| 4 | [5] | 10000 | 0 | 1,2,3,6 | 3 |
| 5 | 7 | [6] | 0 | [7] | 4 |
| 6 | [8] | 0 | 0 | 9,2,3 | N/A |
| 7 | -1 | 0 | 0 | 10,2,3 | [9] |
| 8 | 0 | A | 0 | 11,2,3 | N/A |
| 9 | 0 | -1 | 0 | 12,2,3 | N/A |
| 10 | 0 | 0 | A | 13,2,3 | N/A |
| 11 | 0 | 0 | -1 | 14,2,3 | N/A |
(1)1、2、3、8
(2)0
(3)20(大于等于20的等价答案)
(4)15000(大于等于15000的等价答案)
(5)10(大于等于10且小于15的等价答案)
(6)7000(大于等于15000的等价答案)
(7)1、2、3、7
(8)1.1(非整数的等价答案)
(9)N/A
测试编号1:依据题干含义,当C、A、B全为零的时候,应该输出为0,也就是覆盖1,2,3,8等有效等价类;
测试编号2:覆盖1、2、3、4等价类输出为1,且A为20000/100=200点,所以乘机次数应该大于等于20次;
测试编号3:覆盖1、2、3、5等价类输出为2,且乘机次数为15,所以点数应该为大于等于150点的数值,所A应该大于等于15000的数值;
测试编号4:覆盖1、2、3、6等价类输出为3,且A为10000/100=100点,所以乘机次数应该大于等于10且小于15;
测试编号5:C为7、B为0、预期输出为4,所以乘机点数应该大于等于70点,所以A应为大于等于7000的数值,覆盖 1、2、3、7等价类;
测试编号6:覆盖9、2、3,即C为非整数;
测试编号7:覆盖10、2、3,即应为无效输入,没有对应的输出 即N/A。
对于本案例的黑盒测试来说,以上测试方法有哪些不足?
1)无法体现出C、A/B之间的制约关系,比如当满足A/B(转换后对应的点数满足),但不满足C(乘机次数)的情况;
2)没有考虑手机端的情况,题干中B的数值都为0。
本题中由于存在多条件的制约情况,如输出1时,需要乘机次数C和点数A/B都符合特定的要求,无法很好的体现出条件之间的制约情况,比如点数符合对应档次要求,但乘机次数未达到要求的情况;另外测试时没有对手机端进行测试。