1、第 5章 黑盒 测试 及其用例的 设计5.1 黑盒 测试 法的概念5.2 三角形 问题 与 NextDate函数5.3 等价 类 划分法5.4 边 界 值 分析法5.5 因果 图 法5.6 决策表法5.7 错误 推 测 法5.8 测试 方法的 选择本章教学目 标理 论环节 学 习 理解黑盒 测试 方法的基本概念 学 习 理解黑盒 测试 的两个典型 问题 学 习 掌握黑盒 测试 的等价 类 划分法 学 习 掌握黑盒 测试 的 边 界 值 分析法 学 习 掌握黑盒 测试 的因果 图测试 法和决策表法实 践 环节 通 过 案例运用学 习 掌握运用方法解决 实际问题 的能力 运用等价 类 划分法与 边
2、 界 值 分析法 进 行 实际 程序 测试 运用因果 图测试 法与决策表法 进 行 实际 程序 测试5.1 黑盒 测试 法的概念Return 黑盒 测试 被称 为 功能 测试 或数据 驱动测试 。在 测试时 ,把被 测 程序 视为 一个不能打开的黑盒子,在完全不考 虑 程序内部 结 构和内部特性的情况下 进 行。 采用黑盒 测试 的目的主要是在已知 软 件 产 品所 应 具有的功能的基 础 上, 进 行:( 1) 检查 程序功能能否按需求 规 格 说 明 书 的 规 定正常使用,测试 各个功能是否有 遗 漏, 检测 性能等特性要求是否 满 足。( 2) 检测 人机交互是否 错误 , 检测 数据
3、 结 构或外部数据 库访问 是否 错误 ,程序是否能适当地接收 输 入数据而 产 生正确的 输 出 结 果,并保持外部信息(如数据 库 或文件)的完整性。( 3) 检测 程序初始化和 终 止方面的 错误 。5.2 三角形 问题 与 NextDate函数1、三角形 问题输 入三个整数 a、 b、 c,分 别 作 为 三角形的三条 边 , 现通 过 程序判断由三条 边 构成的三角形的 类 型 为 等 边 三角形、等腰三角形、一般三角形(特殊的 还 有直角三角形),以及构不成三角形。现 在要求 输 入三个整数 a、 b、 c,必 须满 足以下条件:条件 1 1a100 条件 4 ab+ c条件 2
4、1b100 条件 5 ba+ c 条件 3 1c100 条件 6 ca+ b Return三角形 问题 与 NextDate函数 ( 续 ) 如果 输 入 值 a、 b、 c不 满 足条件 1、条件 2和条件 3 ,程序给 出 “边 的取 值 超出允 许 范 围 ”的信息。 如果 输 入 值 a、 b、 c 满 足条件 1、条件 2和条件 3, 则输 出下列四种情况之一:( 1)如果不 满 足条件 4、条件 5和条件 6中的一个, 则 程序 输出 为 “非三角形 ”。( 2)如果三条 边 相等, 则 程序 输 出 为 “等 边 三角形 ”。( 3)如果恰好有两条 边 相等, 则 程序 输 出
5、为 “等腰三角形 ”。( 4)如果三条 边 都不相等, 则 程序 输 出 为 “一般三角形 ”。 结论 :三角形 问题 的复 杂 之 处 在于 输 入与 输 出之 间 的关系比 较 复 杂 。三角形 问题 与 NextDate函数 ( 续 )2、 NextDate函数NextDate函数 说 明另一种复 杂 的关系,即 输 入 变 量之 间逻辑 关系的复 杂 性。NextDate函数包含三个 变 量 month、 day和 year, 函数的输 出 为输 入日期后一天的日期。 要求 输 入 变 量 month、 day和 year均 为 整数 值 ,并且 满 足下列条件:条件 1 1 mont
6、h 12条件 2 1 day 31条件 3 1912 year 2050 结论 : 在 NextDate函数中有两种复 杂 性的 输 入来源,一是输 入域的复 杂 性,二是确定 闰 年的 规则 并要增加 “额 外天 ”。5.3 等价 类 划分法5.3.1 等价 类 的划分原 则5.3.2 等价 类 划分法的 测试 用例 设计5.3.3 常 见 等价 类 划分 测试 形式5.3.4 使用等价 类 划分法 测试 的 实 例Return等价 类 划分法 等价 类 划分法是一种重要的、常用的黑盒 测试 方法,它将不能 穷举 的 测试过 程 进 行合理分 类 ,从而保 证设计 出来的 测试 用例具有完整
7、性和代表性。 举 例: 设计这样 的 测试 用例,来 实现 一个 对 所有 实 数 进行开平方运算( y = sqrt(x) )的程序的 测试 。 思考方向:由于开平方运算只 对 非 负实 数有效, 这时 需要将所有的 实 数( 输 入域 x) 进 行划分,可以分成:正 实 数、 0 和 负实 数。假 设 我 们选 定 +1.4444代表正 实 数, -2.345代表负实 数, 则为该 程序 设计 的 测试 用例的 输 入 为 +1.4444、 0 和 -2.345。等价 类 划分法 ( 续 ) 等价 类 划分法是把所有可能的 输 入数据,即程序的 输 入域划分 为 若干部分(子集),然后从每
8、一个子集中 选 取少数具有代表性的数据作 为测试 用例。 所 谓 等价 类 是指某个 输 入域的子集合。 在 该 子集合中,各个 输 入数据 对 于揭露程序中的 错误 都是等效的,它 们具有等价特性,即每一 类 的代表性数据在 测试 中的作用都等价于 这 一 类 中的其它数据。 这样 , 对 于表征 该类 的数据 输 入将能代表整个子集合的 输 入。因此,可以合理的假定: 测试 某等价 类 的代表 值 就是等效于 对 于 这 一 类 其它值 的 测试 。5.3.1 等价 类 的划分原 则 等价 类 是 输 入域的某个子集合,而所有等价 类 的并集就是整个 输 入域。因此,等价 类对 于 测试 有两个重要的意 义: 完 备 性 整个 输 入域提供一种形式的完 备 性 无冗余性 若互不相交 则 可保 证 一种形式的无冗余性 如何划分? 先从程序的 规 格 说 明 书 中找出各个 输 入条件,再 为 每个 输 入条件划分两个或多个等价 类 ,形成若干的互不相交的子集。 采用等价 类 划分法 设计测试 用例通常分两步 进 行:( 1) 确定等价 类 ,列出等价 类 表。( 2)确定 测试 用例。