白盒测试以下程序段 Void DoWork(int x,int y,int z) { (1) int k=0,j=0; (2) if((x>0)&&(z<10)) (3) { (4) k=x*y-1; (5) j=sqrt(k); (6) } (7) if((x==4)||(y>5)) (8) j=x*y+10; (9) j=j%3; (10) }
时间: 2024-04-01 10:34:51 浏览: 256
以下是对该程序段的白盒测试:
1. 检查变量k和j是否被正确地声明和初始化为0。
2. 检查第2行if语句的条件是否被正确评估,以确保代码块被正确执行或跳过。
3. 如果第2行if语句的条件为真,检查变量k和j是否被正确计算和赋值。特别地,应该检查第4行的乘法是否被正确执行,以及第5行的sqrt函数是否被正确调用。
4. 如果第2行if语句的条件为假,检查第7行if语句的条件是否被正确评估,以确保代码块被正确执行或跳过。
5. 如果第7行if语句的条件为真,检查变量j是否被正确计算和赋值。特别地,应该检查第8行的乘法是否被正确执行,以及第9行的求余操作是否被正确执行。
6. 如果第7行if语句的条件为假,检查第9行的求余操作是否被正确执行。
这些测试应该覆盖所有可能的路径和条件,以确保代码的正确性和可靠性。测试可以手动执行代码并检查输出,或使用自动化测试工具来执行测试。
相关问题
int DoWork(int x,int y,int z){ 1 int k=0,j=0; 2 if(( x<5 ) && ( z>9)) 3 { 4 k=x*y-1; 5 j=sqrt(k); 6 } 7 if(( x= =4 ) || ( y>5 )) 8 j=x*y+10; 9 j=j%3; 10 return j; 11 }利用这段代码进行白盒测试
好的,我们来进行白盒测试。
首先,我们需要检查可执行语句和可达语句。可执行语句是指能够被执行的语句,可达语句是指能够被至少一条测试用例覆盖到的语句。根据代码,可执行语句包括:
1. int k=0,j=0;
2. if(( x<5 ) && ( z>9))
3. {
4. k=x*y-1;
5. j=sqrt(k);
6. }
7. if(( x==4 ) || ( y>5 ))
8. j=x*y+10;
9. j=j%3;
10. return j;
可达语句包括:
1. int k=0,j=0;
2. if(( x<5 ) && ( z>9))
3. {
4. k=x*y-1;
5. j=sqrt(k);
6. }
7. if(( x==4 ) || ( y>5 ))
8. j=x*y+10;
9. j=j%3;
10. return j;
接下来,我们需要设计测试用例,覆盖所有可达语句。为了覆盖所有可达语句,我们需要设计多组测试用例,分别满足以下条件:
1. x < 5, z > 9
2. x >= 5, z <= 9
3. x = 4, y <= 5
4. x = 4, y > 5
5. x != 4, y <= 5
6. x != 4, y > 5
针对每组测试用例,我们还需要考虑边界条件。比如:
1. x = 0, y = 0, z = 10
2. x = 5, y = 0, z = 9
3. x = 4, y = 5, z = 0
最后,我们可以根据设计好的测试用例,编写测试代码进行白盒测试。测试代码如下:
```
#include <math.h>
#include <assert.h>
int DoWork(int x, int y, int z) {
int k = 0, j = 0;
if ((x < 5) && (z > 9)) {
k = x * y - 1;
j = sqrt(k);
}
if ((x == 4) || (y > 5)) {
j = x * y + 10;
}
j = j % 3;
return j;
}
int main() {
// Test case 1
assert(DoWork(0, 0, 10) == 2);
// Test case 2
assert(DoWork(5, 0, 9) == 1);
// Test case 3
assert(DoWork(4, 5, 0) == 0);
// Test case 4
assert(DoWork(2, 6, 10) == 1);
// Test case 5
assert(DoWork(4, 1, 0) == 0);
// Test case 6
assert(DoWork(6, 6, 0) == 1);
return 0;
}
```
测试结果没有报错,说明代码经过白盒测试后可以正确运行。
使用白盒测试方法,为以下程序段设计测试用例。 void Do (int X, int A, int B) { if ( (A>1)&&(B=0) ) X = X/A; if ( (A=2)||(X>1) ) X = X+1; }
针对这个程序段,可以设计以下测试用例:
1. A=0, B=0, X=任意值,期望结果:程序不执行任何操作,X的值不变。
2. A=2, B=0, X=任意值,期望结果:X的值加1。
3. A=1, B=0, X=任意值,期望结果:程序不执行任何操作,X的值不变。
4. A=1, B=1, X=任意值,期望结果:程序不执行任何操作,X的值不变。
5. A=3, B=0, X=4,期望结果:程序不执行任何操作,X的值不变。
6. A=3, B=0, X=6,期望结果:X的值加1。
7. A=2, B=1, X=任意值,期望结果:程序不执行任何操作,X的值不变。
8. A=4, B=0, X=8,期望结果:X的值除以A加1。
以上是一些基本的测试用例,可以通过白盒测试的方法来对程序进行测试。需要注意的是,测试用例的设计应该覆盖到程序的各个分支和条件,以确保程序的正确性和健壮性。
阅读全文