51Testing软件测试论坛

标题: 菜鸟问一个关于测试用例设计方法的问题 [打印本页]

作者: bdjy925    时间: 2010-1-28 16:59
标题: 菜鸟问一个关于测试用例设计方法的问题
我一直对输出域分析法设计测试用例不太理解,就像老师上课的一题“找零钱最佳组合”的练习题,总是一知半解,哪位高手能帮我解答一下啊,谢谢啦!!!!
具体题目如下:
假设商店货品价格(Price)皆不大于100元(且为整数),若顾客付款在100元内(Pay),求找给顾客之最少货币个(张)数?(货币面值50元(N50),10元(N10),5元(N5),1元(N1)四种)
作者: 无_花_果    时间: 2010-1-29 12:56
商品价格:0<price <=100
顾客付款:0<=pay<=100
1、货币张数为0的情况 (边界值法)
a、pay=0 时(即顾客没有买任何东西)
b、price=pay=100、50、10、5、1
。。。。
应该怎么考虑呢?感觉我这思路下去会很复杂

帮顶一下,等待高手出炉

[ 本帖最后由 无_花_果 于 2010-1-29 12:58 编辑 ]
作者: bdjy925    时间: 2010-1-29 13:05
谢谢你哈
这个问题真有点难搞懂,呵呵,哪位高手能帮我们解一下啊~~~~~
作者: Jackc    时间: 2010-1-29 13:38
其实2L想复杂了

输入:P =Pay -Price

输出:N(N为找钱的张数,初始为0)

分析算法:根据题目条件找出N可能变化的条件如下:

100 > =P>=50

50 > P>=40

40 > P>=30

30 > P>=20

20 > P>=10

10 > P>=5

5 > P>=4

4 > P>=3

3 > P>=2

2 > P>=1

P=0

可以看出,在100>=P>=0,关键的节点有:100、50、40、30、20、10、5、4、3、2、1,通过等价法,将5、4、3、2、1、0合并为5、3、0(当然,合并为520也可以,看上去还特别点~ 谢谢hueslife的建议),将50、40、30、20、10合并为50、30、10
所以设计的case为:
P=100
P=50
P=30
P=10
P=5
P=3
P=0
注意:
除P=3和P=30外,其他的case均需要根据边界值法设计附加case,比如P=100,还需要设计P=101和P=99适当进行补充。

[ 本帖最后由 Jackc 于 2010-2-4 16:47 编辑 ]
作者: hueslife    时间: 2010-1-29 14:53
原帖由 Jackc 于 2010-1-29 13:38 发表
其实2L想复杂了

输入:P=100-x(x为商品价格,即顾客付款金额)

输出:N(N为找钱的张数,初始为0)

分析算法:根据题目条件找出N可能变化的条件如下:

100=P>=50

50>P>=30

30>P>=20

20>P>=10
...

可不可以将p合并为5,3,2呢
作者: Jackc    时间: 2010-1-29 15:00
这里是有点问题,其实1、2、3、4都是是中间值,而0、5才是是边界值。所以应合并为5,3,0


啊哈~~~,果然用例还得同行评审哈~

[ 本帖最后由 Jackc 于 2010-1-29 16:35 编辑 ]
作者: 无_花_果    时间: 2010-1-29 15:57
原帖由 Jackc 于 2010-1-29 13:38 发表
其实2L想复杂了

输入:P=100-x(x为商品价格,即顾客付款金额)

输出:N(N为找钱的张数,初始为0)

分析算法:根据题目条件找出N可能变化的条件如下:

100=P>=50

50>P>=30

30>P>=20

20>P>=10
...


有点晕...
作者: Jackc    时间: 2010-1-29 16:14
哦?请解
作者: Jackc    时间: 2010-1-29 16:18
标题: 回复 8# 的帖子
哦~,你说的是不是这个意思。比如:
100>=p>=50中,比如选个78嘛,
先找50圆
然后剩下28,应该再找个20,然后……

