●阅读下列说明,回答问题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
}
retun-1,//12
}//13
【问题1】
请给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】
请给出【问题2】中控制流图的线性无关路径。
各省软考办 | ||||||||||