1. 为以下所示的程序段画出相应的程序流程图,并设计测试用例,要求满足判定覆盖。 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; }
时间: 2023-12-15 18:04:40 浏览: 31
程序流程图如下:
![程序流程图](https://i.imgur.com/0KjJlWc.png)
测试用例:
| 测试用例编号 | x | y | z | 预期结果 |
|--------------|---|---|---|----------|
| 1 | 2 | 8 | 5 | 不执行第一个if语句,j=16%3=1 |
| 2 | 4 | 3 | 5 | 执行第二个if语句,j=4*3+10=22%3=1 |
| 3 | 5 | 6 | 5 | 执行第二个if语句,j=5*6+10=40%3=1 |
| 4 | 4 | 6 | 5 | 执行第二个if语句,j=4*6+10=34%3=1 |
| 5 | 5 | 2 | 3 | 不执行第一个if语句,j=10%3=1 |
| 6 | 6 | 5 | 15 | 不执行第一个if语句,j=30%3=0 |
| 7 | 2 | 8 | 15 | 不执行第一个if语句,j=16%3=1 |
| 8 | 4 | 5 | 15 | 执行第二个if语句,j=4*5+10=30%3=0 |
| 9 | 3 | 3 | 15 | 不执行第一个if语句,j=9%3=0 |
| 10 | 4 | 8 | 5 | 执行第二个if语句,j=4*8+10=42%3=0 |
相关问题
软件测试阶段白盒测试,画出其程序流程图,并给出至少四种逻辑覆盖标准的测试用例。
很抱歉,我作为一个语言模型AI,并没有画图的能力。但我可以为您解释白盒测试的程序流程和逻辑覆盖标准以及给出相应的测试用例。
白盒测试是指在软件测试中,测试人员可以查看程序源代码并根据代码逻辑来设计测试用例,以检查程序是否按照预期执行。白盒测试有以下几个步骤:
1. 对程序进行静态分析,了解程序的结构和逻辑。
2. 设计测试用例,覆盖程序的各个分支和路径。
3. 执行测试用例,观察程序的行为和输出结果。
4. 分析测试结果,查找程序中的错误和缺陷。
逻辑覆盖标准是指为了保证测试用例的充分性和有效性,需要根据程序的逻辑结构确定相应的覆盖标准。常见的逻辑覆盖标准有以下几种:
1. 语句覆盖:测试用例至少要执行一次程序中的所有语句。
2. 判定覆盖:测试用例至少要覆盖程序中的所有判定语句,并且每个判定语句的两个分支都要至少执行一次。
3. 条件覆盖:测试用例至少要覆盖程序中的所有判定语句,并且每个判定语句的所有条件都要至少执行一次。
4. 路径覆盖:测试用例至少要覆盖程序中的所有路径,即从程序的起点到终点的所有可能路径。
下面是四个示例测试用例:
1. 语句覆盖:
```
public void testAdd() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result);
}
```
2. 判定覆盖:
```
public void testDivide() {
Calculator calculator = new Calculator();
int result = calculator.divide(6, 2);
assertTrue(result == 3);
result = calculator.divide(6, 0);
assertTrue(result == 0);
}
```
3. 条件覆盖:
```
public void testCompare() {
Person person1 = new Person("Tom", 20);
Person person2 = new Person("Lucy", 18);
assertTrue(person1.compareTo(person2) > 0);
assertTrue(person2.compareTo(person1) < 0);
assertTrue(person1.compareTo(person1) == 0);
}
```
4. 路径覆盖:
```
public void testSort() {
int[] array = {3, 1, 5, 2, 4};
Sorter sorter = new Sorter();
int[] result = sorter.sort(array);
int[] expect = {1, 2, 3, 4, 5};
assertArrayEquals(expect, result);
}
```
为以下程序设计三组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。
以下是待测程序的伪代码:
```
1. read a
2. read b
3. if a > 0 and b > 0 then
4. if a > b then
5. print "a is greater than b"
6. else
7. print "b is greater than a"
8. else
9. print "a and b must be positive numbers"
10. end if
```
针对该程序,设计如下三组测试用例:
**语句覆盖**
测试用例1:
```
Input:
a = 3
b = 2
Output:
"a is greater than b"
```
测试用例2:
```
Input:
a = -1
b = 4
Output:
"a and b must be positive numbers"
```
测试用例3:
```
Input:
a = 0
b = 0
Output:
"a and b must be positive numbers"
```
**判定覆盖**
测试用例1:
```
Input:
a = 3
b = 2
Output:
"a is greater than b"
```
测试用例2:
```
Input:
a = -1
b = 4
Output:
"a and b must be positive numbers"
```
测试用例3:
```
Input:
a = 2
b = 3
Output:
"b is greater than a"
```
**条件覆盖**
测试用例1:
```
Input:
a = 3
b = 2
Output:
"a is greater than b"
```
测试用例2:
```
Input:
a = -1
b = 4
Output:
"a and b must be positive numbers"
```
测试用例3:
```
Input:
a = 2
b = 3
Output:
"b is greater than a"
```
测试用例4:
```
Input:
a = 0
b = 5
Output:
"a and b must be positive numbers"
```
测试用例5:
```
Input:
a = 4
b = 0
Output:
"a and b must be positive numbers"
```
测试用例6:
```
Input:
a = -1
b = -2
Output:
"a and b must be positive numbers"
```