阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】某商场进行促销活动,消费满5000元后赠送总值10000元的代金券,可以在后续消费中使用。代金券包括300元20张、100元20张以及50元40张。其中300元和100元代金券只可用于线下消费抵扣,50元代金券只可用于线上商城消费抵扣。代金券使用规则为:线下购买品类1每满1200元可使用300元代金券1张,每满400可使用100元代金券1张;线下购买品类2每满600元可使用300元代金券1张,每满200元可使用100元代金券1张;线上购买品类1每满300元可使用50元代金券1张,品类2每满150元可使用50元代金券1张。活动规则详见表2-1。
商场开发了一个小程序来自动抵扣顾客代金券并计算最终所需实际支付金额,程序的输入包括300元代金券数量A,100元代金券数量B,50元代金券数量C,品类1消费金额D,品类2消费金额E,购买渠道F。程序的输出包括300元代金券剩余数量G,100元代金券剩余数量H,50元代金券剩余数量I,所需实际支付金额J。其中,A、B、G、H为整数且取值在0到20之间,C和I为整数且取值在0到40之间,D、E、J为非负整数,F为0或者1(0表示线下,1表示线上)。
【问题1】(6分)
采用等价类划分法对该程序进行测试,等价类表如表2-2所示,请补充表中空(1)~(6)。
【问题2】(7分)
根据以上等价类表设计的测试用例如表2-3所示,请补充表2-3中空(1)~(7)。
【问题3】(2分)
对于本案例采用的基于规格说明的测试来说,以上测试方法有哪些不足?
【问题1】
(1)大于等于0小于等于20的整数
(2)大于等于0小于等于40的整数
(3)非负整数
(4)1
(5)大于40的整数
(6)0和1之外的整数
【问题2】
(1)1,2,3,4,5,6
(2)0
(3)0
(4)1
(5)0
(6)A(任意非整数)
(7)41(大于40的任意整数)
【问题3】
没有考虑边界问题。
没有考虑输入数据之间的制约关系(如:D、E不可能同时为0)。
其他合理的解答。
【问题1】
等价类划分的原则:
在输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类(原则1)。
在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类(原则2)。
在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类(原则3)。
在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类(原则4)。
在规定了输入数据必须遵守的规则的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)(原则5)。
在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类(原则6)。
本题中,A、B为整数且值在0到20之间,C为整数且取值在0到40之间。
【问题2】
在基于等价类的测试用例设计时,对于有效等价类一次可以覆盖多个有效等价类。对于无效等价类一次只能覆盖一个。
编号1为有效等价类的覆盖(F覆盖0):1,2,3,4,5,6,预期输出:H为0,J为0.
编号2为有效等价类的覆盖(F覆盖1):1,2,3,4,5,7,预期输出:J为0
编号3为无效等价类的覆盖(A:非整数):所以(6)应为:任意非整数(如A,1.1等表达方式均可)
编号11为无效等价类的覆盖(C:大于40的整数):所以(7)应为:任意大于40的整数(如41、100等表达方式均可)
【问题3】
没有考虑边界,基于测试的经验,错误比较容易发生在边界上。
没有考虑输入、输出之间的制约关系。如消费品类D和E之间不存在同时为0的情况。
其他合理的解答等。