51Testing软件测试论坛

标题: 求助。急 [打印本页]

作者: lingirl    时间: 2007-10-23 22:07
标题: 求助。急
已知下列程序,写出程序的等价类测试的步骤
float r,s;
if(r>0 and r<=100) s=3.14*r*r;
作者: seifer1754    时间: 2007-10-24 12:02
r= -1,0,1,99,100,101
作者: seifer1754    时间: 2007-10-24 12:03
考虑到 r 是 float 类型, 可以将上述数值追加精度。
作者: zhong_z82    时间: 2007-10-24 13:03
给你个例子,你慢慢学习吧.
作者: foggycactus    时间: 2007-10-24 14:17
原帖由 seifer1754 于 2007-10-24 12:03 发表
考虑到 r 是 float 类型, 可以将上述数值追加精度。

追加精度的时候是否还需要考虑操作系统的位数。
作者: foggycactus    时间: 2007-10-24 14:27
另外,系统需求描述精确度为多少
考虑输出域S的数据长度。
作者: 晓诺    时间: 2007-10-24 17:57
等价类测试步骤                       
1        由题中的3.14可以得出float精确到小数位后两位               
2        由取值范围(r>0 and r<=100)得出4个边界值点为:-0.01,0.01,100.00,100.01;
3        根据得出的4个边界点写4个测试用例.(用例略)
注:你可以在0.01与100.00里面进行划分你想要的等价区间...

[ 本帖最后由 晓诺 于 2007-10-24 18:00 编辑 ]
作者: 爱之剑    时间: 2007-10-24 18:31
?????
作者: Tender    时间: 2007-10-25 13:57
我觉得这个负数是否应该作为一个CASE。
因为半径本身是没有负数的,这个负数的情况应该作为一个非法等价类,但是它的结果确是正确的。因为负数半径的平方又恰巧是正数。
作者: bossy    时间: 2007-10-25 17:06
不是在说得价类吗?怎么在研究边界值呢?
作者: wzb521    时间: 2007-10-25 23:31
float r,s;
if(r>0 and r<=100) s=3.14*r*r;


这个程序会出错,不用些等价类,所有的都是一类。
作者: puchonghui    时间: 2007-10-25 23:47
。。。
这个程序不知道精度要求如何
如果精度要求比较高的话本身设计就有问题
一般情况下不要用浮点型直接参与运算
误差会很大。。。

java里要用到精确的小数运算可以通过BigDecimal(String str)来处理
c里面我就不知道怎么办了。。。
作者: seifer1754    时间: 2007-10-26 09:38
原帖由 Tender 于 2007-10-25 13:57 发表
我觉得这个负数是否应该作为一个CASE。
因为半径本身是没有负数的,这个负数的情况应该作为一个非法等价类,但是它的结果确是正确的。因为负数半径的平方又恰巧是正数。


当 r<0 时, 根本就无法覆盖 s = 3.14*r*r  这个语句块。 哪里来的结果正确之说?
作者: Tender    时间: 2007-10-27 18:47
原帖由 seifer1754 于 2007-10-26 09:38 发表


当 r


哦,是我没看清楚,sorry!
谢谢你!




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