int getMax( int n ,int arr ) // n是数组a的长度 { int k = 0;
① ② ⑤
for ( int i = 1; i < n; i++ ) { if ( arr [i ]>arr[k] ) k = i;
}
return k; }
要求:请用基本路径的测试技术完成该函数的测试。 (1)给出程序的有向流图,并算该函数的环形复杂度。 (2)给出基本路径集和测试用例。 参考答案:
1).控制流图如下,McCabe环路复杂性为3。 (2) 1.基本路径:(少一个最多3分)
Path1: ①→②→⑥
ath2: ①→②→③→⑤→②→⑥→…
Path3: ①→②→③→④→⑤→②→⑥… 2.测试用例: (少一个最多3分) Path1: 取n=1,a[0] = 1, 预期结果:k=0
Path2: 取n=2,a[0] = 3,a [1] = 1, 预期结果:k=0
Path3: 取n=3,a [0] = 0,a[1] =1, a[2]=5 预期结果:k=2
③ ④ ⑥
① ② T F ③ T F ④ ⑤ ⑥
2. 阅读下面的程序流程图,回答后面的问题:
1) 画出上述程序的有向流图,并计算该函数的环形复杂度。 2) 给出基本路径集。
参考答案:(1)如下图所示。程序复杂度为4
1 11 6 程序流图 2,3 7 8 4,5 9 3)
(2)基本路径1:1-11
基本路径2:1 - 2, 3 - 4, 5 - 10 - 1 - 11 基本路径3:1- 2, 3 - 6 - 7 - 9 - 10 - 1 – 11 基本路径4:1- 2, 3 - 6 - 8 - 9 - 10 - 1 - 11
3. 阅读下面用伪代码编写的程序段,回答后面的问题:
start
10 input (a,b,c,d)
- 26 -
if (a > 0)&& (b > 0)
x = a + b else x = a-b endif
if (c > a)|| (d < b)
y = c + d else y = c – d endif
print(x , y) stop
(1) 画出上述程序的有向流图,并计算该函数的环形复杂度。
(2)请用基本路径的测试技术完成该函数的测试。要求给出基本路径和测试用例。 4.
- 27 -