1.逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
gz_open (const char *mode)
{
char * p = (char*)mode; //1
char fmode[4];
char * m = fmode;
char smode = ’\0’;
char level = ’\0’;
int strategy = 0;
do {
if (*p == ’r’) //2
smode = ’r’; //3
if (*p >= ’0’&& *p <= ’9’) { //4,5
level = *p - ’0’; //6
} else if (*p == ’f’) { //7
strategy = 1; //8
} else { //9
*m++ = *p;
}
*p++; //10
}while (m != fmode + sizeof(fmode)); //11
} //12
【问题1】
请给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】
假设函数gz_open的参数mode是由26个小写字母’a’-’z’、数字’0’-’9’以及空格组成的字符串,请使用基本路径测试法构造1个测试用例,使之覆盖所有基本路径。