题目详情

逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由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个测试用例,使之覆盖所有基本路径。

正确答案及解析

正确答案
解析

本题主要考查的是逻辑覆盖的相关内容。

【问题1】

判定覆盖即分支覆盖,对于每一个判定,都至少要取得一次真值和假值。在本题中,我们从程序中不难找出所有的逻辑判断语句,很显然在题目给出的程序中,包含的逻辑判断语句有:*p == ’r’、*p >= ’0’&& *p <= ’9’、*p == ’f’及m != fmode + sizeof(fmode)。那么首先是判定*p == ’r’,应分别设置其为真与为假的情况;然后是*p >= ’0’&& *p <= ’9’,设置其为真,然后设置其为假,在为假的情况下,出现判定*p == ’f’,分别设计其为真和假;最后是m != fmode + sizeof(fmode),分别设置真、假即可。

【问题2】

根据题目程序的意思,我们可以知道其控制流图如下所示:

中级软件评测师,章节练习,中级软件评测师案例分析

而它的V(G)=6。

【问题3】

本问题考查白盒测试用例设计方法中的基本路径法,涉及到的知识点包括:根据控制流程图和环路复杂度设计测试用例。注意环路复杂度只是测试用例数的上限,

本题中程序的环路复杂度为6 ,因此测试用例上限为6,但本题程序比较特殊,只需要一个测试用例即可实现。例如构造一个6个字符构成的字符串(设为x,y,z,u,v,w6个字符),使得每个字符覆盖一条基本路径即可。其中x=’r’,y=’f’,z属于[’0’ - ’9’],u<’0’,v>’9’并且V!=‘f’,w任意,这6个字符可以任意排列

包含此试题的试卷

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.P(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)P(S2)和V(S3)
  • B.P(S1)V(S2)和V(S3)
  • C.V(S1)V(S2)和V(S3)
  • D.P(S1)P(S2)和V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S4)和V(S4)V(S5)
  • B.V(S5)和P(S4)P(S5)
  • C.V(S3)和V(S4)V(S5)
  • D.P(S3)和P(S4)V(P5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S3)和V(S4)V(S5)
  • B.V(S3)和P(S4)P(S5)
  • C.P(S3)和P(S4)P(S5)
  • D.V(S3)和V(S4)V(S5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.V(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案

相关题库更多 +