51Testing软件测试论坛

标题: 关于找零钱最佳组合--边界分析法的测试用例的疑问 [打印本页]

作者: liyun100    时间: 2007-2-1 13:57
标题: 关于找零钱最佳组合--边界分析法的测试用例的疑问
在网上看到了关于“找零钱最佳组合的测试用例”,以下是用例:
假 设 商 店 货 品 价 格 (R) 皆 不 大 於 100 元 ( 且 为 整 数 ) , 若 顾 客 付 款 在 100 元 内 (P) , 求 找 给 顾 客 之 最 少 货币 个(张) 数 ? ( 货 币 面 值 50 元 (N50) , 10 元 (N10) , 5 元 (N5) , 1 元 (N1) 四 种 )
一、 分 析 输 入 的 情 形 。

R > 100

0 < R < = 100

R <= 0

P > 100

R<= P <= 100

P < R

二、 分 析 输 出 情 形 。

N50 = 1

N50 = 0

4 > N10 >= 1

N10 = 0

N5 = 1

N5 = 0

4 > N1 >= 1

N1 = 0

三、 分 析 规 格 中 每 一 决 策 点 之 情 形 , 以 RR1, RR2, RR3 表 示 计 算 要 找 50, 10, 5 元 货 币 数 时 之 剩 余 金 额 。 R > 100R <= 0
P > 100
P < R
RR1 >= 50
RR2 >= 10
RR3 >= 5

四、 由 上 述 之 输 入 / 输 出 条 件 组 合 出 可 能 的 情 形 。

R > 100

R <= 0

0 < R <= 100, P > 100
0 < R <= 100, P < R
0 < R <= 100, R <= P <= 100, RR = 50
0 < R <= 100, R <= P <= 100, RR = 49
0 < R <= 100, R <= P <= 100, RR = 10
0 < R <= 100, R <= P <= 100, RR = 9
0 < R <= 100, R <= P <= 100, RR = 5
0 < R <= 100, R <= P <= 100, RR = 4
0 < R <= 100, R <= P <= 100, RR = 1
0 < R <= 100, R <= P <= 100, RR = 0

五、 为 满 足 以 上 之 各 种 情 形 , 测 试 资 料 设 计 如 下 :

1. 货品价格 = 101

2. 货品价格 = 0

3.货品价格 = -1

4. 货品价格 = 100, 付款金额 = 101

5. 货品价格 = 100, 付款金额 = 99

6. 货品价格 = 50, 付款金额 = 100

7. 货品价格 = 51, 付款金额 = 100

8. 货品价格 = 90, 付款金额 = 100

9. 货品价格 = 91, 付款金额 = 100

10. 货品价格 = 95, 付款金额 = 100

11. 货品价格 = 96, 付款金额 = 100

12. 货品价格 = 99, 付款金额 = 100

13. 货品价格 = 100, 付款金额 = 100


问题1:关于此测试用例自己总是看不太明白,这个是针对于输入值进行的分析,还是对输出值进行的等价类划分,为什么取值没有体现输入条件的边界值呢,好像是以输出条件为边界值进行分析的吧?
问题2:如果针对输出条件进行的等价类划分,应该如何考虑输入条件?
作者: 鱼鳞    时间: 2007-2-26 15:37
http://www.51testing.com/html/5/1042.html
不知此文是否能解答第一个问题
作者: liuyih    时间: 2007-2-26 17:04
看着挺晕的。
作者: ppent    时间: 2007-2-26 17:10
鱼鳞提供的链接中其实已经说明了这个用例的设计思路,即选择测试用例的原则。
一、如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据;
二、如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1格、比最小个数少1个的数做为测试数据;
三、根据规格说明的每一个输出条件,使用规则一;
四、根据规格说明的每一个输出条件,使用规则二;
五、如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试用例;
六、如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例;
七、分析规格说明,找出其他可能的边界条件

我尝试来解释用例设计思路,不对的请大家指正。
1、先对输入条件R、P在取值的有效性上(值的范围)进行考虑
2、通过对输出情况的分析,进一步细化输入条件需满足的范围。即当满足了怎样的输入时才有怎样的输出。这里的分析包括了对剩余金额和找回面额的分析,即N50、N10、N5、N1、RR等
3、由以上分析得出输入输出组合,并转化为具体的测试数据

