白盒测试

白盒测试

白盒测试

又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。它一般用来测试程序的内部结构,包括控制流和数据流,但以控制流结构为主,并判定其结果是否与预期的结果一致。

 

控制流覆盖准则包括:语句覆盖准则;分支覆盖准则;谓词测试,包括:原子谓词覆盖准则、 分支-谓词覆盖准则、复合谓词覆盖准则;路径覆盖准则。

1.语句覆盖准则

是最简单的结构性测试方法之一,它要求测试中,程序中的每条语句都得到运行。即,控制流图中的所有语句都被运行的充分必要条件是,覆盖图中的所有节点。

测试数据集T称为语句覆盖充分的,当且仅当LT覆盖了GP中的所有节点。

缺点:测试用例可以覆盖所有节点,但是有一个分支没有覆盖,所以有一定问题。

2.  分支覆盖准则

分支覆盖要求在软件测试中,每个分支都至少获得一次真/假取值的经历。

测试数据集T称为分支覆盖充分的,当且仅当LT覆盖了GP中的所有有向边。

分支覆盖的同时,还满足了语句覆盖。分支覆盖比语句覆盖强一些,分支覆盖

测试包含语句覆盖测试。

3. 谓词测试

(1)原子谓词覆盖准则

要求在软件测试中,每个复合谓词所包含的每一个原子谓词都至少获得一次“真”值和一次“假”值。

(2)分支-谓词覆盖准则

要求在软件测试中,不仅每个复合谓词所包含的每个原子谓词都至少获得一次真/假。每个复合谓词本身也至少获得一次“真”/“假”

分支条件覆盖可以满足原子谓词的真/假和分支的真/假至少出现一次的条件,但是有可能不能全覆盖

(3)复合谓词覆盖准则

测试数据集T称为复合谓词覆盖充分的,如果任意一个分支,对该分支所包含的原子谓词的任意一个可行的真/假值组合,T中都存在一个测试数据使该组合谓词运行时,原子谓词的取值恰好为该真/假值组合。即每个复合谓词内的原子谓词的各种可能的组合都至少出现一次。

三者的关系:复合谓词覆盖 > 分支-谓词 〉原子谓词

4.路径覆盖准则

测试数据集T称为路径覆盖充分的,当且仅当LT覆盖了GP中的所有完整路径。

 

数据流覆盖准则包括:定义覆盖测试准则;引用覆盖测试准则;定义-引用覆盖测试准则。

(1)定义覆盖测试准则

测试数据集T对测试程序P满足定义覆盖准则,如果对具有数据流信息的控制流图GP中的每一个变量x的每一个定义性出现,若该定义性出现能够可行地传递到该变量的某一个引用性出现,那么LT中存在一条路径A,它包含一条子路径A’,使得A’将该定义出现传递到某一引用性出现。

(2)引用覆盖测试准则:

测试数据集T对测试程序P满足引用覆盖准则,如果对具有数据流信息的控制流图GP中的每一个变量x的每一个定义n,以及该定义的每一个能够可行地传递到的引用n’,LT中都存在一条路径A,它包含一条子路径A’,使得A’将n传递到n’。

(3)定义-引用覆盖测试准则:

测试数据集T对测试程序P满足定义-引用覆盖准则,如果对具有数据流信息的控制流图GP中的任意一条从定义传递到其引用的路径A,若A是无回路的或A是简单回路,那么LT中存在一条路径B,使得A是B的子路径。

目的是只测试无回路或只包含简单回路的路径。

白盒测试的优点:

①    检测代码中的每条分支和路径,对代码的测试比较彻底

②    能够仔细思考软件的实现

③    能够准确的揭示代码中的错误

白盒测试的缺点:

(1)不能很好地查出程序中因遗漏路径而出错

(2)穷举昂贵,耗费大量的时间

 

posted @ 2015-04-19 10:42  杨杨&  阅读(1474)  评论(0编辑  收藏  举报