黑盒测试
黑盒测试将测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求说明书,检查程序是否满足功能要求。
黑盒测试常用方法:
1.等价类划分
等价分类法的主要思想是:把程序的输入数据集合按输入条件划分为若干个等价类,每一等价类相对于输入条件表示为一组有效或无效输入,然后每一等价类设计一个测试用例。
等价类的划分常用规则如下:
输入条件 | 等价类划分 |
---|---|
一个范围 | 一个有效等价类(输入值落在此范围内)、两个无效等价类(大于最大值的输入和小于最小值的的输入) |
一个特定值 | 一个有效等价类(输入等于此值)、两个无效等价类(输入小于和大于该值) |
一个集合 | 一个有效等价类(输入值为此集合中的元素)、一个无效等价类(输入为此集合补集中的元素) |
一个布尔量 | 一个有效等价类(输入为此布尔量)、一个无效等价类(输入为此布尔量之非) |
2.边界值分析
边界值分析(Boundary Value Analysis)技术是对等价分类技术的补充,即在一个等价类中不是任选一个元素作为此等价类的代表进行测试,而是选择此等价类边界上的值。
BVA技术的用例规则:
①如果输入条件制定了由值a、b括起来的范围,那么值a、b和紧挨a、b左右的值应分别作为测试用例。
②如果输入条件指定为一组数,那么这组数中的最大者、最小者和次大者、次小者应作为测试用例。
③应用规则①、②于输出条件,使得测试用例的输出正好产生所允许的最大值最小值。
④如果内部数据结构是有界的,那么应设计测试用例,使之能检查该数据结构的边界。
白盒测试
白盒测试被测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错、实际的运行状态与预期的状态是否一致。
白盒测试常用方法:
1.逻辑覆盖
根据覆盖目标的不同和覆盖源程序语句的详尽程度,逻辑覆盖可分为:
- 语句覆盖:设计测试用例,使程序中每条可执行语句至少执行一次。
- 判定覆盖:设计测试用例,使程序中每个逻辑判断的取真和取假的分支至少经历一次。
- 条件覆盖:设计测试用例,使程序中每个逻辑判断中的每个条件的可能取值至少满足一次。
- 判定-条件覆盖:设计测试用例,使程序中每个逻辑判断的取真和取假的分支至少执行一次,并且每个逻辑判断中的每个条件的可能取值至少满足一次。
- 条件组合覆盖:设计测试用例,使程序中每个逻辑判断中每个条件的各种可能组合都至少出现一次。
- 路径覆盖:设计测试用例,覆盖程序中的每条可能路径。
2.基本路径测试
基本路径测试的主要思想是:根据程序中的控制流程确定复杂性度量,然后用此度量定义基本路径集合,由此导出一组测试用例,他们能保证每个语句至少执行一次。
为了使用图论的知识和术语,引入了流图的概念,流图把流程图中的结构化构建改为一般有向图的表示形式,其中代表条件判断的结点称为谓词结点。
圈复杂性(Cyclomatic Complexity)用流图中区域的个数度量,实质上它等于程序中独立路径的条数。圈复杂性度量给出了程序中每个语句至少执行一次所必须进行测试的最少次数。
非强连通图的圈复杂度的计算方法:
- V ( G ) = 边 数 − 结 点 数 + 2 V(G)=边数-结点数+2 V(G)=边数−结点数+2
- V ( G ) = 图 G 中 判 定 节 点 的 数 量 + 1 V(G)=图G中判定节点的数量+1 V(G)=图G中判定节点的数量+1
- V ( G ) = 图 G 中 区 域 的 数 量 V(G)=图G中区域的数量 V(G)=图G中区域的数量
强连通图的圈复杂度的计算方法:
- V ( G ) = 边 数 − 结 点 数 + 1 V(G)=边数-结点数+1 V(G)=边数−结点数+1