白盒测试方法之逻辑覆盖

单元测试基本

    是指对软件中的最小可测试单元进行检查和验证。

  单元测试是软件测试中最基础的测试,集成测试、功能测试和系统测试都建立在单元测试之上。

   单元测试的对象是构成软件产品或系统的最小的独立单元,如封装的类或对象、独立的函数、进程、子过程、组件或模块等。

单元测试的用例设计要求

 对于单元测试用例的设计和程序的实现过程,主要集中在白盒测试方法之上,并力求达到下列测试要求
 1.对程序模块所有独立的执行路径至少要测试一次。
 2.对所有逻辑判定,其结果为真、假两种情况至少要测试一次。
 3.对程序进行边界检查(常见的如数据越界检验)。
 4.检验内部数据结构的有效性。

逻辑覆盖法

   逻辑覆盖法是白盒测试中最主要的测试方法
   
   逻辑覆盖分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖,其基本思想不同,产生的测试用例不同,覆盖范围也有所不同
   
   以代码为例介绍一下以下几种逻辑覆盖方法:
                  Dim a,b As Integer
                  Dim c As Double
                  If (a > 0 AND b > 0) Then
                  If (a>1OR c>1) Then

我将代码逻辑转换为流程图如下:
白盒测试方法之逻辑覆盖_第1张图片

语句覆盖

首先我们来说语句覆盖:
基本思想:设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。
每个可执行语句:每个语句,那么下图中执行为:1->2->3->4
白盒测试方法之逻辑覆盖_第2张图片
语句覆盖的不足:
1.在使用语句覆盖法进行测试用例设计时,能够使得所有的执行语句都被测试,但是不能准确判断运算中的逻辑关系错误。
例如:在这个例子中,如果程序将M的条件“(a>0 AND b >0)”写成"(a>0 0R b>0)”,这时的测试用例仍然可以覆盖所有可执行语句,但不能发现其中的逻辑错误。

判断覆盖

基本思想:
        是使每个判断的取真值和取假值都至少经历一次(T代表正确,F代表错误)

如下图:
白盒测试方法之逻辑覆盖_第3张图片
编写判断测试用例:
白盒测试方法之逻辑覆盖_第4张图片
要求:

执行用例1,判定(A > 1 and B == 0)为真,执行X= X/A,X =1/3;
判定(A== 2 or x > 1)为假,不执行X =× +1;程序结束。

执行用例2,判定(A > 1 and B == 0)为假,不执行X=X/A;
判定(A== 2 or x > 1)为真,执行X = X + 1 ,X = 4 ; 程序结束。

使用Python Unittest 实现上述用例

判定-条件覆盖

基本思想:
        基本思想:确保设计足够或精巧的测试用例,可使得判断条件中所有条件的可能取值至少被执行一次,同时,所有判断的可能结果也至少被执行一次。

白盒测试方法之逻辑覆盖_第5张图片
判定/条件覆盖,既要考虑到单个判定中每个条件的可能情况(A>1或A≤1,B=0或B≠0,A=2或A≠2,X>1或X≤1),也要考虑到每个判定的可能情况(路径ace和abd,或路径acd和abe)。用例及其遍历的路径如下所示:

 A=2,B=0,X=4   ace
 A=1,B=1,X=1   abd

条件组合覆盖

基本思想:
    设计足够的测试用例,使判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。与判定一条件覆盖的差别是,条件组合覆盖不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次

白盒测试方法之逻辑覆盖_第6张图片
满足多重条件覆盖准则的测试用例,必须覆盖以下8种组合:
白盒测试方法之逻辑覆盖_第7张图片
满足多重条件覆盖准则的测试用例,必须覆盖以下8种组合:

A=2,B=0,X=4 ace 覆盖组合1,5
A=2,B=1,X=1 abe 覆盖组合2,6
A=1,B=0,X=2 abe 覆盖组合3,7
A=1,B=1,X=1 abd 覆盖组合4,8

白盒测试经典案例

你可能感兴趣的:(测试,软件测试)