软件测试---白盒测试

          静态测试主要是在程序设计阶段进行测试,而动态测试主要是在程序运行阶段进行测试,通过运行程序发现错

 

误。

 

        在平常的软件/系统测试,大多数都是默认为动态测试。为了发现更多的错误,需要运行一些有效的方法。同测

 

试任何产品一样一般有两种方法:一是如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能

 

正常使用;此方法属于黑盒测试法。二是如果知道产品内部工作过程,可以通过测试来检验产品内部结构及处理过程

 

是否按照规格说明书的规定正常运行。此方法书白盒测试法。

 

      这两种方法都属于动态测试法,今天我就来走进白盒测试法,看看它的内部消息。

 

     白盒测试法也被世人称为结构测试或逻辑驱动测试。测试人员把程序视为一个透明的白盒子,需了解程序的内部

 

结构和处理过程,以检查处理过程的细节为基础,要求对程序的结构特性做到一定的程度覆盖,对程序中的所有逻辑

 

路径进行测试,并检验内部控制结构是否哦有错,确定实际的运行状态与预期的状态是否一致。

 

 

    由于白盒测试是以程序的结构为依据的,所以被测对象基本上是源程序,以程序的内部逻辑结构为基础设计测试用

 

例。白盒测试可以用以下几种方法:

 

   咱们就从上往下逐一解说一下吧!

 

 一。逻辑覆盖

 

     逻辑覆盖是一组覆盖方法的总称。这组覆盖方法的测试过程逐渐进行越来越完整的通路测试。测试数据覆盖程序

 

逻辑的 程序可以划分为不同的等级。

 

1.语句覆盖

 

 基本思想:设计足够的测试用例,运行被测程序,是程序的每条可执行语句至少执行一次。

 

例如,程序流程图是一个被测模块的处理算法。

 

 

其中有两个判断,每个判断都包含复合条件的逻辑表达式,为了满足语句覆盖,程序额执行路径应该是sacbed。选择

 

测试用例为A=2,B=0,X=4(实际上X可以是任意实数)

 

2.判定覆盖

 

基本思想:设计足够的测试用例,运行被测试程序,不仅使得被测程序中每条语句至少执行一次,而且每个判断表达

 

式至少获得一次“真”值或“假”值,从而使得程序的每一个分支至少都通过一次,因此,判定覆盖也称为分支覆

 

盖。

 

例如,选择下面两组测试数据,就可以做到判定覆盖:

 

1)A=3,B=0,X=3 (覆盖sacbd)

 

2)A=2,B=1,X=2(覆盖sabed)

 

对于多分支的判定,判定覆盖要使每一个判定表达式获得每一种可能的值来测试。

 

3.条件覆盖

 

基本思想:设计足够多的测试用例,不仅每条语句至少执行一次,而且使得判定表达式中的每个条件都能获得各种

 

可能的结果。

 

例如,上图的例子共有2个判定表达式,每个表达式中有两个条件,共有4个条件:

 

A>1,B=0,A=2,X>1

 

要选择足够多的数据,使得上图在a点和b点两判定表达式中分别有下述各种结果出现:

 

a点:A>1,A<=1,B=0,B!=0

 

b点:A=2,A!=2,X>1,X<=1

 

才能达到条件覆盖的标准。

 

为满足上述要求,选择以下的测试数据。

 

1)A=2,B=0,X=4(满足A>1,B=0,A=2和X>1的条件,执行路径,sacbed)

 

2)A=1,B=1,X=1(满足A<=1,B!=0,A!=2和X<=1的条件,执行路径sabd)

 

可以看出,以上两组测试用例不但满足了条件覆盖标准,而且同时满足了判定覆盖标准在这种情况下,条件覆盖比判

 

定覆盖强,但也有例外的情况。

 

 

4.判断--条件覆盖

 

判断--条件覆盖实际上是前两种方法结合起来的一种设计方法,它是判定和条件覆盖的交集,即设计足够的测试用例

 

使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。

 

例如:对于上图的的例子,下述两组测试数据满足判定条件覆盖标准:

 

1)A=2,B=0,X=4

 

2)A=2,B=1,X=1

 

这两组测试数据也就是为了满足条件覆盖标准最初选取的两组数据。因此,有时判定条件覆盖也并不比条件覆盖更强

 

的。

 

 

5.条件组合覆盖

 

条件组合覆盖是比较强的覆盖。基本思想:设计足够的测试用例,使得每个判定表达式中条件的各种可能组合都至少

 

出现一次。

 

例如,上图的例子,两个判定表达式共有4个条件,有8种可能的条件组合:

 

1)A>1,B=0            2)A>1,B!=0

 

3)A<=1,B=0             4)A<-1,B!=0

 

5)A=2,X>1                6)A=2,X<=1

 

7)X!-2,X>1                8)A!=2,X<=1

 

要覆盖8种条件组合,并不一定要设计8组测试数据,下面4组测试用例就可以满足条件组合覆盖标准

 

1)A=2,B=0,X=4(针对1)5)两种组合,执行路径sacbed)

 

2)A=2,B=1,X=1(针对2)6)两种组合,执行路径sabed)

 

3)A=1,B=0,X=2(针对3)7)两种组合,执行路径sabed)

 

4)A=1,B=1,X=1(针对4)8)两种组合,执行路径sabd)

 

 

6.路径覆盖

 

 基本思路:设计所有的测试用例,来覆盖程序中所有可能的执行路径。

 

例如,上图的例子,选择以下测试用例覆盖程序中的4条路径

 

1)A=1,B=1,X=1(执行路径sabd)

 

2)A=1,B=1,X=2(执行路径sabed)

 

3)A=3,B=0,X=3(执行路径sacbd)

 

4)A=2,B=0,X=4(执行路径sacbed)

 

可以看出,路径覆盖没有覆盖所有的条件组合覆盖。

 

二。循环覆盖

 

     循环是程序 的主要逻辑结构,企图覆盖含有循环结构的所有路径同样是不可能的,但是可以通过限制循环次数来

 

试,对单循环和嵌套循环分别来考虑。

 

1.单循环

 

设m为可允许执行循环的最大次数,可以从4个方面考虑测试用例的设计

 

1)只执行循环0次

 

2)只执行循环1次

 

3)执行循环n次,n<m

 

4)执行循环m-1次,m次,m+1次

 

 

2.嵌套循环

 

步骤为:

 

1)对内循环进行单循环测试,此时置外循环为最小循环计数值

 

2)由内向外,进行下一层的循环测试

 

三。基本路径测试

 

       上图的例子只有4条路径比较简单,但是在实际问题中,即使是一个不太复杂的程序路径也是一个很庞大的数

 

字,为了解决这一个难题。只好将覆盖的路径数压缩到一定范围内。而基本路径测试是在程序控制流程图的基础上,

 

通过分析控制结构的环路复杂性导出基本可执行路径集合,从而设计测试用例,设计出的测试用例保证这些路径至少

 

通过一次。

 

使用基本路径测试技术设计测试用例的步骤如下:

 

1)使用详细设定设计结果或源程序画出相应的程序图(流图)。程序图是程序流程图的抽象化,它是反映

 

控制流程图的有向图,其中小圆圈称为结点,代表程序流程图中每个处理符号。即矩形框,菱形框等,有箭头的连线

 

 

表示控制流向,称为程序图中的边或路径。

 

2)计算程序图G的环形复杂度V(G)

 

3)确定线性独立路径的基本集合

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弯_弯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值