欢迎光临散文网 会员登陆 & 注册

白盒测试方法

2023-05-11 16:47 作者:大丫头胖  | 我要投稿

1. 基本概念

白盒测试使用被测单元内部如何工作的信息,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。

单元测试属于白盒测试。


技术参数选取范围

任务二,单元测试项目中明确了比赛考范围,所以说需要了解和熟悉一下测试方法的概念和测试用例设计方法。

1)语句覆盖法

2)判定覆盖法

3)条件覆盖法

4)判定条件覆盖法

5)条件组合覆盖法

6)路径覆盖法

7)基本路径覆盖法


2. 白盒测试的主要方法

2.1 逻辑驱动测试

① 语句覆盖(Statement Coverage)

语句覆盖是最基本的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。

测试用例设计过程

测试源代码如下所示

第一步将源代码转换为程序流程图



流程图中绿色底纹的菱形框和矩形框是需要考虑的语句块,其他菱形框和矩形框默认都会执行,所以不需要考虑。

接下来,我们需要设计测试用例,测试用例需要完成语句块 ①②③④ 的覆盖。


② 判定覆盖(Decision Coverage)

设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。

还是以上面的代码和流程图为例设计满足判定覆盖的测试用例



③ 条件覆盖(Condition Coverage)

设计足够多的测试用例,使判定语句中的每个逻辑条件取真值与取假值至少出现一次。

还是以上面的代码和流程图为例设计满足判定覆盖的测试用例




④ 判定条件覆盖(Condition/Decision Coverage)

设计足够多的测试用例,使得判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次。

还是以上面的代码和流程图为例设计满足判定覆盖的测试用例



⑤ 条件组合覆盖(Multiple Condition Coverage)

通过执行足够的测试用例,使得程序中每个判定所有可能的条件取值组合都至少出现一次。

注意:一定区分判定和条件的区别,其中,(x>=80 && y>=80)是判定,x>=80 和 y>=80 是条件。


⑥ 路径覆盖(Path Coverage)

选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。

程序流程图


针对上述测试代码,设计的 语句覆盖 测试用例和 路径覆盖 测试用例是一样,但是这并不能说明两者是等同的,可以尝试通过语句覆盖和路径覆盖设计如下测试代码的测试用例。

程序流程图

2.2 基本路径测试

        在实践中,一个不太复杂的程序,其路径都是一个庞大的数字,要在测试中覆盖所有的路径是不现实的。为了解决这一难题,只得把覆盖的路径数压缩到一定限度内(例如,程序中的循环体只执行一次)。基本路径测试就是这样一种测试方法,它在程序控制图的基础上,通过分析控制构造的环行复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。

2.21 测试流程

  1. 画出程序的控制流图。

  2. 计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须达到的测试用例数目。

  3. 导出基本路径集,确定程序的独立路径。

  4. 根据(3)中的独立路径,设计测试用例的输入数据和预期输出。

测试代码如下:


2.22 控制流图

        程序流程图又称框图,是我们最熟悉,也是最容易理解的一种程序控制结构的图形表示,在这种图上的框里面常常表明了处理要求或者条件,但是,这些标注在做路径分析时是不重要的。为了更加突出控制流的结构,需要对程序流程图做一些简化------称作 "控制流图",简称 "流图"。在控制流图中只有两种图形符号,它们是:节点和边。

        节点:① 标有编号的圆圈 ② 程序流程图中矩形所表示的处理 ③ 菱形表示的两个甚至多个出口判断 ④ 多条流线相交的汇合点。节点可代表一个活多个语句,一个处理框和一个判定框(假设不包含复合条件),在选择或多分支结构中,分支的汇聚处应有一个汇聚节点。

        边:① 箭头 ② 与程序流程图中的流线一致,表明了控制的顺序 ③ 控制流线通常标有名字。

        区域:边和节点围成的范围叫做区域,当对区域计数时,图形外的区域也应该记为一个区域。


参考代码程序流程图和控制流图如下所示:

程序流程图和控制流图


2.23 程序环路复杂度

        程序环路复杂度 V(G) ,在进行程序的基本路径测试时,从程序的环路复杂性可导出程序基本路径集合中的 独立路径条数(从控制流图来看,一条独立路径是至少包含有一条在其他独立路径中从未有过的边的路径)。程序的环路复杂性给出了程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的 测试用例数目 的上界。


程序环路复杂度计算方法(三种):

① 流图中区域的数量 ② V(G) = E-N+2(E 是流图中边的数量,N 是流图中节点的数量)③ V(G) = P+1(P 是流图中判定节点的数量)。


参考代码程序环路复杂度:V(G) = 4


2.24 导出基本路径集,确定程序的独立路径

上述控制流图环路复杂度 V(G) = 4,所以可以导出 4 条独立路径:

  1. (4-10-11)

  2. (4-5-6-10-11)

  3. (4-5-7-8-12-4-10-11)

  4. (4-5-7-9-12-4-10-11)


2.25 根据独立路径设计测试用例

根据测试路径集设计测试用例如下:


白盒测试方法的评论 (共 条)

分享到微博请遵守国家法律