尚大教育,教育至尚,人才为大。
●阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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-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,”'wbf”);
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
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中控制流图的线性无关路径。
尚大教育,教育至尚,人才为大。