问答题 下图为对4个已知数字进行排序的程序流程图。
问答题 计算它的环路复杂度。
【正确答案】计算它的环路复杂度。 由程序流程图可以看出判定结点个数P=6,所以,由环路复杂性算法可以得到V(G)=6+1=7。
【答案解析】
问答题 为完成基本路径测试,求它的一组独立路径。
【正确答案】为完成基本路径测试,求它的一组独立路径。 由环路复杂度为7,则可以得到7条相互独立的路径,它们分别是: Path1:0—1—13—19 Path2:0—2—3—14—19 Path3:0一2—4—5—15—19 Path4:0—2—4—6—7—16—19 Path5:0—2—4—6—8—9—17—19 Path6:0—2—4—6—8—10—11—18—19 Path7:0—2—4—6—8—10—12
【答案解析】
问答题 用基本路径测试法为下列程序设计测试用例。 1 Void sort(int iRecordNum, int itype) 2 { 3 int x=0; y=0; 4 while(iRecordNum>0) 5 { 6 if(itype==0) 7 {x=y+2; break;} 8 else 9 {if(itype==1) 10 x=y+10; 11 else 12 x=y+20; 13 } 14 } 15 }
【正确答案】根据上面源程序画出对应的程序流程图及控制流图,如下图1和图2所示。
[*]
图1 程序流程图

[*]
图2 控制流程图

2.计算得到的控制流图G(图2)的环路复杂性V(G):
V(G)=P+1=3(判定结点数)+1=4
V(G)=E-N+2=10-8+2=4
V(G)=4(区域数)
这里的环路复杂性“4”也代表了构成基本路径集的独立路径,V(G)=4恰好为程序中的独立路径条数。
3.确定线性无关的路径的基本集。由该程序的环路复杂性为4,可确定该图有4条线性无关的基本路径集,分别是:
Path1:4—15
Path2:4—6—7—15
Path3:4—6—9—10—14—4—15
Path4:4—6—9—12—14—4—15
4.生成测试用例,确保基本路径集中每条路径的执行。根据判定结点给出的条件选择适当的数据以保证某一条路径可以被测试到。满足上面基本路径集的测试用例是:
(1)测试用例1——Path1(4—15)
输入数据:iRecordNum=0,或任取iRecordNum<0的某一个值期望输出结果:x=0
(2)测试用例2——Path2(4—6—7—15)
输入数据:iRecordNum=1,itype=0
期望输出结果:x=2
(3)测试用例3——Path3(4—6—9—10—14—4—15)
输入数据:iRecordNum=1,itype=1
期望输出结果:x=10
(4)测试用例4——Path4(4—6—9—12—14—4—15)
输入数据:iRecordNum=1,itype=2
期望输出结果:x=20
【答案解析】
问答题 用基本路径测试法说明以下C程序的用例设计过程。 void selectSort(int V[], int n) { for(int i=0; i<n-1; i++) { int k=i; for(int j=i+1; j<n; j++) if(V[j]<V[k]) k=j; if(k!=i) { int work=V[i]; V[i]=V[k]; V[k]=work; } } }
【正确答案】(1)以详细设计或源代码作为基础,导出程序的控制流图。即将上述程序转换为如下图所示的控制流图,用数字标号标识各个控制流。
[*]
selectSort 程序的控制流图

(2)计算得到的控制流图G的环路复杂性V(G)。
对selectSort程序的控制流图11,可以多种算法求V(G):
V(G)=5(区域数)
V(G)=14(边数)-11(结点数)+2=5
V(G)=4(判定结点数)+1=5
(3)确定线性无关的路径的基本集。根据环路复杂性为5,可确定该图有5条线性无关的基本路径集,分别是:
Path1:1—3
Path2:1—2—5—8…
Path3:1—2—5—9…
Path4:1—2—4—6…
Path5:1—2—4—7…
(4)生成测试用例,确保基本路径集中每条路径的执行。根据判定结点给出的条件选择适当的数据以保证某一条路径可以被测试到。满足上面基本路径集的测试用例是:
Path1:1—3,取n=1
Path2:1—2—5—8—3,取n=2;预期结果:路径5—8—3不可到达
Path3:1—2—5—9—3,取n=2;预期结果:路径5—9—3不可到达
Path4:1—2—4—6—5—8—3,取n=2,V[0]=2,V[1]=1;预期结果:k=1,V[0]=1,V[1]=2
Path4:1—2—4—6—5—9—3,取n=2,V[0]=2,V[1]=1;预期结果:k=1,路径9—3不可到达
Path5:1—2—4—7—5—8—3,取n=2,V[0]=2,V[1]=1;预期结果:k=0,路径8—3不可到达
Path5:1—2—4—7—5—9—3,取n=2,V[0]=2,V[1]=1;预期结果:k=0,V[0]=1,V[1]=2
【答案解析】