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-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中控制流图的线性无关路径。