51Testing软件测试论坛

标题: 牛顿迭代法计算正实数的平方根,写出该程序测试用例 [打印本页]

作者: gigi-1128    时间: 2007-1-10 11:50
标题: 牛顿迭代法计算正实数的平方根,写出该程序测试用例
double sq_root(double a)
{
    double x;
    if(a<0)
         printf("请输入正实数!");
    x=a;
    while( fabs (x*x-a) >= E0 )              // (x+a/x)*0.5是牛顿迭代系数,E0是定义的一个常数误差
         x = ( x+a/x)*0.5;
    return x;
}

牛顿迭代算法可以不用管怎么来的,只用针对这个程序,设计下测试用例,大家来讨论下吧sdlkfj2
作者: gigi-1128    时间: 2007-1-11 10:56
程序中的返回值x的值就是输入正实数a的平方根.
作者: gigi-1128    时间: 2007-1-11 11:10
输入必须为正实数,那么可以确定一个有效等价类(正实数或0)和一个无效等价类(负实数),不会只有这个用例吧?还可以找出哪些测试用例来呢?
作者: chenxi01032005    时间: 2007-1-11 15:33
while循环的判定条件是不是也应该覆盖?
作者: getfly    时间: 2007-1-11 22:35
有没有答案那。
作者: boliping    时间: 2007-1-15 15:04
fabs()是个什么函数呀
作者: boliping    时间: 2007-1-15 15:09
是不是还要看看EO这个常数得多少呀
作者: hayerk    时间: 2007-1-18 10:10
1. a是否是double型的数字?分成两个等价类(数字+非数字);
2. a=0?分成三个等价类(大于0,等于0,小于0)。当等于0时,a/x成了0/0,不知道会有一个什么结果,程序在此处没有容错。
3.E0足够大?两个等价类,一个是使得fabs(x*x-a)<E0,即不进入循环,解就是x=a;另一个是进入循环。
4.应该还有考察计算是不是收敛的用例




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