第1题:
此题为判断题(对,错)。
第2题:
阅读下列说明和E-R图,回答问题1至问题3,将解答填入对应栏内。
[说明]
设有下列关于学生成绩管理系统的E-R图(见图2-1)。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列SQL语言建立了基本表:
CREATE TABLE STUDENT(SNo CHAR(6)NOT NULL UNIQUE,
SName CHAR(20),
Sex CHAR(1),
Dept CHAR(20),
Age SMALLINT);
CREATE TABLE COURSE(CNo CHAR(6)NOT NULL UNIQUE,
CName CHAR(20),
Hour SMALLINT,
Credit SMALLINT);
CREATE TABLE SC (SNo CHAR(6),
CNo CHAR(6),
GRADE SMALLINT,
PRIMARY KEY (SNo,CNo));
为了答题的方便,图中的实体和属性同时给出了中英文两种名字,回答问题时只须写出英文名即可。
填充下列SQL程序5.1~5.4中的(1)~(6),使它们分别完成以下查询功能:
程序5.1:检索选修所有课程的学生姓名。
程序5.2:给出全体学生人数。
程序5.3:按学号给出每个学生的平均成绩。
程序5.4:按学号给出每个学生选修课程的门数。
[程序5.1]
SELECT SName FROM STUDENT WHERE (1)
(SELECT FROM COURSE WHERE (2)
(SELECT * FROM SC WHERE (3) ))
[程序5.2]
SELECT (4) FROM STUDENT
[程序5.3]
SELECT (5) FROM SC GROUP BY SNO
[程序5.4]
SELECT (6) FROM SC GROUP BY SNO
(1)
第3题:
试题二(共15分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
struct _ProtobufCIntRange{
int start_value;
unsigned orig_index;
};
typedef struct _ProtobufCIntRange ProtobufCIntRange;
int int_range_lookup (unsigned n_ranges, const ProtobufCIntRange *ranges, int value){
unsigned start,n; ∥1
start=0;
n=n_ranges;
while(n>1){ //2
unsigned mid= start+ n/2;
if(value< ranges[mid].start_value){ //3
n=mid-start; //4
}
else if(value>=ranges[mid].start value+
(int)(ranges[mid+1].orig_index-ranges[mid].orig_index){ //5
unsigned new_start= mid+1; //6
n=start+n-new_start,
start = new_start;
}
else //7
return (value - ranges[mid].start_value)+ ranges[mid],orig_index;
}
if(n>0){ //8
unsigned start_orig_index= ranges[start].orig_index;
unsigned range_size=ranges[start+1].orig_index - start_orig_index;
if (ranges[start].start_value<=value
&& value< (int)(ranges[start].start_value+ range_size》 //9, 10
return (value - ranges[start].start_value)+start_orig_index; //11
}
retum -1, //12
} //13
【问题1】(5分)
请给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】 (7分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】(3分)
请给出【问题2】中控制流图的线性无关路径。
第4题:
第5题:
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现
程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
【问题1] (6分)
请给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2] (10分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3](4分)
请给出问题2中控制流图的线性无关路径。
第6题:
论述题3:针对以下C语言程序,请按要求回答问题
下面是一个简单的C语言程序:
(1)画出该函数的程序流程图。
(2)设计测试用例,分别使函数的各种逻辑覆盖率尽量达到100%。如果认为该函数的某种逻辑覆盖率无法达到100%,需要说明原因。
(3)设计特殊的测试用例,说明各种逻辑覆盖之间的关系。
第7题:
阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。
[说明]
逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,是设计白盒测试用例的主要方法之。以下代码由C浯言书写,请按要求回答问题。
void cal (int n)
{
int g, s, b, q;
if( (n>1000) && (n<2000) )
{
g=n % 10;
s=n % 100 / 10;
b=n / 100 % 10;
q= n / 1000;
if( (q+g) =={ s + b ) )
{
printf("%-5d",n);
}
}
printf("\n");
return;
}
请找出程序中所有的逻辑判断语句。
请分析并给出分别满足100%DC(判定覆盖)和100%CC(条件覆盖)时所需的逻辑条件。
假设n的取值范围是0<n<3000,请用逻辑覆盖法为n的取值设计测试用例,使用例集满足基本路径覆盖标准。
请帮忙给出每个问题的正确答案和分析,谢谢!
第8题:
试题一(共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中控制流图的线性无关路径。
试题分析
【问题1】
判定覆盖:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真“分支和取”假“分支至少都经历一次
逻辑条件为:
(filename[len-2] == ‘.’) && (filename[len-l] == ‘c’)真,假
input = NULL真,假
output = NULL真,假
! feof(input)真,假
fread(&buffer,sizeof(unsigned char), 1,input) != 1真,假
! feof(input)真,假
【问题2】
控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:
控制流程图的环路复杂性 V(G)等于:
(1)控制流程图中的区域个数。
(2)边数-结点数+2。
(3)判定数+1。
V(G)=8
【问题3】
线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图来看,一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:
1,2,3,4,6,7,8,9,10
1,2,3,5,6,7,8,9,10
1,2,5,6,7,8,9,10
1,2,5,6,8,9,10
1,2,5,6,8,10
1,2,5,6,8,10,11,14
1,2,5,6,8,10,11,12
1,2,5,6,8,10,11,13
试题答案
【问题1】
(filename[len-2] == ‘.’) && (filename[len-l] == ‘c’)真,假
input = NULL真,假
output = NULL真,假
! feof(input)真,假
fread(&buffer,sizeof(unsigned char), 1,input) != 1真,假
! feof(input)真,假
【问题2】
V(G)=8
【问题3】
1,2,3,4,6,7,8,9,10
1,2,3,5,6,7,8,9,10
1,2,5,6,7,8,9,10
1,2,5,6,8,9,10
1,2,5,6,8,10
1,2,5,6,8,10,11,14
1,2,5,6,8,10,11,12
1,2,5,6,8,10,11,13
或者其它符合要求的等价的路径组合
第9题:
白盒测试主要进行______的覆盖测试。
A.程序设计结构
B.程序物理结构
C.程序逻辑结构
D.程序实现功能
第10题: