试题一(共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中控制流图的线性无关路径。
试题一(共20分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
int XOR(char * filename, unsigned long key){
FILE* input = NULL,*output = NULL; //1
char *outfilename = NULL;
int len = strlen(filename);
unsigned charbuffer;
if( (filename[len-2] == ‘.’) && (filename[len-l]== ‘c’)){ //2,3
outfilename = new char[len+l]; //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,”&39;wbf”);
if( utput =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
outfllename = NULL;
fclose(input);
fclose(output);
return 1;
}
}
else{ //14
buffer 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中控制流图的线性无关路径。