软件质量保证与测试.实验三.逻辑覆盖测试用例设计


0 目录

1 逻辑覆盖测试用例设计

1.1 逻辑覆盖测试用例设计

1.1.1 实验目的

(1) 能够依据程序画出程序流程图;
(2) 能够理解常用覆盖方法的内涵;
(3) 能够理解常用覆盖方法的强弱关系;
(4) 能够使用常用覆盖方法设计测试用例。

1.1.2 实验预习

在白盒测试方法中,有选择地执行程序中某些最有代表性的通路是对穷举测试的唯一可行替代方法。这些测试方法主要包括语句覆盖、判断覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖的情况。

1.1.3 实验内容及要求

任务1要求测试的程序片段如下:

int testing(int x, int y)
{
int software = 0;
if ((x > 0) && (y > 0))
{
software = x + y + 10;
}
else
{
software = x + y - 10;
}

if (software < 0)
{
software = 0;
}
return software;
}

任务2要求测试的程序片段如下:

int Test(int i_count, int i_flag)
{
int t_temp = 1;
while(i_count > 0)
{
if (0 == i_flag)
{
i_temp = i_count + 100;
break;
}
else
{
if (1 == i_flag)
{
i_temp = i_temp * 10;
}
else
{
i_temp = i_temp * 20;
}
}
i_count--;
}

return i_temp;
}

要求绘制出所有这些程序的程序流程图,并给出6种逻辑覆盖要求下的测试用例,设计测试程序,给出测试结果。

1.1.4 实验总结

​任务1​​​ 1流程图展示
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_测试用例
2测试用例表
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_测试用例_02
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_测试程序_03
3测试代码展示

int main(void){
int a[]={1,1,1,-1};
int b,length;
length=sizeof(a)/sizeof(a[0]);
for(int i=0;i<length;i+=2){
b=testing(a[i],a[i+1])
printf(“%d\t”,b);
}
return 0;
}
int testing(int x, int y)
{
int software = 0;
if ((x > 0) && (y > 0))
{
software = x + y + 10;
}
else
{
software = x + y - 10;
}

if (software < 0)
{
software = 0;
}
return software;
}

4测试结果展示
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_测试程序_04
​​​任务2​​​ 1流程图展示
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_测试用例_05
2测试用例表
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_测试用例_06
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_条件覆盖_07
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_条件覆盖_08
3测试代码展示

int main(void){
int a[]={-1,1,1,0,1,1,1,2};
int b,length;
length=sizeof(a)/sizeof(a[0]);
for(int i=0;i<length;i+=2){
b=testing(a[i],a[i+1])
printf(“%d\t”,b);
}
return 0;
}

int Test(int i_count, int i_flag)
{
int t_temp = 1;
while(i_count > 0)
{
if (0 == i_flag)
{
i_temp = i_count + 100;
break;
}
else
{
if (1 == i_flag)
{
i_temp = i_temp * 10;
}
else
{
i_temp = i_temp * 20;
}
}
i_count--;
}

return i_temp;
}

4测试结果展示
软件质量保证与测试实验(实验三.逻辑覆盖测试用例设计)_测试程序_09
4、实验总结
(1) 请详述这6种逻辑覆盖的要求是什么;

1语句覆盖
设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次

2判断覆盖
设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次

3条件覆盖
设计足够多的测试用例,使得被测试程序中的每个判断语句中的每个逻辑条件的可能值至少被满足一次。
也可以描述成:
设计足够多的测试用例,使得被测试程序中的每个逻辑条件的可能值至少被满足一次。

4判定/条件覆盖
设计足够多的测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准

5条件组合覆盖
设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合至少被满足一次。

6路径覆盖
设计足够多的测试用例,使得被测试程序中的每条路径至少被覆盖一次。

(2) 请比较这6中逻辑覆盖的强弱关系;

六种逻辑覆盖从弱到强的排列顺序是:
语句覆盖->判定覆盖->条件覆盖->判定-条件覆盖->条件组合覆盖->路径覆盖

(3) 请结合实验谈一下循环测试的简化过程。

简化循环的假设
不进入循环
只进入一次循环

4 实验四

博客地址: