51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6088|回复: 7
打印 上一主题 下一主题

[讨论] 牛顿迭代法计算正实数的平方根,写出该程序测试用例

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-1-10 11:50:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2007-1-11 10:56:36 | 只看该作者
程序中的返回值x的值就是输入正实数a的平方根.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-1-11 11:10:09 | 只看该作者
输入必须为正实数,那么可以确定一个有效等价类(正实数或0)和一个无效等价类(负实数),不会只有这个用例吧?还可以找出哪些测试用例来呢?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-20 15:17
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2007-1-11 15:33:51 | 只看该作者
    while循环的判定条件是不是也应该覆盖?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-1-11 22:35:23 | 只看该作者
    有没有答案那。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-1-15 15:04:31 | 只看该作者
    fabs()是个什么函数呀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-1-15 15:09:19 | 只看该作者
    是不是还要看看EO这个常数得多少呀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-1-18 10:10:26 | 只看该作者
    1. a是否是double型的数字?分成两个等价类(数字+非数字);
    2. a=0?分成三个等价类(大于0,等于0,小于0)。当等于0时,a/x成了0/0,不知道会有一个什么结果,程序在此处没有容错。
    3.E0足够大?两个等价类,一个是使得fabs(x*x-a)<E0,即不进入循环,解就是x=a;另一个是进入循环。
    4.应该还有考察计算是不是收敛的用例
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 06:02 , Processed in 0.089196 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表