【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。问题1:(4分)请给出满足100%DC(判定覆盖)所需的逻辑条件。 问题2:(8分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(3分)请给出【问题2】中控制流图的线性无关路径。

题目
【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。



问题1:(4分)请给出满足100%DC(判定覆盖)所需的逻辑条件。
问题2:(8分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(3分)请给出【问题2】中控制流图的线性无关路径。


相似考题
更多“【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。 ”相关问题
  • 第1题:

    阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

    【说明】

    逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现

    程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。

    【问题1] (6分)

    请给出满足100%DC(判定覆盖)所需的逻辑条件。

    【问题2] (10分)

    请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。

    【问题3](4分)

    请给出问题2中控制流图的线性无关路径。


    正确答案:
    本题考查白盒测试技术的应用。
    【问题1】
    本问题考查白盒测试用例设计方法:判定覆盖法。
    判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次
    “真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有6个判定,
    所以满足判定覆盖一共需要12个逻辑条件。
    【问题2】
    本问题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据代码绘
    制控制流图、计算环路复杂度。
    控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的
    节点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的
    条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,
    则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,
    if((filename[len-2]==’.’)&&(filename[len.1]=’c’))这条判断语句中的判定由两个条件
    组成,因此在画控制流图的时候需要拆开成两条判断语句。程序的环路复杂度等于控制
    流图中判定节点的个数加1,本题控制流图I中判定节点个数为7,所以V(G)=8。
    【问题3】
    本问题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据控制流
    图和环路复杂度给出线性无关路径。
    线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来
    看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程
    序的环路复杂度等于线性无关路径的条数,所以本题中应该有8条线性无关路径。
    参考答案

    【问题2]
    环路复杂度V(G)=8。

    线性无关路径:
    1.1-2-3-4-6-7-8-9-10-11-12-13-10......
    2.1-2-5-6-7-8-9-10-11-12-13-10.....
    3.1-2-3-5-6-7-8-9-10-11-12-13-10...
    4.1-2-3-4-6-8-9-10-11-12-13-10...
    5.1-2-3-4-6-7-8-10-11-12-13-10....
    6.1-2-3-4-6-7-8-9-10-15
    7.1-2-3-4-6-7-8-9-10-11-14-10.....
    8.1-2-3-4-6-7-8-9-10-11-12-10....

  • 第2题:

    逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
    getit( int m)
    {
    int i, k;
    k=sqrt(m);
    for ( i=2; i<=k; i++)
    if (m % i=0) break;
    if ( i>=k+1 )
    printf( "%d is a selected number\n", m);
    else
    printf( "%d is not a selected number\n", m );
    }
    7、请找出程序中所有的逻辑判断子语句。(5分)
    8、请将满足100%DC(判定覆盖)所需的逻辑条件填入下表。(8分)



    9、请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。假设函数getit的参数m取值范围是150<m<160,请使用基本路径测试法设计测试用例,将参数m的取值填入下表,使之满足基本路径覆盖要求。(4分)



    答案:
    解析:
    7、
    本题考查对编程语言的理解,着重考查判断语句。
    程序中的逻辑判断子语句如下:
    i<=k
    m%i==0
    i>=k+1
    8、
    本题考查白盒测试用例设计方法:判定覆盖法。判定覆盖法又称为逻辑覆盖,是通过对程序逻辑结构的遍历实现程序的覆盖。



    9、
    本题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据代码绘制程序流图、计算环路复杂度以及设计测试用例。注意测试用例的数目本应和环路复杂度是一致的,但存在特殊情况。
    控制流图:



    环路复杂度:
    V(G)=4
    基本路径覆盖用例:

  • 第3题:

    阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
    逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
    gz_open (const char*mode) { char*p= (char*)mode; //1 char fmode[4]; char*m=fmode; char smode= '\0'; charlevel='\0\'; intstrategy=0; do { if (*p=='r') //2 smode -'r'; //3 if (*p>='O'&&*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 }
    1、请给出满足100%DC(判定覆盖)所需的逻辑条件。
    2、请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。
    3、假设函数gz_open的参数mode是由26个小写字母'a'-'z'、数字'0'-'9'以及空格组成的字符串,请使用基本路径测试法构造1个测试用例,使之覆盖所有基本路径。


    答案:
    解析:


    本题考查白盒测试法的应用。
    本问题考查白盒测试用例设计方法中的判定覆盖法。
    判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次"真"值和"假"值,从而使程序的每一个分支至少都通过一次。本题中程序有4个判定,所以满足判定覆盖一共需要8个逻辑条件,如下表所示。



    控制流图



    环路复杂度V(G)=6
    [解析] 本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。
    控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    根据题中程序绘制的控制流图如下所示。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if(*p>='0'&&*p<='9')这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。



    环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度,数量上表现为独立路径的条数,即合理地预防错误所需测试的最少路径条数。环路复杂度等于图中判定结点的个数加1,图中判定结点个数为5,所以V(G)=6。


    3、构造一个6个字符构成的字符串(设为x,y,z,u,v,w 6个字符),使得每个字符覆盖一条基本路径。其中,x='r',y='f',z∈['0'-'9'],u<'0',v>'9'并且v!='f',w任意,这6个字符可任意排列。例如,mode="rOf aa"。
    [解析] 本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据控制流图和环路复杂度设计测试用例。注意环路复杂度只是测试用例数的上限。
    本题中程序的环路复杂度为6,因此测试用例上限为6,但本题程序比较特殊,只需要一个测试用例即可实现。例如,构造一个6个字符构成的字符串(设为x,y,z,u,v,w6个字符),使得每个字符覆盖一条基本路径即可。其中,X='r',y='f',z∈['0'-'9'],u<'0',v>'9'并且v!='f',w任意,这6个字符可任意排列。

  • 第4题:

    阅读下列程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。




    问题1:(5分)请给出满足100%DC(判定覆盖)所需的逻辑条件。
    问题2:(7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
    问题3:(3分)请给出【问题2】中控制流图的线性无关路径。


    答案:
    解析:
    问题1:答案:



    问题2:答案:1.控制流图如下图所示:



    (2)、V(G)=6+1=7
    问题3:答案:1.1-2-3-4-2...2.1-2-3-5-6-2...3.1-2-3-5-7-134.1-2-8-9-10-11-135.1-2-8-9-10-12-136.1-2-8-9-12-137.1-2-8-12-13
    【解析】
    问题1:本小题考查白盒测试中的判定覆盖法。判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得-次 “真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序一共有5个判定,所以满足判定覆盖一共就需要10个逻辑条件,这些条件详见上述答案。问题2:本题考查白盒测试方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度。环路复杂度等于右图中的判定的节点个数加1。图中判定节点个数为6,所以V(G)=6+1=7。控制流程图的环路复杂性 V(G)一共有以下三种方法,但是最后一种最好用,不易出错。(1)控制流程图中的区域个数。(2)边数-结点数+2。(3)判定数+1。
    问题3:本小题考查白盒测试用例设计方法之基本路径法。涉及到根据控制流图和环路复杂度给出线性无关路径。线性无关路径:指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中有7条线性无关路径。这7条路径组成了问题2中控制流图的一个基本路径集。只要设计出的测试用例能确保这些基本路径的执行,就可以使程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。需要注意的是,基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

  • 第5题:

    逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
    gz_open (const char*mode)
    {
    char*p= (char*)mode; //1
    char fmode[4];
    char*m=fmode;
    char smode= '\0';
    char level='\0\';
    int strategy=0;
    do {
    if (*p=='r') //2
    smode - 'r'; //3
    if (*p>='O'&&*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
    3、请给出满足100%DC(判定覆盖)所需的逻辑条件。(6分)
    4、请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。(6分)
    5、假设函数gz_open的参数mode是由26个小写字母'a'-'z'、数字'0'-'9'以及空格组成的字符串,请使用基本路径测试法构造1个测试用例,使之覆盖所有基本路径。(6分)


    答案:
    解析:
    3、



    4、控制流图



    环路复杂度V(G)=6
    5、构造一个6个字符构成的字符串(设为x,y,z,u,v,w 6个字符),使得每个字符覆盖一条基本路径。其中,x='r',y='f',z∈['0'-'9'],u<'0',v>'9'并且v!='f',w任意,这6个字符可任意排列。例如,mode="rOf aa"。
    【解析】
    3、
    本题考查白盒测试法的应用。
    本问题考查白盒测试用例设计方法中的判定覆盖法。
    判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有4个判定,所以满足判定覆盖一共需要8个逻辑条件,如下表所示。



    4、
    本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。
    控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    根据题中程序绘制的控制流图如下所示。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if(*p>='0'&&*p<='9')这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。



    环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度,数量上表现为独立路径的条数,即合理地预防错误所需测试的最少路径条数。环路复杂度等于图中判定结点的个数加1,图中判定结点个数为5,所以V(G)=6。
    5、
    本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据控制流图和环路复杂度设计测试用例。注意环路复杂度只是测试用例数的上限。
    本题中程序的环路复杂度为6,因此测试用例上限为6,但本题程序比较特殊,只需要一个测试用例即可实现。例如,构造一个6个字符构成的字符串(设为x,y,z,u,v,w6个字符),使得每个字符覆盖一条基本路径即可。其中,X='r',y='f',z∈['0'-'9'],u<'0',v>'9'并且v!='f',w任意,这6个字符可任意排列。

  • 第6题:

    阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。[说明]逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,是设计白盒测试用例的主要方法之。以下代码由C浯言书写,请按要求回答问题。voidcal(intn){intg,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;}13、 [问题1](3分)请找出程序中所有的逻辑判断语句。14、 [问题2](6分)请分析并给出分别满足100%DC(判定覆盖)和100%CC(条件覆盖)时所需的逻辑条件。15、 [问题3](6分)假设n的取值范围是0<n<3000,请用逻辑覆盖法为n的取值设计测试用例,使用例集满足基本路径覆盖标准。


    答案:
    解析:
    13、逻辑判断语句:1.n>10002.n<20003.(q + g)=(s + b) 14、按照DC和CC的定义分析逻辑条件。



    15、可按以下步骤完成:1.画控制流图。2.计算V(G)=3。3.找出线性独立路径。4.按路径执行过程中的逻辑条件设计相应数据。

  • 第7题:

    【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。 main( ){int i,n; //1for(i=1;i<7;i++){ //2n=0;  if(i!=1) //3 n=n+1; //4  if(n==5){ //5printf("Hello!"); //6 }else{ printf("No!"); //7}  }printf("GAME OVER!"); //8 } 问题1:(3分)请给出满足100%DC(判定覆盖)所需的逻辑条件。问题2:(8分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(4分)请给出【问题2】中控制流图的线性无关路径。


    答案:
    解析:
    问题1:答案:1、i < 72、i >= 73、i != 14、i == 15、n == 56、n != 5
    问题2:答案:(1) 控制流图如下图所示:



    (2)、V(G)=3+1=4问题3:答案:(1) 1-2-8 (2) 1-2-3-5-6-2... (3) 1-2-3-4-5-6-2...(4) 1-2-3-5-7-2…
    【解析】
    问题1:解析:
    本小题考查白盒测试中的判定覆盖法。判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得-次 “真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序一共有3个判定,所以满足判定覆盖一共就需要6个逻辑条件,这些条件详见上述答案。问题2:解析:
    本题考查白盒测试方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度。环路复杂度等于右图中的判定的节点个数加1。图中判定节点个数为3,所以V(G)=3+1=4。控制流程图的环路复杂性 V(G)一共有以下三种方法,但是最后一种最好用,不易出错。(1)控制流程图中的区域个数。(2)边数-结点数+2。(3)判定数+1。问题3:解析:本小题考查白盒测试用例设计方法之基本路径法。涉及到根据控制流图和环路复杂度给出线性无关路径。线性无关路径:指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中有4条线性无关路径。这4条路径组成了问题2中控制流图的一个基本路径集。只要设计出的测试用例能确保这些基本路径的执行,就可以使程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。需要注意的是,基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

  • 第8题:

    逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
    阅读下列说明,回答问题。 【说明】 逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。 int XOR(char * filename, unsignedlong key){ FILE * input = NULL , *output =NULL; //i char * outfilename = NULL; int len = strlen(filename); unsigned char buffer; if( (filename[len-2] == '.')&& (filename[len-1] == 'c') ) { //2,3 outfilename = new char[len+1]; //4 strcpy(outfilename, filename); outfilename[len-2] = '\0'; } else{ //5 outfilename = new char[len+5]; strcpy(outfilename, filename); strncat(outfilename,".c",2); } input =fopen(filename,"rb"); if( input == NULL) { //6 cout << "Error opening file " << filename << endl; //7 delete [] outfilename; outfilename = NULL; return 1; } output =fopen(outfilename,"wb"); if( output == NULL ) { //8 cout << "Error creating output file " << outfilename << endl; //9 delete [] outfilename; outfilename = NULL; return 1; } while( ! feof(input) ) { //10 if(fread(&buffer,sizeof(unsigned char),1,input) != 1 ) { //11 if( ! feof(input) ) { //12 delete [] outfilename; //13 outfilename = NULL; fclose(input); fclose(output); return 1; } } else{ //14 buffer ^= key; fwrite(&buffer,sizeof(unsigned char),1,output); } } fclose(input); //15 fclose(output); delete [] outfilename; return 0; }
    请给出问题2中控制流图的线性无关路径。


    答案:
    解析:
    线性无关路径:
    1.1-2-5-6-7 2.1-2-3-5-6-7 3.1-2-3-4-6-7 4.1-2-5-6-8-9 5.1-2-5-6-8-10-15 6.1-2-5-6-8-10-11-14-10... 7.1-2-5-6-8-10-11-12-10... 8.1-2-5-6-8-10-11-12-13
    【解析】
    本问题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据控制流图和环路复杂度给出线性无关路径。线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中应该有8条线性无关路径。

  • 第9题:

    白盒测试的测试用例设计要考虑语句覆盖、()、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。

    • A、逻辑覆盖
    • B、程序覆盖
    • C、等价类划分
    • D、判定覆盖

    正确答案:D

  • 第10题:

    辑覆盖法是一种白盒测试方法,从程序内部的逻辑结构出发选取测试用例。按覆盖级别由低向高可以划分为:()

    • A、判断—条件覆盖
    • B、条件覆盖
    • C、判断覆盖
    • D、语句覆盖

    正确答案:A,B,C,D

  • 第11题:

    单选题
    逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,以下描述正确的是()
    A

    语句覆盖的覆盖程度最弱

    B

    采用条件判定组合覆盖的方法可以发现程序中全部的逻辑运算错误

    C

    条件覆盖包含判定覆盖

    D

    条件覆盖又称为分支覆盖


    正确答案: A
    解析: 暂无解析

  • 第12题:

    单选题
    在动态测试过程中,测试人员利用程序内部的逻辑结构及有关信息,设计和选择测试用例,对程序所有逻辑路径及过程进行测试的方法属于()。
    A

    白盒法

    B

    黑盒法

    C

    条件覆盖法

    D

    经验推测法


    正确答案: A
    解析: 暂无解析

  • 第13题:

    白盒测试主要进行______的覆盖测试。

    A.程序设计结构

    B.程序物理结构

    C.程序逻辑结构

    D.程序实现功能


    正确答案:C

  • 第14题:

    阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。



    问题1:(6分) 请针对上述C程序,给出满足100%DC(判定覆盖)所需的逻辑条件。
    问题2:(7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
    问题3:(3分)请给出【问题2】中控制流图的线性无关路径。


    答案:
    解析:
    问题1答案:

    问题2:答案:(1)控制流图如下图所示:



    (2)V(G)=10+1=11
    问题3:答案:(1)1-2-19 (2) 1-2-3-19 (3) 1-2-3-4-12-13-17-19(4) 1-2-3-4-12-13-14-17-19 (5) 1-2-3-4-12-13-14-15-17-19(6) 1-2-3-4-12-13-14-15-16-17-19 (7) 1-2-3-4-12-13-14-15-16-18-19(8) 1-2-3-4-5-11-19 (9)1-2-3-4-5-6-10-19(10) 1-2-3-4-5-6-7-9-19 (11) 1-2-3-4-5-6-7-8-19
    【解析】
    问题1本小题考查白盒测试中的判定覆盖法。判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得-次 “真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序一共有6个判定,所以满足判定覆盖一共就需要12个逻辑条件,这些条件详见上述答案。问题2:本题考查白盒测试方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度。环路复杂度等于右图中的判定的节点个数加1。图中判定节点个数为10,所以V(G)=10+1=11。控制流程图的环路复杂性 V(G)一共有以下三种方法,但是最后一种最好用,不易出错。(1)控制流程图中的区域个数。(2)边数-结点数+2。(3)判定数+1。
    问题3:本小题考查白盒测试用例设计方法之基本路径法。涉及到根据控制流图和环路复杂度给出线性无关路径。线性无关路径:指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中有11条线性无关路径。这11条路径组成了问题2中控制流图的一个基本路径集。只要设计出的测试用例能确保这些基本路径的执行,就可以使程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。需要注意的是,基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

  • 第15题:

    阅读下列Java程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由Java语言编写的程序,按要求回答问题。



    问题1:(2分) 请简述基本路径测试法的概念。
    问题2:(8分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
    问题3:(3分)请给出【问题2】中控制流图的线性无关路径。


    答案:
    解析:
    问题1:答案:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
    问题2:答案:(1)控制流图如下图所示:



    (2)V(G)=4+1=5
    问题3:答案:(1) 1-2-3-8-10(2) 1-2-4-5-6-8-10(3) 1-2-3-4-5-6-8-10(4) 1-2-4-5-7-8-10(5) 1-2-3-8-9-10
    【解析】
    问题1:本小题考查基本路径法的概念。
    问题2:本题考查白盒测试方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度。环路复杂度等于右图中的判定的节点个数加1。图中判定节点个数为4,所以V(G)=4+1=5。控制流程图的环路复杂性 V(G)一共有以下三种方法,但是最后一种最好用,不易出错。(1)控制流程图中的区域个数。(2)边数-结点数+2。(3)判定数+1。
    问题3:本小题考查白盒测试用例设计方法之基本路径法。涉及到根据控制流图和环路复杂度给出线性无关路径。线性无关路径:指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中有5条线性无关路径。这5条路径组成了问题2中控制流图的一个基本路径集。只要设计出的测试用例能确保这些基本路径的执行,就可以使程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。需要注意的是,基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

  • 第16题:

    阅读下列程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。
    main( ){int i,n; //1for(i=1;i<5;i++){ //2n=0;  if(i!=1) //3 n=n+1; //4 if(i==3) //5 n=n+1; //6  if(n==3) //7  printf("Hello!"); //8 }} //9 问题1:(4分)请给出满足100%DC(判定覆盖)所需的逻辑条件。问题2:(6分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(5分)请给出【问题2】中控制流图的线性无关路径。


    答案:
    解析:
    问题1:
    1、i < 52、i >= 53、i != 14、i == 15、i == 36、i != 37、n == 38、n != 3
    问题2(1) 控制流图如下图所示:



    (2)V(G)=4+1=5问题3:
    (1) 1-2-9 (2) 1-2-3-5-7-2... (3) 1-2-3-5-7-8-2...(4) 1-2-3-4-5-7-2… (5) 1-2-3-5-6-7-2…
    【解析】
    问题1:判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得-次 “真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序一共有4个判定,所以满足判定覆盖一共就需要8个逻辑条件,这些条件详见上述答案。问题2:
    本题考查白盒测试方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度。环路复杂度等于右图中的判定的节点个数加1。图中判定节点个数为4,所以V(G)=4+1=5。控制流程图的环路复杂性 V(G)一共有以下三种方法,但是最后一种最好用,不易出错。(1)控制流程图中的区域个数。(2)边数-结点数+2。(3)判定数+1。问题3:本小题考查白盒测试用例设计方法之基本路径法。涉及到根据控制流图和环路复杂度给出线性无关路径。线性无关路径:指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中有5条线性无关路径。这5条路径组成了问题2中控制流图的一个基本路径集。只要设计出的测试用例能确保这些基本路径的执行,就可以使程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。需要注意的是,基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

  • 第17题:

    逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
    int XOR(char * filename,unsigned long key){ FILE * input = NULL , *output =NULL; //i char * outfilename = NULL; int len = strlen(filename); unsigned char buffer; if( (filename[len-2] == '.')&& (filename[len-1] == 'c') ) { //2,3 outfilename = new char[len+1]; //4 strcpy(outfilename, filename); outfilename[len-2] = '\0'; } else{ //5 outfilename = new char[len+5]; strcpy(outfilename, filename); strncat(outfilename,".c",2); } input =fopen(filename,"rb"); if( input == NULL) { //6 cout << "Error opening file " << filename << endl; //7 delete [] outfilename; outfilename = NULL; return 1; } output =fopen(outfilename,"wb"); if( output == NULL ) { //8 cout << "Error creating output file " << outfilename << endl; //9 delete [] outfilename; outfilename = NULL; return 1; } while( ! feof(input) ) { //10 if(fread(&buffer,sizeof(unsigned char),1,input) != 1 ) { //11 if( ! feof(input) ) { //12 delete [] outfilename; //13 outfilename = NULL; fclose(input); fclose(output); return 1; } } else{ //14 buffer ^= key; fwrite(&buffer,sizeof(unsigned char),1,output); } } fclose(input); //15 fclose(output); delete [] outfilename; return 0; }
    请给出满足100%DC(判定覆盖)所需的逻辑条件。


    答案:
    解析:


    本题考查白盒测试技术的应用。
    1.本问题考查白盒测试用例设计方法:判定覆盖法。
    判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次"真"值和"假"值,从而使程序的每一个分支至少都通过一次。本题中程序有6个判定,
    所以满足判定覆盖一共需要12个逻辑条件。

  • 第18题:

    阅读下列说明,回答问题l至问题3,将解答或相应的编号填入对应栏内。[说明] 逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。 getit( int m) { int i, k; k=sqrt(m); for ( i=2; i<=k; i++) if (m % i=0) break; if ( i>=k+1 ) printf( "%d is a selected number\n", m); else printf( "%d is not a selected number\n", m ); }10、请找出程序中所有的逻辑判断子语句。11、请将满足100%DC(判定覆盖)所需的逻辑条件填入下表。



    12、请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。假设函数getit的参数m取值范围是150<m<160,请使用基本路径测试法设计测试用例,将参数m的取值填入下表,使之满足基本路径覆盖要求。



    答案:
    解析:

  • 第19题:

    阅读下列说明,回答问题。
    【说明】
    逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
    int XOR(char * filename,unsigned long key){ FILE * input = NULL , *output =NULL; //i char * outfilename = NULL; int len = strlen(filename); unsigned char buffer; if( (filename[len-2] == '.')&& (filename[len-1] == 'c') ) { //2,3 outfilename = new char[len+1]; //4 strcpy(outfilename, filename); outfilename[len-2] = '\0'; } else{ //5 outfilename = new char[len+5]; strcpy(outfilename, filename); strncat(outfilename,".c",2); } input =fopen(filename,"rb"); if( input == NULL) { //6 cout << "Error opening file " << filename << endl; //7 delete [] outfilename; outfilename = NULL; return 1; } output =fopen(outfilename,"wb"); if( output == NULL ) { //8 cout << "Error creating output file " << outfilename << endl; //9 delete [] outfilename; outfilename = NULL; return 1; } while( ! feof(input) ) { //10 if(fread(&buffer,sizeof(unsigned char),1,input) != 1 ) { //11 if( ! feof(input) ) { //12 delete [] outfilename; //13 outfilename = NULL; fclose(input); fclose(output); return 1; } } else{ //14 buffer ^= key; fwrite(&buffer,sizeof(unsigned char),1,output); } } fclose(input); //15 fclose(output); delete [] outfilename; return 0; }
    请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.


    答案:
    解析:
    环路复杂度V(G)=8。

    本问题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据代码绘制控制流图、计算环路复杂度。控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的节点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if( (filename[len-2]=='.')&&(filename[len-1]=='c') )这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。程序的环路复杂度等于控制流图中判定节点的个数加1,本题控制流图中判定节点个数为7,所以V(G)=8。

  • 第20题:

    阅读下列说明,回答问题。 【说明】 逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。 int XOR(char * filename, unsigned long key){ FILE * input = NULL , *output = NULL; //1 char * outfilename = NULL; int len = strlen(filename); unsigned char buffer; if( (filename[len-2] == '.') && (filename[len-1] == 'c') ) { //2,3 outfilename = new char[len+1]; //4 strcpy(outfilename, filename); outfilename[len-2] = '\0'; } else{ //5 outfilename = new char[len+5]; strcpy(outfilename, filename); strncat(outfilename,".c",2); } input = fopen(filename,"rb"); if( input == NULL) { //6 cout << "Error opening file " << filename << endl; //7 delete [] outfilename; outfilename = NULL; return 1; } output = fopen(outfilename,"wb"); if( output == NULL ) { //8 cout << "Error creating output file " << outfilename << endl; //9 delete [] outfilename; outfilename = NULL; return 1; } while( ! feof(input) ) { //10 if( fread(&buffer,sizeof(unsigned char),1,input) != 1 ) { //11 if( ! feof(input) ) { //12 delete [] outfilename; //13 outfilename = NULL; fclose(input); fclose(output); return 1; } } else{ //14 buffer ^= key; fwrite(&buffer, sizeof(unsigned char),1,output); } } fclose(input); //15 fclose(output); delete [] outfilename; return 0; }4.1、请给出满足100%DC(判定覆盖)所需的逻辑条件。(3分)4.2、请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。(7分)4.3、请给出问题2中控制流图的线性无关路径。(5分)


    答案:
    解析:
    4.1、

    4.2、环路复杂度V(G)=8。



    4.3、线性无关路径: 1.1-2-5-6-7 2.1-2-3-5-6-7 3.1-2-3-4-6-7 4.1-2-5-6-8-9 5.1-2-5-6-8-10-15 6.1-2-5-6-8-10-11-14-10... 7.1-2-5-6-8-10-11-12-10... 8.1-2-5-6-8-10-11-12-13
    【解析】
    本题考查白盒测试技术的应用。 1.本问题考查白盒测试用例设计方法:判定覆盖法。 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有6个判定, 所以满足判定覆盖一共需要12个逻辑条件。 2.本问题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据代码绘制控制流图、计算环路复杂度。 控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的节点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if( (filename[len-2]=='.')&&(filename[len-1]=='c') )这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。程序的环路复杂度等于控制流图中判定节点的个数加1,本题控制流图中判定节点个数为7,所以V(G)=8。 3.本问题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据控制流图和环路复杂度给出线性无关路径。 线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中应该有8条线性无关路径。

  • 第21题:

    逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,以下描述正确的是()

    • A、语句覆盖的覆盖程度最弱
    • B、采用条件判定组合覆盖的方法可以发现程序中全部的逻辑运算错误
    • C、条件覆盖包含判定覆盖
    • D、条件覆盖又称为分支覆盖

    正确答案:A

  • 第22题:

    在动态测试过程中,测试人员利用程序内部的逻辑结构及有关信息,设计和选择测试用例,对程序所有逻辑路径及过程进行测试的方法属于()。

    • A、白盒法
    • B、黑盒法
    • C、条件覆盖法
    • D、经验推测法

    正确答案:A

  • 第23题:

    多选题
    辑覆盖法是一种白盒测试方法,从程序内部的逻辑结构出发选取测试用例。按覆盖级别由低向高可以划分为:()
    A

    判断—条件覆盖

    B

    条件覆盖

    C

    判断覆盖

    D

    语句覆盖


    正确答案: D,A
    解析: 暂无解析