阅读下列说明,回答问题。 【说明】 逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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分)
阅读下列说明,回答问题。 【说明】 逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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条线性无关路径。
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条线性无关路径。
相关考题:
试题二(共15分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。struct _ProtobufCIntRange{int start_value;unsigned orig_index;};typedef struct _ProtobufCIntRange ProtobufCIntRange;int int_range_lookup (unsigned n_ranges, const ProtobufCIntRange *ranges, int value){unsigned start,n; ∥1start=0;n=n_ranges;while(n1){ //2unsigned mid= start+ n/2;if(value ranges[mid].start_value){ //3n=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(n0){ //8unsigned 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, 10return (value - ranges[start].start_value)+start_orig_index; //11}retum -1, //12} //13【问题1】(5分)请给出满足100%DC(判定覆盖)所需的逻辑条件。【问题2】 (7分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。【问题3】(3分)请给出【问题2】中控制流图的线性无关路径。
试题一(共20分)阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。int XOR(char * filename, unsigned long key){FILE* input = NULL,*output = NULL; //1char *outfilename = NULL;int len = strlen(filename);unsigned charbuffer;if( (filename[len-2] == ‘.’) (filename[len-l]== ‘c’)){ //2,3outfilename = new char[len+l]; //4strcpy(outfilename,filename); outfilename[len-2] = ‘\0’;}else{ //5outfilename = new char[len+5];strcpy(outfilename , filename);strncat(outfilename,”.c”,2);}input = fopen(filename,”rb”);if( input = NULL){ //6coutError opening file filenameendl ; //7delete [] outfilename;outfilename = NULL;return 1;}output = fopen(outfilename,”wbf”);if( utput =NULL) { //8coutError creating output file ” outfilename endl; //9delete []outfilename;outfilename =NULL;return 1;}while(! feof(input) ){ //10if( fread(buffer,sizeof(unsigned char), 1,input) != 1 ){ //11if( ! feof(input)){ //12delete [] outfilename; //13outfllename = NULL;fclose(input);fclose(output);return 1;}}else{ //14buffer A= key;fwrite(buffer,sizeof(unsigned char), 1,output);}}fclose(input);fclose(output);delete []outfllename;return 0;}【问题1】(6分)请给出满足100%DC (判定覆盖)所需的逻辑条件。【问题2】(10分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。【问题3】(4分)请给出问题2中控制流图的线性无关路径。
论述题3:针对以下C语言程序,请按要求回答问题下面是一个简单的C语言程序:(1)画出该函数的程序流程图。(2)设计测试用例,分别使函数的各种逻辑覆盖率尽量达到100%。如果认为该函数的某种逻辑覆盖率无法达到100%,需要说明原因。(3)设计特殊的测试用例,说明各种逻辑覆盖之间的关系。
阅读下列说明和E-R图,回答问题1至问题3,将解答填入对应栏内。[说明]设有下列关于学生成绩管理系统的E-R图(见图2-1)。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列SQL语言建立了基本表:CREATE TABLE STUDENT(SNo CHAR(6)NOT NULL UNIQUE,SName CHAR(20),Sex CHAR(1),Dept CHAR(20),Age SMALLINT);CREATE TABLE COURSE(CNo CHAR(6)NOT NULL UNIQUE,CName CHAR(20),Hour SMALLINT,Credit SMALLINT);CREATE TABLE SC (SNo CHAR(6),CNo CHAR(6),GRADE SMALLINT,PRIMARY KEY (SNo,CNo));为了答题的方便,图中的实体和属性同时给出了中英文两种名字,回答问题时只须写出英文名即可。填充下列SQL程序5.1~5.4中的(1)~(6),使它们分别完成以下查询功能:程序5.1:检索选修所有课程的学生姓名。程序5.2:给出全体学生人数。程序5.3:按学号给出每个学生的平均成绩。程序5.4:按学号给出每个学生选修课程的门数。[程序5.1]SELECT SName FROM STUDENT WHERE (1)(SELECT FROM COURSE WHERE (2)(SELECT * FROM SC WHERE (3) ))[程序5.2]SELECT (4) FROM STUDENT[程序5.3]SELECT (5) FROM SC GROUP BY SNO[程序5.4]SELECT (6) FROM SC GROUP BY SNO(1)
阅读下列说明,回答问题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的取值设计测试用例,使用例集满足基本路径覆盖标准。请帮忙给出每个问题的正确答案和分析,谢谢!
阅读下列说明,回答问题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语言编写的程序,按要求回答问题。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 语言编写的程序,按要求回答问题。问题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分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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' //6 } else if (*p=='f') { //7 strategy=1; //8 }else { //9 *m++=*p; } *p++; //10 }while (m!=fmode+sizeof (fmode)); //11 } //127、请给出满足100%DC(判定覆盖)所需的逻辑条件。8、请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。9、假设函数gz_open的参数mode是由26个小写字母'a'-'z'、数字'0'-'9'以及空格组成的字符串,请使用基本路径测试法构造1个测试用例,使之覆盖所有基本路径。
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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中控制流图的线性无关路径。
逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,以下描述正确的是()A、语句覆盖的覆盖程度最弱B、采用条件判定组合覆盖的方法可以发现程序中全部的逻辑运算错误C、条件覆盖包含判定覆盖D、条件覆盖又称为分支覆盖
在C程序中,设一表达式中包含有int,long,char和unsigned类型的变量和数据,这四种类型数据的转换规则是()。A、int→unsigned→long→charB、char→int→long→unsignedC、char→int→unsigned→longD、int→char→unsigned→long
单选题逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,以下描述正确的是()A语句覆盖的覆盖程度最弱B采用条件判定组合覆盖的方法可以发现程序中全部的逻辑运算错误C条件覆盖包含判定覆盖D条件覆盖又称为分支覆盖