3、(35分)有一段程序如下。 int func(int a,b,c) { int k=1; if ( (a>0) || (b<0) || (a+c>0) ) k=k+a; else k=k+b; if (c>0) k=k+c; return k; } 根据下列问题进行作答: 1)绘制出程序流程图 2)绘制出控制流图,并计算环形复杂度 3)设计一组满足判定覆盖的测试用例 4)设计一组满足条件覆盖的测试用例(列出所有条件,并设计测试用例)
时间: 2023-12-25 22:03:31 浏览: 169
1) 程序流程图如下:
```
START
|
k = 1
|
if (a > 0) || (b < 0) || (a + c > 0) then
|
k = k + a
|
else
|
k = k + b
|
endif
|
if (c > 0) then
|
k = k + c
|
endif
|
return k
|
END
```
2) 控制流图如下,其中的节点编号对应代码行号:
```
1 2 3
START -> k=1 -> if
| | / \
4 5 / \
| | 6a 6b
| | | |
| else | |
| | 7 8
| | \ /
| | \ /
9 10 if
| | |
| | 11
| | |
| | 12
| | |
| | END
| | |
| | 13
| | |
| | END
| | |
| | 14
| | |
| | END
| | |
| | 15
| | |
| | END
| | |
| | 16
| | |
| | END
| | |
17 END END
```
环形复杂度为 4。
3) 设计一组满足判定覆盖的测试用例:
| a | b | c | 预期输出 |
|---|---|---|---------|
| 1 | 1 | 0 | 2 |
| 0 | 1 | 0 | 2 |
| -1| 0 | 1 | 2 |
| 0 | 0 | 0 | 1 |
| 0 | 0 |-1 | 0 |
4) 设计一组满足条件覆盖的测试用例:
条件包括:a>0, b<0, a+c>0, c>0。
| a | b | c | 预期输出 |
|---|---|---|---------|
| 1 | 0 |-1 | 1 |
| 1 |-1 |-1 | 2 |
| 0 |-1 | 1 | 1 |
| 0 |-1 |-1 | 0 |
| 1 | 1 | 1 | 2 |
阅读全文