案例分析题

阅读下列C程序,回答下列问题。

问答题

请针对上述C程序给出满足100%DC (判定覆盖)所需的逻辑条件。

【正确答案】

buf_c[i]<7||buf_c[i]>14;i>=32;
buf_len>512;buf_len<=512
buf_len==0;buf_len!=0
i=total_bytes
buf_c[i]==’\0’; buf_c[i]!=’\0’
buf_c[i]<7||buf_c[i]>14;buf_c[i]>=7&&buf_c[i]<=14
i>=32;i<32

判定覆盖:设计足够的测试用例,使得使程序中的每个判定至少都获得一次“真值”或“假值”。又称分支覆盖:使程序中的每一个取“真”分支和取“假”分支至少经历一次。

【答案解析】

本题中涉及到判定的点的条件项分别为:buf_len>512;buf_len==0;i14;i>=32;
buf_len>512;buf_len<=512
buf_len==0;buf_len!=0
i=total_bytes
buf_c[i]==’\0’; buf_c[i]!=’\0’
buf_c[i]<7||buf_c[i]>14;buf_c[i]>=7&&buf_c[i]<=14
i>=32;i<32

问答题

请画出上述程序的控制流图,并计算其控制流图的环路复杂度v(G)。

【正确答案】

【答案解析】

控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:

问答题

请给出问题2中控制流图的线性无关路径。

【正确答案】

1)1、2、4、5、13
2)1、3、4、5、13
3)1、3、4、6、13 (1、2、4、6、13)
4)1、3、4、6、7、8、13 (1、2、4、6、7、8、13)
5)1、3、4、6、7、9、11、12、13 (1、2、4、6、7、9、11、12、13)
6)1、3、4、6、7、9、10、11、12、13 (1、2、4、6、7、9、10、11、12、13)
7)1、3、4、6、7、9、10、6… (1、2、4、6、7、9、10、6…)
8)1、3、4、6、7、9、10、11、6… (1、2、4、6、7、9、10、11、6…)

【答案解析】

线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图来看,一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:
本题由于主干有分支,所以线性无关路径可能有多种组合。