当前位置:文档之家› 白盒测试方法实验报告

白盒测试方法实验报告

实验报告
课程名称软件测试题目白盒方法测试
院系信息工程学院
班级计算机
学号
学生姓名
指导老师
日期 2019年
一、实验题目
白盒方法测试
二、实验目的
使学生能够更进一步理解白盒测试方法。

能够区分语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖所达到的覆盖层次,并能用各层次覆盖的设计思想设计相应的测试用例。

区分语句覆盖、判定覆盖、条件覆盖的异同,掌握其测试用例设计方法和程序特征;
三、实验环境
Windows系统平台和Dev-C++开发环境。

四、实验内容
某程序的逻辑设计如下图所示,自行分析程序结构,请为该程序设计测试用例使其分别满足:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖,并按照测试用例测试程序,完善测试用例各项内容的填写。

#include <iostream>
using namespace std;
int main()
{
int F=0;
int T=0;
int x,y;
cin>>x>>y;
if(x>=50&&y>=50)
{F=1;}
if(x+y>80)
{
T=2;
}
else
{
T=3;
}
cout<<F<<endl<<T<<endl;
}
4
五、实验步骤
1.依据程序逻辑结构图分析程序结构,找出程序的各种组合。

2.依据实验要求设计测试用例使测试达到特定覆盖。

3.选择自己熟悉的语言编写程序。

4.用各种测试用例测试程序。

5.1语句覆盖
特点:语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每
条语句至少被执行一次。

在本例中,可执行语句是指语句块1到语句块4中的语
句。

优点:可以很直观地从流程图得到测试用例,可以测试所有的执行语句。

缺点:语句覆盖不能准确的判断运算中的逻辑关系错误。

假设第一个判断语
句if(x>=50 && y>=50)中的“&&”被错误地写成了“||”,即if(x>=50 || y>=50),使
用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖。

在六种逻辑覆盖标准中,语句覆盖标准最弱的。

5.2判定覆盖
特点:判定覆盖(分支覆盖)要求设计足够多的测试用例,运行被测程序,使得程序中的每个判断的“真”和“假”都至少被执行一次。

即:程序中的每个分支至少执行一次。

在本例中共有两个判断if(x>=50 && y>=50)(记为P1)和if(x+y>80)(记为P2)。

两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。

优点:由于可执行语句要不就在判定的真分支,要不就在假分支上,判定覆盖比语句覆盖要多几乎一倍的测试路径,所以,只要满足了判定覆盖标准就一定满足语句覆盖标准。

因此,判定覆盖比语句覆盖强。

缺点:判定覆盖会忽略条件中取或(or)的情况。

假设第一个判断语句if(x>=50 && y>=50)中的“&&”被程序员错误地写成了“||”,使用上面设计出来的一组测试用例,仍然可以达到100%的判定覆盖,所以判定覆盖也无法发现上述的逻辑错误。

5.3条件覆盖
特点:条件覆盖要求设计足够多的测试用例,运行被测程序,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

在本例中有两个判断if(x>=50 && y>=50)(记为P1)和if(x+y>80)(记为P2),共计三个条件x>=50(记为C1)、y>=50(记为C2)和x+y>80(记为C3)。

时也到达了100%判定覆盖的标准。

但并不能保证达到100%条件覆盖标准的测
的语句覆盖标准了。

优点:显然条件覆盖比判定覆盖,增加了对符合判定情况的测试。

缺点:要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。

5.4判定-条件覆盖
特点:设计足够多的测试用例,运行被测程序,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。

即同时满足100%判定覆盖和100%条件覆盖的标准。

用例设计:
足了一次。

优点:达到100%判定-条件覆盖标准一定能够达到100%条件覆盖、100%判定覆盖和100%语句覆盖。

判定-条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。

缺点:未考虑条件的组合情况。

5.5条件组合覆盖
特点:要求设计足够多的测试用例,运行被测程序,使得被测试程序中每个判定中条件结果的所有可能组合至少执行一次。

注意:
1)条件组合只针对同一个判断语句内存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。

2)不同的判断语句内的条件取值之间无需组合。

3)对于单条件的判断语句,只需要满足自己的所有取值即可。

优点:多重条件覆盖准则满足判定覆盖、条件覆盖、判定-条件覆盖准则。

缺点:线性地增加了测试用例的数量。

但上面的例子中,只走了三条路径a-c-e-f、a-c-d-f和a-b-d-f,而本例的程序存在四条路径。

所以条件组合覆盖不能保证所有的路径被执行。

5.6路径覆盖
特点:设计足够的测试用例,运行被测程序,覆盖程序中所有可能的路径。

优点:这种测试方法可以对程序进行彻底的测试,比前面五种覆盖面都广。

100%满足路径覆盖,一定能100%满足判定覆盖标准(因为路径就是从判断的某条分支走的)。

缺点:100%满足路径覆盖,但并不一定能100%满足条件覆盖(C2只取到了真),也就不能满足100%条件组合覆盖。

经过分析,它们之间的关系可以用下图表示(路径覆盖在该图无法表示):
从上例可知,单独采用任何一种逻辑覆盖方法都不能完全覆盖所有的测试用例,任何一个高效的测试用例,都是针对具体测试场景的。

逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。

所以在实际测试用例设计中,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。

要根据不同需要和不同测试用例设计特征,将不同的设计方法组合起来,交叉使用,以实现最佳的测试用例输出。

六、实验总结
本次实验通过用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖,完成了示例程序的白盒测试。

区分了各个覆盖所达到的覆盖层次,并能用各层次覆盖的设计思想设计相应的测试用例。

对课本上的知识进行了一次实践,使我对白盒测试及各种覆盖有了更加清楚的认识。

在实验过程中遇到的问题,通过询问同学也得到了更加清楚地认识。

同时也认识了自己的不足,在以后会更加认真的学习软件测试的知识。

相关主题