[说明] 逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。Struct_ProtobufCIntRange{Int start_value;Unsigned orig_index;};typedef struct_ProtobufCIntRange ProtobufCIntRange;in tint_range_lookup(unsigned n_ranges,const ProtobufCIntRange*ranges,int value) {unsigned start,n; //1start=0;n=n_ranges;while (n>1) { //2unsigned mid=start+n/2;if(value n=mid-start; //4}else if (value>=ranges[mid].start_value+ (int)(ranges[mid+1].orig_index-ranges[mid].orig_index)) { //5unsigned new_start=mid+1; //6n=start+n-new_start;start=new_start;}else //7return(value-ranges[mid].start_value)+ranges[mid].orig_index;}if(n>0){ //8unsigned start_orig_index=ranges[start].orig_index;unsigned range_size=ranges[start+1].orig_index-start_orig_index;if (ranges[start].start_valuereturn(value-ranges[start].start_value)+start_orig_index; //11}return -1; //12} //135、[问题1] 请给出满足100%DC(判定覆盖)所需的逻辑条件。(6分)6、[问题2] 请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。(6分)7、[问题3] 请给出[问题2]中控制流图的线性无关路径。(4分)
[说明] 逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
Struct_ProtobufCIntRange{
Int start_value;
Unsigned orig_index;
};
typedef struct_ProtobufCIntRange ProtobufCIntRange;
in tint_range_lookup(unsigned n_ranges,const ProtobufCIntRange*ranges,int value) {
unsigned start,n; //1
start=0;
n=n_ranges;
while (n>1) { //2
unsigned mid=start+n/2;
if(value< ranges[mid].start_value) { //3
n=mid-start; //4
}
else if (value>=ranges[mid].start_value+ (int)(ranges[mid+1].orig_index-ranges[mid].orig_index)) { //5
unsigned new_start=mid+1; //6
n=start+n-new_start;
start=new_start;
}
else //7
return(value-ranges[mid].start_value)+ranges[mid].orig_index;
}
if(n>0){ //8
unsigned start_orig_index=ranges[start].orig_index;
unsigned range_size=ranges[start+1].orig_index-start_orig_index;
if (ranges[start].start_value<=value && value<(int)(ranges[start].start_value+range_size)) //9,10
return(value-ranges[start].start_value)+start_orig_index; //11
}
return -1; //12
} //13
5、[问题1] 请给出满足100%DC(判定覆盖)所需的逻辑条件。(6分)6、[问题2] 请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。(6分)
7、[问题3] 请给出[问题2]中控制流图的线性无关路径。(4分)
Struct_ProtobufCIntRange{
Int start_value;
Unsigned orig_index;
};
typedef struct_ProtobufCIntRange ProtobufCIntRange;
in tint_range_lookup(unsigned n_ranges,const ProtobufCIntRange*ranges,int value) {
unsigned start,n; //1
start=0;
n=n_ranges;
while (n>1) { //2
unsigned mid=start+n/2;
if(value< ranges[mid].start_value) { //3
n=mid-start; //4
}
else if (value>=ranges[mid].start_value+ (int)(ranges[mid+1].orig_index-ranges[mid].orig_index)) { //5
unsigned new_start=mid+1; //6
n=start+n-new_start;
start=new_start;
}
else //7
return(value-ranges[mid].start_value)+ranges[mid].orig_index;
}
if(n>0){ //8
unsigned start_orig_index=ranges[start].orig_index;
unsigned range_size=ranges[start+1].orig_index-start_orig_index;
if (ranges[start].start_value<=value && value<(int)(ranges[start].start_value+range_size)) //9,10
return(value-ranges[start].start_value)+start_orig_index; //11
}
return -1; //12
} //13
5、[问题1] 请给出满足100%DC(判定覆盖)所需的逻辑条件。(6分)6、[问题2] 请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。(6分)
7、[问题3] 请给出[问题2]中控制流图的线性无关路径。(4分)
参考解析
解析:5、本题考查白盒测试法的应用。
本问题考查白盒测试用例设计方法中的判定覆盖法。
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有5个判定,所以满足判定覆盖一共需要10个逻辑条件,如下表所示。
6、本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。
控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:
根据题中程序绘制的控制流图如下所示。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if (ranges[start].start_valueihg<=value&&value<(int)(ranges[start].start_value+range_size))这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。
环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度,数量上表现为独立路径的条数,即合理地预防错误所需测试的最少路径条数。环路复杂度等于图中判定结点的个数加1,图中判定结点个数为6,所以(G)=7。
7、本问题考查白盒测试用例设计方法中的基本路径法。
(1) 1-2-3-4-2...
(2) 1-2-3-5-6-2...
(3) 1-2-3-5-7-13 l
(4) 1-2-8-9-10-11-13
(5) 1-2-8-9-10-12-13
(6) 1-2-8-9-12-13
(7) 1-2-8-12-13
本问题考查白盒测试用例设计方法中的判定覆盖法。
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有5个判定,所以满足判定覆盖一共需要10个逻辑条件,如下表所示。
6、本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。
控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:
根据题中程序绘制的控制流图如下所示。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if (ranges[start].start_valueihg<=value&&value<(int)(ranges[start].start_value+range_size))这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。
环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度,数量上表现为独立路径的条数,即合理地预防错误所需测试的最少路径条数。环路复杂度等于图中判定结点的个数加1,图中判定结点个数为6,所以(G)=7。
7、本问题考查白盒测试用例设计方法中的基本路径法。
(1) 1-2-3-4-2...
(2) 1-2-3-5-6-2...
(3) 1-2-3-5-7-13 l
(4) 1-2-8-9-10-11-13
(5) 1-2-8-9-10-12-13
(6) 1-2-8-9-12-13
(7) 1-2-8-12-13
相关考题:
论述题3:针对以下C语言程序,请按要求回答问题下面是一个简单的C语言程序:(1)画出该函数的程序流程图。(2)设计测试用例,分别使函数的各种逻辑覆盖率尽量达到100%。如果认为该函数的某种逻辑覆盖率无法达到100%,需要说明原因。(3)设计特殊的测试用例,说明各种逻辑覆盖之间的关系。
阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。[说明]逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,是设计白盒测试用例的主要方法之。以下代码由C浯言书写,请按要求回答问题。void cal (int n){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;}请找出程序中所有的逻辑判断语句。请分析并给出分别满足100%DC(判定覆盖)和100%CC(条件覆盖)时所需的逻辑条件。假设n的取值范围是0<n<3000,请用逻辑覆盖法为n的取值设计测试用例,使用例集满足基本路径覆盖标准。请帮忙给出每个问题的正确答案和分析,谢谢!
● 白盒测试也被称为结构测试。将软件看成透明的白盒,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。下列( )不是白盒测试设计技术。( )A.条件覆盖 B.基本路径测试C.语句覆盖 D.边界值分析
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。【问题1] (6分)请给出满足100%DC(判定覆盖)所需的逻辑条件。【问题2] (10分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。【问题3](4分)请给出问题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分)
阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。问题1:(6分) 请针对上述C程序,给出满足100%DC(判定覆盖)所需的逻辑条件。问题2:(7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(3分)请给出【问题2】中控制流图的线性无关路径。
阅读下列说明,回答问题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' //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个测试用例,使之覆盖所有基本路径。
【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。问题1:(4分)请给出满足100%DC(判定覆盖)所需的逻辑条件。问题2:(8分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(3分)请给出【问题2】中控制流图的线性无关路径。
阅读下列Java程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由Java语言编写的程序,按要求回答问题。问题1:(2分) 请简述基本路径测试法的概念。问题2:(8分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(3分)请给出【问题2】中控制流图的线性无关路径。
阅读下列程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。问题1:(5分)请给出满足100%DC(判定覆盖)所需的逻辑条件。问题2:(7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(3分)请给出【问题2】中控制流图的线性无关路径。
阅读下列程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。main( ){int i,n; //1for(i=1;i
逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。gz_open (const char*mode){char*p= (char*)mode; //1char fmode[4];char*m=fmode;char smode= '\0';char level='\0\';int strategy=0;do {if (*p=='r') //2smode - 'r'; //3if (*p>='O' //6} else if (*p=='f') { //7strategy=1; //8}else { //9*m++=*p;}*p++; //10}while (m!=fmode+sizeof (fmode)); //11} //123、请给出满足100%DC(判定覆盖)所需的逻辑条件。(6分)4、请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。(6分)5、假设函数gz_open的参数mode是由26个小写字母'a'-'z'、数字'0'-'9'以及空格组成的字符串,请使用基本路径测试法构造1个测试用例,使之覆盖所有基本路径。(6分)
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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] == '.') //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( //13 outfilename = NULL; fclose(input); fclose(output); return 1; } } else{ //14 buffer ^= key; fwrite( } } fclose(input); //15 fclose(output); delete [] outfilename; return 0; }请给出满足100%DC(判定覆盖)所需的逻辑条件。
阅读下列说明,回答问题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的取值设计测试用例,使用例集满足基本路径覆盖标准。
阅读下列说明,回答问题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的取值填入下表,使之满足基本路径覆盖要求。
【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。 main( ){int i,n; //1for(i=1;i
阅读下列说明,回答问题。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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] == '.') //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( //13 outfilename = NULL; fclose(input); fclose(output); return 1; } } else{ //14 buffer ^= key; fwrite( } } fclose(input); //15 fclose(output); delete [] outfilename; return 0; }请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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] == '.') //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( //13 outfilename = NULL; fclose(input); fclose(output); return 1; } } else{ //14 buffer ^= key; fwrite( } } fclose(input); //15 fclose(output); delete [] outfilename; return 0; }请给出问题2中控制流图的线性无关路径。
阅读下列说明,回答问题。 【说明】 逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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] == '.') //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( //13 outfilename = NULL; fclose(input); fclose(output); return 1; } } else{ //14 buffer ^= key; fwrite( } } fclose(input); //15 fclose(output); delete [] outfilename; return 0; }4.1、请给出满足100%DC(判定覆盖)所需的逻辑条件。(3分)4.2、请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。(7分)4.3、请给出问题2中控制流图的线性无关路径。(5分)
逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,以下描述正确的是()A、语句覆盖的覆盖程度最弱B、采用条件判定组合覆盖的方法可以发现程序中全部的逻辑运算错误C、条件覆盖包含判定覆盖D、条件覆盖又称为分支覆盖
单选题逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,以下描述正确的是()A语句覆盖的覆盖程度最弱B采用条件判定组合覆盖的方法可以发现程序中全部的逻辑运算错误C条件覆盖包含判定覆盖D条件覆盖又称为分支覆盖
单选题在动态测试过程中,测试人员利用程序内部的逻辑结构及有关信息,设计和选择测试用例,对程序所有逻辑路径及过程进行测试的方法属于()。A白盒法B黑盒法C条件覆盖法D经验推测法