2. 现有控制流图如下
(1) 根据节点覆盖准则,给出测试路径 (2) 根据边覆盖准则,给出测试路径 (3) 根据边对覆盖准则,给出测试路径
3. 写出下图的所有简单路径和主路径
4. 根据控制流图,回答以下问题。
(1) 根据边覆盖准则,找出所有的测试路径 (2) 根据边对覆盖准则,找出所有的测试路径 (3) 根据主路径覆盖准则,找出所有的测试路径
5. 简述什么是所有定义覆盖、所有使用覆盖、所有du路径覆盖,并根据下图写出变量X的所
有定义覆盖、所有使用覆盖、所有du路径覆盖
6. 根据源代码,完成以下问题。
一个计算三个数中最大数的程序 main()
{int num1,num2,num3,max;
printf(\ scanf(\ if (num1>num2) max=num1; else max=num2; if (num3>MAX)
max=num3; printf(\}
(1) 给出对应的流程图
(2) 计算控制流图复杂度V(G)
(3)写出所有的独立路径,并设计测试用例
7. 根据源代码请回答以下问题。 void sort( int Num, int Type ){ int x = 0; int y = 0; while (Num > 0) { if( Type = = 0) x = y + 2; else {
if( Type = = 1 )
x = y + 5; else x = y + 10; } Num--; } }
(1) 请画出控制流图并计算控制流图复杂度V(G) 。
(2) 找出独立路径。
(3) 请使用基本路径测试法设计测试用例。 (4) 根据控制流图,找出变量x和y的DU path
8. 根据控制流图,回答以下问题
(1)根据边覆盖准则,找出所有的测试路径 (2)根据边对覆盖准则,找出所有的测试路径 (3)根据主路径覆盖准则,找出所有的测试路径
9. 在三角形计算中,要求三角型的三个边长:A、B 和C。当三边不可能构成三角形时提示 错误, 可构成三角形时计算三角形周长。若是等腰三角形,显示“等腰三角形”,若是等边 三角形,则显示“等边三角形”。(15分) (1) 写出程序伪代码,画出控制流程图
(2)计算圈复杂度V(g) (3)找出基本测试路径
10. 以下代码用于判断闰年,由C 语言书写。其对应的控制流图如下图所示。 请按要求回答问题。
int isLeap(int year){
int leap;
if (year % 4 = = 0){ if (year % 100 = = 0){
if ( year % 400 = = 0) leap = 1; else leap = 0; } else leap = 1; } else
leap = 0; return leap; }
(1)请画出控制流图,并计算圈复杂度V(G)。 (2)找出独立路径。
解答:
1. 1、语句覆盖
满足语句覆盖的情况是: 执行路径:ace 选择用例: [(2,0,4),(2,0,3)]
2、判定覆盖
覆盖情况:共有两个判定,应执行路径: ace ∧ abd 或: acd ∧ abe 选择用例
[(2,0,4),(2,0,3)] ace [(1,1,1),(1,1,1)] abd
3、条件覆盖
应满足以下覆盖情况:
判定一: A>1, A≤1, B=0, B≠0
判定二: A=2, A≠2, X>1, X≤1 选择用例: [(2,0,4),(2,0,3)] [(1,1,1),(1,1,1)]
4、判定/条件覆盖
应满足以下覆盖情况: 条件: A>1, A≤1, B=0, B≠0 A=2, A≠2, X>1, X≤1 应执行路径
ace ∧ abd 或 acd ∧ abe 选择用例:
[(2,0,4),(2,0,3)](ace) [(1,1,1),(1,1,1)] (abd)
2. (1) 测试路径:[ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 5, 4, 6 ] (2) 测试路径:[ 0, 1, 2, 3, 6 ] [ 0, 2, 4, 5, 4, 6 ]
(3) 测试路径:[ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 6 ] [ 0, 2, 3, 6 ] [ 0, 2, 4, 5 , 4, 5, 4, 6 ]
3. 简单路径 : [ 0, 1, 3, 0 ], [ 0, 2, 3, 0], [ 1, 3, 0, 1 ],[ 2, 3, 0, 2 ], [ 3, 0, 1, 3 ], [ 3, 0, 2, 3 ], [ 1, 3, 0, 2 ],[ 2, 3, 0, 1 ], [ 0, 1, 3 ], [ 0, 2, 3 ], [ 1, 3, 0 ], [ 2, 3, 0 ],[ 3, 0, 1 ], [3, 0, 2 ], [ 0, 1], [ 0, 2 ], [ 1, 3
], [ 2, 3 ], [ 3, 0 ], [0], [1], [2], [3] 主路径 : [ 0, 1, 3, 0 ], [ 0, 2, 3, 0], [ 1, 3, 0, 1 ],[ 2, 3, 0, 2 ], [ 3, 0 , 1, 3 ], [ 3, 0, 2, 3 ], [ 1, 3, 0, 2 ],[ 2, 3, 0, 1 ]
4. 边覆盖 [ 0, 1, 2, 3, 6 ] [ 0, 2, 4, 5,4,6 ]
边对覆盖
[ 0, 1, 2, 3, 6 ] [ 0, 2, 3, 6 ] [ 0, 2, 4, 6 ] [ 0, 1, 2, 4, 5,4,5,4,6 ] 主路径 [ 0, 1, 2, 3, 6 ] [ 0, 1, 2, 4, 5 ] [ 0, 1, 2, 4, 6 ] [ 0, 2, 3, 6 ]
[ 0, 2, 4, 5] [ 0, 2, 4, 6 ] [ 5, 4, 6 ] [ 4, 5, 4 ] [ 5, 4, 5 ]
5. 所有定义覆盖: 对于所有的变量,测试用例集T可以至少到达所有定义 所有使用覆盖: 对于所有的变量,测试用例集T可以到达所有使用
所有du路径覆盖: 对于所有的变量,测试用例集T可以访问所有定义-使用路径 所有定义覆盖:[ 0, 1, 3, 4 ]
所有使用覆盖:[ 0, 1, 3, 4 ][ 0, 1, 3, 5 ]
所有du路径覆盖:[ 0, 1, 3, 4 ][ 0, 2, 3, 4 ][ 0, 1, 3, 5 ][ 0, 2, 3, 5 ]