逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆

最全题库2022-08-02  49

问题 逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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中控制流图的线性无关路径。

选项

答案

解析 【问题1】(filename[len-2] == ‘.’) && (filename[len-l] == ‘c’)(filename[len-2] != ‘.’) && (filename[len-l]!= ‘c’)(或与之等价的表达式,使得判定结果为假)input == NULLinput != NULL(或与之等价的表达式,使得判定结果为假)output == NULLoutput != NULL(或与之等价的表达式,使得判定结果为假)! feof(input)feof(input)(或与之等价的表达式,使得判定结果为假)fread(&buffer,sizeof(unsigned char), 1,input) != 1fread(&buffer,sizeof(unsigned char), 1,input) == 1(或与之等价的表达式,使得判定结果为假)! feof(input)feof(input)(或与之等价的表达式,使得判定结果为假)【问题2】V(G)=8【问题3】1、1 2 3 4 6 72、1 2 3 5 6 73、1 2 5 6 74、1 2 5 6 8 95、1 2 5 6 8 106、1 2 5 6 8 10 11 12 137、1 2 5 6 8 10 11 148、1 2 5 6 8 10 11 12或者其他符合要求的等价的路径组合
转载请注明原文地址:https://www.tihaiku.com/congyezige/2417947.html

最新回复(0)