51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3630|回复: 0
打印 上一主题 下一主题

[讨论] 基本路径覆盖和环路复杂度

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-10-28 09:12:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基本路径集数就是环路复杂度,就是对应的控制流程图的v(g)=e-n+2=分割的区域数=判定节点数+1,好像有这些说法,但是现在对控制流程图的画法有问题,请大家分析。我是在准备测评师考试,在参考答案上看来的。

2011年下午试题有要求话控制流程图的,程序如下
do{
    if(*P='r')                    //2
      smode='r';                   //3
    if('P>='0'&&*P<='9'){          //4,5
      level=*P-'0';                //6
    )else if(*P='f'){             //7
      strategy=1;                  //8
    }else {                        //9
       *m++=*p;
    }
    *p++;                          //10
  }while(m!=fmode+sizeof(fmode));  //11
}                                  //12

这里4,5两个条件语句组成一个判定,流程图中将此分开处理,如下

问题是?为什么红线附近有4,5两个判断呢,这里对应了程序中4,5两个条件组成的一个判定语句?这么说来一个判定节点就是一句条件语句?

然而,09年的下午题中,有个设计基本路径的计算,程序如下

int g, s, b, q;
    if ( ( n > 1000 ) && ( n < 2000 ) )
    {
    g = n % 10;
    s = n % 100 / 10;
    b = n / 100 % 10;
    q = n / 1000;
    if( ( q + g ) == ( s + b ) )
    {
    printf("%-5d", n);
    }
    }
    printf("\n")
    return;、

答案显示流程图的v(g)=3,当然参考答案没有画出流程图,但是我个人觉得画图的话主要区别就在于第一个if语句,如果把&&的两个条件分开判定,那么就有三个判定节点,v(g)=4了,这是根据上题的做法来的,但是这题又没有分开,请问到底这个流程图要怎么画呢,下面是我的画法,请大家指正

简要说明问题就是一个由多个条件组成的判定在流程图中到底是算一个判定节点呢还是算多个节点?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-6-26 14:34 , Processed in 0.069005 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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