第7章03 黑盒测试及用例生成

5.1 黑盒测试概述

黑盒测试是一种==基于规格说明==(Spec)、不要求考察代码、以用户视角进行的测试。又称功能测试、基于规格说明的测试。

黑盒测试依据:

  • 需求规格说明;
  • 用户视角;
  • 输入与输出关系;
  • 明确需求和隐含需求。

黑盒测试特点:

  • 与软件具体实现无关,代码变化时测试用例仍可能复用;
  • 测试用例设计可与软件实现并行;
  • 能发现其他测试遗漏的逻辑缺陷,如因果关系问题;
  • 适用于单元、集成、系统、回归等多个阶段。

黑盒测试步骤:

  1. 熟悉规格说明书,理解测试需求;
  2. 生成测试用例;
  3. 执行测试;
  4. 判定测试结果。

5.2 黑盒测试与白盒测试区别

维度黑盒测试白盒测试
依据需求规格说明源程序或代码结构
是否关注内部实现不关注关注
关注点输入、输出、功能行为语句、分支、条件、路径、数据流
典型方法等价类、因果图、判定表、边界值控制流覆盖、基本路径、数据流测试

第二次小测已考:黑盒测试可以检测需求文档不完整导致的功能缺失问题;白盒测试在系统测试阶段也常需要与黑盒测试结合。

负面测试没有覆盖率

用尽可能少的测试用例发现尽可能多的缺陷

5.3 A等价类划分

等价类定义

等价类是输入域的某个子集,该子集中的每个输入数据对揭露软件错误都是等效的。测试等价类中的一个代表值,通常可代表该类其他值。

另一种表达:如果软件行为对一组值相同,则这组值称为等价类;产生相同预期输出的一组输入值叫一个等价类划分。

有效等价类和无效等价类

类型含义作用
有效等价类完全满足规格说明的输入数据集合检验程序是否满足规格说明
无效等价类不满足程序输入要求的输入数据集合检验程序能否处理非法输入

等价类划分准则

客观题重点。

输入条件有效等价类无效等价类
布尔表达式1 个有效等价类1 个无效等价类
输入代表一个范围1 个有效等价类2 个无效等价类:小于范围、大于范围
输入数据个数有规定1 个有效等价类2 个无效等价类:少于、多于
输入代表集合的某个子集1 个有效等价类1 个或多个无效等价类
输入条件是一组列表数据N 个有效等价类1 个无效等价类
输入条件要求符合若干规则多个有效等价类若干无效等价类

根据等价类生成测试用例

课件步骤:

  1. 分析输入条件;
  2. 根据准则确定有效等价类和无效等价类;
  3. 从等价类中选取样本数据覆盖所有等价类;
  4. 根据需求写预期结果;
  5. 执行测试。

重点规则:

  • 每个有效等价类都要覆盖;
  • 每个无效等价类都要==单独覆盖==。

等价类划分主观题答题模板

  1. 写出被测功能的输入条件和输出要求。
  2. 按范围、集合、个数、规则等分类划分有效等价类和无效等价类。
  3. 画等价类表:编号、输入条件、等价类类型、代表数据、预期结果。
  4. 设计测试用例:有效等价类可尽量合并覆盖;无效等价类单独覆盖。
  5. 给出预期输出和错误处理结果。
  6. 检查是否遗漏边界值,必要时说明边界值分析作为补充。

常见扣分点:

  • 只列有效类,不列无效类;
  • 多个无效等价类放在一个测试用例里,导致不能定位错误来源;
  • 忘记写预期结果;
  • 没有根据题目规格划分,而是凭经验泛泛分类。

5.4 B因果图分析

基本含义

因果图法是一种系统化黑盒测试用例设计方法,通过分析输入条件(原因)与输出结果(效果)之间的逻辑关系来生成测试用例。

基本流程:

$$ 规格说明书 \rightarrow 因果图 \rightarrow 判定表 \rightarrow 测试用例 $$

原因、结果与逻辑关系

元素含义
原因 C输入条件或输入条件的等价类
结果 E输出结果或系统动作

原因和结果的 4 种关系:

  • 恒等;
  • 非;
  • 或;
  • 与。

约束

课件列出 4 种输入约束和 1 种输出约束。

约束含义
互斥 E多个原因不能同时成立,最多一个成立
包含 I多个原因中至少一个必须成立,不能全为 0
唯一 O多个原因中必须有且只有一个成立
输入约束第四类课件文本提取中名称未完整显示,复习时以课件图为准
输出约束课件提到还有 1 种输出约束,文本未完整展开

因果图主观题答题模板

  1. 从题干提取所有原因 C1、C2、... 和结果 E1、E2、...。
  2. 标注原因与结果之间的恒等、非、或、与关系。
  3. 标注原因之间或结果之间的约束,如互斥、包含、唯一。
  4. 枚举原因组合,删除违反约束或不可能的组合。
  5. 将有效组合转换为判定表。
  6. 每条有效规则生成一个测试用例,条件项作为输入,动作项作为预期输出。

