在网上看到了关于“找零钱最佳组合的测试用例”,以下是用例:
假设商店货品价格(R)皆不大於100元(且为整数),若顾客付款在100元内(P),求找给顾客之最少货币个(张)数?(货币面值50元(N50),10元(N10),5元(N5),1元(N1)四种)
正确功能:找零的组合为1/10/50面值组合的最小个(张)数
找零数额=P-R 假设计算正确
一、分析输入的情形。
R > 100
0 < R < = 100
R <= 0
P > 100
R<= P <= 100
P < R
1.R无效:R > 100 R<=0
2.R有效:0 < R < = 100
此种情况下再考虑P:
2_1. P无效:P > 100(钱给多)
2_2. P无效:P < R (钱给少)
2_3. P有效:R<= P <= 100 //无效输出:多找钱少找钱
二、分析输出情形。
N50 = 1
N50 = 0
4 > N10 >= 1
N10 = 0
N5 = 1
N5 = 0
4 > N1 >= 1
N1 = 0
考虑输出——找零个数
这里是有效数据,关于"找给顾客之最少货币个(张)数"的有效取值
50 0/1
10 0/1/2/3/4
1 0/1/2/3/4
三、分析规格中每一决策点之情形,以RR1, RR2, RR3表示计算要找50, 10, 5元货币数时之剩余金额。R > 100R <= 0
P > 100
P < R
RR1 >= 50
RR2 >= 10
RR3 >= 5
考虑输出——找零数额(RR表示找零数额)
无效输入(不找零):
R > 100
R <= 0
0 < R < = 100 P > 100
0 < R < = 100 P < R
输出为相应错误提示信息
有效输入(找零):
0 < R < = 100 R<= P <= 100
此时考虑的输出:(RR=P-R假设计算正确不考虑此种情况无效输出)
0<=RR<4
5<=RR<10
10<=RR<50
50<=RR<100
RR:0、1、4、5、9、10、49、50、99
五、为满足以上之各种情形,测试用例设计如下:
1.货品价格= 101
2.货品价格= 0
3.货品价格= -1
4.货品价格= 100,付款金额= 101
5.货品价格= 100,付款金额= 99
6.货品价格= 100,付款金额= 100 不找零
7.货品价格= 99,付款金额= 100 N1=1
8.货品价格= 96,付款金额= 100 N1=4
9.货品价格= 95,付款金额= 100 N5=1
10.货品价格= 91,付款金额= 100 N5=1, N1=4
11.货品价格= 90,付款金额= 100 N10=1
12.货品价格= 51,付款金额= 100 N10=4, N5=1,N1=4
13.货品价格= 50,付款金额= 100 N50=1
14.货品价格= 1,付款金额= 100 N50=1,N10=4,N5=1,N1=4