问题:为以下所示的程序段设计测试用例。 void DoWork (int x,int y,int z) { int k=0,j=0; if ( (x>3)&&(z<10) ) { k=x*y-1; j=sqrt(k); } if ( (x==4)||(y>5) ) { j=x*y+10; } j=j%3; } 要求: 1. 画出该程序的流程图; 2. 用语句覆盖方法对该程序写测试用例(在程序中标出所有语句块); 3. 用判定覆盖方法对该程序写测试用例; 4. 用条件覆盖方法对该程序写测试用例; 5. 用判定-条件覆盖方法对该程序写测试用例; 6. 用条件组合覆盖方法对该程序写测试用例; 7. 用路径覆盖方法对该程序写测试用例;
时间: 2023-06-14 22:06:27 浏览: 487
1. 程序流程图如下:
![程序流程图](https://i.imgur.com/er3M0zH.png)
2. 使用语句覆盖方法,可以将程序分为以下几个语句块:
- 语句块1:int k=0,j=0;
- 语句块2:if ( (x>3)&&(z<10) ) { k=x*y-1; j=sqrt(k); }
- 语句块3:if ( (x==4)||(y>5) ) { j=x*y+10; }
- 语句块4:j=j%3;
根据语句覆盖方法,需要至少执行到每个语句块一次,因此可以设计以下测试用例:
- 测试用例1:x=4,y=6,z=12,预期输出j=22%3=1
- 测试用例2:x=2,y=4,z=9,预期输出j=0
- 测试用例3:x=5,y=2,z=8,预期输出j=0
3. 使用判定覆盖方法,可以将程序分为以下几个判定块:
- 判定块1:(x>3)&&(z<10)
- 判定块2:(x==4)||(y>5)
根据判定覆盖方法,需要至少执行到每个判定块的两种情况(True和False),因此可以设计以下测试用例:
- 测试用例1:x=4,y=6,z=12,预期输出j=22%3=1
- 测试用例2:x=2,y=4,z=9,预期输出j=0
- 测试用例3:x=5,y=2,z=8,预期输出j=0
- 测试用例4:x=2,y=2,z=2,预期输出j=0
4. 使用条件覆盖方法,可以将程序分为以下几个条件:
- 条件1:x>3
- 条件2:z<10
- 条件3:x==4
- 条件4:y>5
根据条件覆盖方法,需要至少执行到每个条件的两种情况(True和False),因此可以设计以下测试用例:
- 测试用例1:x=4,y=6,z=12,预期输出j=22%3=1
- 测试用例2:x=2,y=4,z=9,预期输出j=0
- 测试用例3:x=5,y=2,z=8,预期输出j=0
- 测试用例4:x=2,y=2,z=2,预期输出j=0
- 测试用例5:x=1,y=2,z=5,预期输出j=0
5. 使用判定-条件覆盖方法,可以将程序分为以下几个组合:
- 组合1:(x>3)&&(z<10)且(x==4)||(y>5)
- 组合2:(x>3)&&(z<10)且(x!=4)&&(y<=5)
- 组合3:!(x>3)&&(z<10)且(x==4)||(y>5)
- 组合4:!(x>3)&&(z<10)且(x!=4)&&(y<=5)
- 组合5:(x>3)&&!(z<10)且(x==4)||(y>5)
- 组合6:(x>3)&&!(z<10)且(x!=4)&&(y<=5)
- 组合7:!(x>3)&&!(z<10)且(x==4)||(y>5)
- 组合8:!(x>3)&&!(z<10)且(x!=4)&&(y<=5)
根据判定-条件覆盖方法,需要至少执行到每个组合的两种情况(True和False),因此可以设计以下测试用例:
- 测试用例1:x=4,y=6,z=12,预期输出j=22%3=1
- 测试用例2:x=2,y=4,z=9,预期输出j=0
- 测试用例3:x=5,y=2,z=8,预期输出j=0
- 测试用例4:x=2,y=2,z=2,预期输出j=0
- 测试用例5:x=1,y=2,z=12,预期输出j=0
- 测试用例6:x=4,y=2,z=12,预期输出j=15%3=0
- 测试用例7:x=2,y=2,z=8,预期输出j=0
- 测试用例8:x=1,y=6,z=8,预期输出j=0
6. 使用条件组合覆盖方法,可以将程序分为以下几个条件组合:
- 条件组合1:x>3, z<10, x==4, y>5
- 条件组合2:x>3, z<10, x==4, y<=5
- 条件组合3:x>3, z<10, x!=4, y>5
- 条件组合4:x>3, z<10, x!=4, y<=5
- 条件组合5:x>3, !(z<10), x==4, y>5
- 条件组合6:x>3, !(z<10), x==4, y<=5
- 条件组合7:x>3, !(z<10), x!=4, y>5
- 条件组合8:x>3, !(z<10), x!=4, y<=5
- 条件组合9:!(x>3), z<10, x==4, y>5
- 条件组合10:!(x>3), z<10, x==4, y<=5
- 条件组合11:!(x>3), z<10, x!=4, y>5
- 条件组合12:!(x>3), z<10, x!=4, y<=5
- 条件组合13:!(x>3), !(z<10), x==4, y>5
- 条件组合14:!(x>3), !(z<10), x==4, y<=5
- 条件组合15:!(x>3), !(z<10), x!=4, y>5
- 条件组合16:!(x>3), !(z<10), x!=4, y<=5
根据条件组合覆盖方法,需要至少执行到所有条件组合一次,因此可以设计以下测试用例:
- 测试用例1:x=4,y=6,z=12,预期输出j=22%3=1
- 测试用例2:x=4,y=2,z=12,预期输出j=15%3=0
- 测试用例3:x=5,y=2,z=8,预期输出j=0
- 测试用例4:x=2,y=2,z=2,预期输出j=0
- 测试用例5:x=1,y=2,z=5,预期输出j=0
- 测试用例6:x=1,y=6,z=8,预期输出j=0
- 测试用例7:x=2,y=4,z=9,预期输出j=0
- 测试用例8:x=2,y=2,z=8,预期输出j=0
7. 使用路径覆盖方法,可以列出以下路径:
- 路径1:1 → 2 → 4
- 路径2:1 → 2 → 3 → 4
- 路径3:1 → 2 → 3 → 4
- 路径4:1 → 4
根据路径覆盖方法,需要至少执行到每条路径一次,因此可以设计以下测试用例:
- 测试用例1:x=4,y=6,z=12,预期输出j=22%3=1
- 测试用例2:x=4,y=2,z=12,预期输出j=15%3=0
- 测试用例3:x=5,y=2,z=8,预期输出j=0
- 测试用例4:x=1,y=2,z=5,预期输出j=0
- 测试用例5:x=2,y=2,z=2,预期输出j=0
阅读全文