有一段程序如下。int func(int a,b,c) { int k=1; if ( (a>0) ||(b<0) ||(a+c>0) )k=k+a;否则 k=k+b;如果 (c>0) k=k+c;返回 k;} 根据下列问题进行作答: 1)绘制出程序流程图 2)绘制出控制流图,并计算环形复杂度 3)设计一组满足判定覆盖的测试用例 4)设计一组满足条件覆盖的测试用例(列出所有条件,并设计测试用例)
时间: 2024-02-23 16:02:22 浏览: 75
PHP调试工具 Kint
抱歉,作为一个语言模型 AI,我无法绘制程序流程图和控制流图,但我可以回答您的问题并提供相应的测试用例。
1. 绘制程序流程图如下:
```
+-----------+
| k = 1 |
+-----------+
|
|
v
+-----------+
| a > 0 |
+-----------+
|
yes|
|
v
+-----------+
| k = k + a |
+-----------+
|
|
v
+-----------+
| c > 0 |
+-----------+
|
yes|
|
v
+-----------+
| k = k + c |
+-----------+
|
|
v
+-----------+
| return k |
+-----------+
|
|
v
END
```
2. 绘制控制流图如下:
```
+-----------+
| |
| 1 |
| |
+-----+-----+
|
+--------+-------+
| |
| a > 0 |
| |
+--------+-------+
|
yes|
|
+--------+-------+
| |
| k = k + a |
| |
+--------+-------+
|
|
v
+--------+-------+
| |
| c > 0 |
| |
+--------+-------+
|
yes|
|
+--------+-------+
| |
| k = k + c |
| |
+--------+-------+
|
|
v
+--------+-------+
| |
| return k |
| |
+----------------+
环形复杂度为2。
3. 判定覆盖测试用例:
- a>0, b=0, c=0
- a=0, b<0, c=0
- a=-1, b=0, c=1
- a=0, b=0, c=1
4. 条件覆盖测试用例:
- a>0, b=0, c=0
- a=0, b<0, c=0
- a=-1, b=0, c=1
- a=0, b=0, c=1
- a<=0, b>=0, c<=0
- a>0, b>=0, c<=0
- a<=0, b<0, c<=0
- a>0, b<0, c<=0
- a<=0, b>=0, c>0
- a>0, b>=0, c>0
- a<=0, b<0, c>0
- a>0, b<0, c>0
其中,第1-4个测试用例覆盖了所有判定,第5-12个测试用例覆盖了所有条件。
阅读全文