简答题

课程名称:软件评测师

题目:阅读下列说明,回答问题。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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] == '.') && (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;     }请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG。

简答题

课程名称:软件评测师

题目:阅读下列说明,回答问题。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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] == '.') && (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;     }请给出满足100%DC(判定覆盖)所需的逻辑条件。