是这个意思吗?如果是这样就没什么问题,在上边偶写的节点中已经覆盖到了,只是没说清楚,呵呵。

另外,有一个问题,第一节点“100=p>=50”偶写错了,应该是100>=p>=50
作者: Jackc    时间: 2010-1-29 16:31
标题: 回复 10# 的帖子
哦,呵呵,主要是假如输入用Pay-Price的话,写这个过程会很麻烦,所以偶改变了一下输入条件,引入了一个P来简化设计用例的过程。

恩,同意你的看法,最后在实际写CASE的时候,还是应该将P转化成Pay-Price
作者: liaoxj    时间: 2010-1-29 16:57
原帖由 Jackc 于 2010-1-29 13:38 发表
其实2L想复杂了

输入:P=100-x(x为商品价格,即顾客付款金额)

输出:N(N为找钱的张数,初始为0)

分析算法:根据题目条件找出N可能变化的条件如下:

100 > =P>=50

50 > P>=30

30 > P>=20

20 ...

学习了!
作者: buptchinaren    时间: 2010-2-3 11:33
标题: 回复 12# 的帖子
输入:P=100-x(x为商品价格,即顾客付款金额)

X是商品价格,也是顾客付款金额,那么P是什么?100又是什么??

X是商品价格,也是付款金额,那么N 恒等于 0
作者: buptchinaren    时间: 2010-2-3 11:51
输入:pay-price
输出:n

我认为:
(pay-price)/10=x  商,余额 即需要找零金额的十位数
(pay-price)%10=y   余数,余额 即需要找零金额的个位数
y/5=d  商2,判断Y是否大于等于5,大于等于5需要找1张5元,也就是需要找几张5元的
x/5=c  商3,判断X是否大于等于5,大于等于5需要找1张50元,也就是需要找几张50元的
y%5=a  余数2,判断需要找几张1元钱
x%5=b  余数3,判断需要找几张10元钱

输出n=a+b+c+d



根据这个实现方式来设计用例,要注意程序是否控制了:
1、PRICE>PAY
2、PRICE和PAY不小于0
3、price不等于0
4、对负数和小数、分数、输入表达式(例如10+2-3*2)等的控制
5、用例主题部分:c和d只能取0和1,a和b只能取0、1、2、3、4。
  1)十位数大于等于5,个位数大于等于5
    2)十位数大于等于5,个位数小于等于5
    3)十位数小于等于5,个位数大于等于5
    4)十位数小于等于5,个位数小于等于5


以上的用例注意点是根据我的那种实现方式来设计的。不同的实现方式,可能出现BUG的位置也未必相同,因此你的设计用例需要研发人员来评审,需要和研发沟通知道他们是如何实现程序的。
作者: Jackc    时间: 2010-2-4 16:41
标题: 回复 15# 的帖子
恩,不错,学习了,兄弟你把输出元素按照十位与各位的等价类划分,确实比较新颖

另外,兄弟你的的用例设计思路其实并不是只限于测试你自己设计的这个算法,应该是可以覆盖大部分设计算法的。如果不看分析部分,只看第5点,完成是个黑盒用例设计的思路,与算法没有什么关系。只是要生成用例比较麻烦,需要用一个L(22x52)的混合正交表,这个还是要点功力才能弄出来的

另说两个问题:
1、黑盒用例设计最好不要依靠算法来设计,目前大多公司都是测试驱动开发,设计黑盒用例和开发概要设计基本是同时进行的,甚至有时候,测试用例已经出来了,开发还没有确定概设,又怎么谈得上他们以后会用什么算法实现?

2、我之前帖子中提的到的P, 原想表示:应找回客户多少钱?

结果在表达的时候,确实写错了 ,应该是
P =Pay - Price。

[ 本帖最后由 Jackc 于 2010-2-4 16:48 编辑 ]




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