测试用例覆盖问题
一条测试用例应该尽可能多的覆盖不同路径还是应该使得不同的路径用不同的测试用例来覆盖?例如:
我要测试一个能解释字符串表达式的函数,要测试其中是否能够正确运算加法&乘法,是应该:
写一条测试用例:3×2+1
还是写两个测试用例:2×1 、 7+8 你写的这2个用例可以完全理解成覆盖不一样的范围,3*2+1这个用例可以覆盖到连算的功能,也能证明*和+是正确的,但是一但出错,那你就不能定位是*错还是+错,而下面的2*1 和7+8 可以正确覆盖,而且可以证明*是对的,或者错的 +是对的或者错的。
楼主能明白吗 LS正解,支持 jun84826 的意思是不是:不同的测试用例应该测试不同的功能,每个测试用例尽量只对每一个功能进行测试,对吗?
我记得看Ron Patton写的<软件测试>这本书中好象也有类似的说法,但是现在就是找不到原话了.
各位能不能再辛苦一下帮忙看看同样我要还是测试一个能解释字符串表达式的函数,下面的测试用例是否有缺少或多余的?
(为了简单起见,现在只考虑加法和乘法运算整数.只考虑数字常量处理,不考虑表达式出错.)
1)0+0(最小值)
2) 999999999+0(最大值)
3)999999999+1(越界)
4)1000000000+0 (越界)
5) 0*0
6)1*0
7)999999999*1
8)999999999*2 (越界)
9)1*1
10)1+2*0 (连算)
11)1*(4+3) (括号是否能改变运算顺序) jun84826 的观点我不能完全先赞同
——jun84826 的意思是不是:不同的测试用例应该测试不同的功能,每个测试用例尽量只对每一个功能进行测试。
在对功能进行测试时,这样对单个功能进行测试是必要的,但如果仅仅做如此的孤立测试,是远远不够的。
我这里要提到函数(程序)的问题,一个功能往往对应一个函数(程序)。那么在一个函数运行完了,再运行另一个函数会发生什么情况?能不能正确的调用呢?已运行的函数有没有从内存中清除?会不会对其它函数的运行产生影响?这些都是要考虑到的。而这些是孤立的功能测试无法检测到的。
磋商
我认为楼主提到的问题是测试用例的覆盖问题,按照楼主的本意是测试一个能解释字符串表达式的函数,测试是否能正确运算*&+,3×2+1,1*2,7+8,都必须,因为这里涉及到*和+的优先级别问题,除此之外应该还有一个测试用例子:1+3*5 原帖由 zhf69 于 2006-3-6 18:41 发表jun84826 的意思是不是:不同的测试用例应该测试不同的功能,每个测试用例尽量只对每一个功能进行测试,对吗?
我记得看Ron Patton写的<软件测试>这本书中好象也有类似的说法,但是现在就是找不到原话了.
各 ... 按此测试不知道9999999998+2,+3等类似用例是否越界,如果已经定义函数运算结果超过100000000就算越界,那么前面3例应该就没有意义了吧?不属于“测试一个能解释字符串表达式的函数”这个目的的范畴了
页:
[1]