但我个人对用例存在一些疑问:
1、第三步中,R > 100,R <= 0 ,P > 100 ,P < R怎么理解?
我觉得应该是0<R<100,P>R时才能出现RR1 >= 50,RR2 >= 10,RR3 >= 5的情况啊?
2、第四步的用例是否不够完整,我觉得应该加上 0 < R <= 100, R <= P <= 100, RR = 99的情况会比较全面些(只是拍脑袋的想法)。
3、关于这个例子上,用因果图分析是否更合适一些?
作者: 鱼鳞    时间: 2007-2-27 08:38
这样一想,再加上对这些分析方法本来就学得不通透,晕了sdlkfj5
作者: 不开窍的大饼    时间: 2007-3-31 19:25
我觉得这道题等价类划分不是太完善

等价类+边界值结合的方法 这样效果好

我试着对等价类划分作补充

在网上看到了关于“找零钱最佳组合的测试用例”,以下是用例:
假 设 商 店 货 品 价 格 (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
作者: 不开窍的大饼    时间: 2007-3-31 19:27
这样再结合边界值的方法 就比较清晰了
作者: 不开窍的大饼    时间: 2007-3-31 20:31
如果要考虑输入值的边界 是不是测试程序的健壮性?
作者: 不开窍的大饼    时间: 2007-4-5 22:43
标题: 哦 再补充一下
看到书上说:

健壮性测试是检查超过极限情况时系统的情况

还有:

多数情况下 是从输入域划分等价类的;但也可以从被测程序的输出域进行划分

我们这道题就是输出域划分

无效情况;还可以从输入域补充
作者: tiger12310    时间: 2007-4-6 13:45
sdlkfj4 同意楼上的观点

楼上分析的很不错啊

sdlkfj4
作者: 不开窍的大饼    时间: 2007-4-6 16:56
原帖由 tiger12310 于 2007-4-6 13:45 发表
sdlkfj4 同意楼上的观点

楼上分析的很不错啊

sdlkfj4

谢谢鼓励:)
作者: handle    时间: 2007-4-7 22:19
看晕了,太高深了
作者: liyun100    时间: 2007-4-16 15:46
序号

原因(商品价格及付款金额)

中间步(需找零的金额)

序号

结果(最少找零的币数)

C1
C2
C3
C4
C5
C6
R>100(无效等价)
R<=0(无效等价)
0<R<=100(有效等价)
P>100(无效等价)
P<R(无效等价)
R<=P<=100(有效等价)
100=>M1>=50
49=>M2>=10
9=>M3>=5
4=>M4>=0
E1
E2
E3
E4
E5
E6
E7
E8
E9
N50=1
N50=0
1<=N10<=4
N10=0
N5=1
N5=0
1<=N1<=4
N1=0
不可能

根据上图进行测试用例的划分:
1、C1C2为无效等价类,分别单独作为两个测试用例。
R>100
R<=0
2、C3分别与C4C5组合,作为另两个无效等价类测试用例。
0<R<=100P>100
0<R<=100P<R
3、C3C6组合,针对余额采用边界值的划分方法进行有效等价类划分。
M1=99
M1=50
M2=49
M2=10
M3=9
M3=5
M4=4
M4=1
当M4=0时




[ 本帖最后由 liyun100 于 2007-4-17 07:09 编辑 ]
作者: yinmei1983    时间: 2007-11-13 12:55
原帖由 liyun100 于 2007-2-1 13:57 发表
在网上看到了关于“找零钱最佳组合的测试用例”,以下是用例:
假 设 商 店 货 品 价 格 (R) 皆 不 大 於 100 元 ( 且 为 整 数 ) , 若 顾 客 付 款 在 100 元 内 (P) , 求 找 给 顾 客 之 最 少 货币 个(张) ... 二、 分 析 输 出 情 形 。

N50 = 1

N50 = 0


4 > N10 >= 1


N10 = 0


N5 = 1


N5 = 0


4 > N1 >= 1


N1 = 0

为什么N10不能等于4,N1不能等于4呢,比如,我现在要找40元,不是N10就恰好等于4么?
作者: linjuan60    时间: 2007-11-26 18:12
看得有点晕。。。
作者: jieslie    时间: 2009-6-27 20:23
找零数额=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   //无效输出: 多找钱 少找钱
二、 分 析 输 出 情 形 。
考虑输出——找零个数
这里是有效数据,关于" 找 给 顾 客 之 最 少 货币 个(张) 数"的有效取值
50:0/1
10:0/1/2/3/4
5 :0/1
1 :0/1/2/3/4

三、 分 析 规 格 中 每 一 决 策 点 之 情 形
考虑输出——找零数额(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
作者: 52softtesting    时间: 2010-3-24 23:19

做成表格了,应该好懂些。希望有所帮助。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2