2012年下半年软考《软件评测师》下午试卷(参考答案版)

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
4

试题二(共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】中控制流图的线性无关路径。