常见扣分点:

  • 不列原因/结果编号;
  • 忘记删除违反约束的组合;
  • 因果图和判定表不一致;
  • 判定表规则没有转化为测试用例。

5.5 判定表法

判定表组成

第二次小测已考:判定表包含条件项和动作桩/动作项。

组成含义
条件桩列出所有条件
条件项每条规则中条件的取值
动作桩列出所有可能动作
动作项每条规则中应执行的动作
规则条件取值组合及其对应动作,一列通常是一条规则

课件表述:原因是判定表中的条件,结果是判定表中的行动;判定规则是原因与结果的组合。

根据判定表生成测试用例

  • 判定表中的条件:测试用例输入条件;
  • 判定表中的行动:测试用例预期输出;
  • 一条判定规则:一个测试用例。

判定表简化

课件明确:

  • 简化目标:合并相似规则;
  • 相似规则判断:两条或以上规则具有相同动作,并且条件项之间高度相似,可以合并;
  • - 表示合并后该条件项与取值无关,称为无关条件。

判定表法主观题答题模板

  1. 列条件桩:把所有输入条件写成行。
  2. 列动作桩:把所有可能输出或处理动作写成行。
  3. 枚举条件组合,形成初始规则列。
  4. 删除不可能规则或违反约束的规则。
  5. 根据规则填写动作项。
  6. 合并动作相同且条件高度相似的规则,用 - 表示无关条件。
  7. 每条最终规则生成一个测试用例。

5.6 C边界值分析

基本思想

边界值分析法是对输入域边界值进行测试的黑盒测试方法,通常==作为等价类划分的补充==,测试用例来自等价类的边界。

软件的两个主要缺陷源:1)条件;2)边界

使用方法:

  • 首先确定边界情况;
  • 选取正好等于、刚刚大于、刚刚小于边界的值作为测试数据;
  • 不选等价类中的任意典型值替代边界值。

常见边界值例子:

  • 数值范围的最小值和最大值;
  • 报表第一行、最后一行;
  • 第一列、最后一列;
  • 文件第一个记录、最后一个记录。

测试用例数量公式

课件明确给出:

基本边界测试:

$$ 4n+1 $$

健壮性边界测试:

$$ 6n+1 $$

其中 $n$ 是存在边界值的参数个数。

注意:用户要求中提到“最坏情况边界值分析”和“健壮最坏情况边界值分析”,但在本次可提取课件文本中未找到对应公式展开。闭卷复习时,本笔记只把课件明确出现的 $4n+1$ 和 $6n+1$ 作为必背公式。

单变量、多变量、分段区间

情况答题方式
单变量范围取 min、min+、nom、max-、max,健壮性再加 min-、max+
多变量范围一次让一个变量取边界,其他变量取正常值
分段区间对每个分段的起点、终点及相邻值确定边界
有关联边界先识别关联约束,再补充组合边界

边界值分析主观题答题模板

  1. 写出每个输入变量的有效范围。
  2. 找出每个变量的下边界、上边界和必要的分段边界。
  3. 选择基本边界或健壮性边界,并写明公式。
  4. 对每个变量列出边界附近取值。
  5. 生成测试用例表:编号、输入、选择理由、预期输出。
  6. 对无效边界值写清错误提示或拒绝处理。

5.7 本章主观题方法总表

方法适用场景输入信息输出结果答题步骤常见扣分点
等价类划分输入有范围、集合、个数、规则输入条件、规格说明等价类表、测试用例划分有效/无效类,选代表值,写预期无效类未单独覆盖
因果图输入条件间有逻辑组合原因、结果、约束因果图、判定表、用例提取 C/E,画关系,转判定表忽略约束
判定表多条件多动作规则条件和动作判定表、简化规则枚举规则,删不可能,合并相似条件项/动作项混淆
边界值分析输入/输出有边界范围、区间、分段点边界测试数据找边界,取边界附近值,写预期只取中间值,不测边界

5.8 小测关联

第二次小测已考:

  • 判定表包含条件项、动作桩;
  • 年龄验证中无效等价类;
  • 边界值分析 $4n+1$ 的测试数据选择;
  • 黑盒与白盒的辨析。

5.9 本章复习检查题

填空题

  1. 黑盒测试是一种基于________、不要求考察代码、以用户视角进行的测试。
  2. 因果图法通过分析输入条件()与输出结果()之间的逻辑关系生成测试用例。
  3. 健壮性边界测试公式为________。

选择题

  1. 对输入范围 [1,100] 做基本边界测试,最典型的取值应包含:A. 50 B. 1、2、99、100 和正常值 C. 仅 1 和 100 D. 随机 5 个值
  2. 判定表中一条规则通常对应:A. 一个测试用例 B. 一个模块 C. 一个缺陷 D. 一个代码分支

判断题

  1. 每个无效等价类都应尽量单独覆盖。
  2. 边界值分析通常是等价类划分的补充。
  3. 因果图转换为判定表时,不需要考虑约束。

参考答案

  1. 填空:规格说明;原因、效果/结果;$6n+1$。
  2. 选择:B;A。
  3. 判断:对;对;错。