当前位置:首页 >> 文学研究 >>

白盒测试及其用例的设计


第四章 白盒测试及其用例的设计 4.1 问 : 为 什 么 要 进 行 白 盒 测 试 ? 答 :贯 穿 程 序 的 独 立 路 径 数 通 常 巨 大 ,即 使 每 条 路 径 都 测 试 过 了 ,仍 然 可 能 存 在 错 误 。这 是 因 为 : 1)穷 举 路 经 测 试 法 无 法 检 查 出 程 序 本 身 是 否 违 反 了 设 计 ( 规 范 ,即 程 序 是 否 是 一 个 错 误 的 程 序 。 2)穷 举 路 经 测 试 不 可 能 查 出 程 序 因 为 ( 遗 漏 路 径 而 出 错 。 3) 穷 举 路 经 测 试 发 现 不 了 一 些 与 数 据 相 关 的 错 误 。 ( 4.2 问 : 采 用 白 盒 测 试 方 法 必 须 遵 循 哪 些 原 则 ? 答 :采 用 白 盒 测 试 方 法 必 须 遵 循 以 下 几 条 原 则 ,才 能 达 到 测 试 的 目 的 : 1) 保 ( 证 一 个 模 块 中 的 所 有 独 立 路 径 至 少 被 测 试 一 次 。 2) 所 有 逻 辑 值 均 需 测 试 真 ( (true) 和 假 (false) 两 种 情 况 。 3) 检 查 程 序 的 内 部 数 据 结 构 , 保 证 其 结 构 的 ( 有 效 性 。 4) 在 上 下 边 界 及 可 操 作 范 围 内 运 行 所 有 循 环 。 ( 4.3 问 : 常 用 的 白 盒 测 试 方 法 有 哪 些 ? 答 :白 盒 测 试 主 要 是 检 查 程 序 的 内 部 结 构 、逻 辑 、循 环 和 路 径 。常 用 测 试 用 例 设 计 方 法 有 : 1)逻 辑 覆 盖 法( 逻 辑 驱 动 测 试 )( 2)基 本 路 径 测 试 法 。 其 中 , ( ; 逻辑覆盖法中根据覆盖标准从低到高分别是:语句覆盖、判定覆盖、 条件覆 盖 、 判 定 /条 件 覆 盖 、 条 件 组 合 覆 盖 。 4.4 问 : 请 用 一 个 实 例 说 明 各 种 比 较 常 用 的 覆 盖 测 试 方 法 , 包 括 语 句 覆 盖 、 判 定 覆 盖 、 条 件 覆 盖 、 判 定 /条 件 覆 盖 、 组 合 覆 盖 和 路 径 覆 盖 等 。 答 : 下 面 以 一 个 简 单 但 经 典 的 小 程 序 作 为 参 考 实 例 : IF ((A>1) AND (B=0)) THEN X=X/A IF ((A=2) OR (X>1)) THEN X=X+1 其 中 , “AND”和 “OR”为 逻 辑 运 算 符 。 其 所 对 应 的 程 序 流 程 图 如 下 所 示 。 其 控 制 流 图 中 的 各 个 程 序 点 分 别 由 字 母 a,b,c,d,e 来 表 示 。 1) 语 句 覆 盖 语 句 覆 盖 方 法 选 择 足 够 多 ( 的测试用例,使程序中的每个可执行语句至少执行 一次。例如上例,设计一 个 能 通 过 路 径 ace 的 测 试 路 径 即 可 。 即 当 A=2,B=0,X=3 时 , 程 序 按 照 流 程 图 上 的 路 径 ace 执 行 ,即 程 序 段 中 的 4 个 语 句 均 得 到 执 行 ,完 成 语 句 覆 盖 。 语 句覆盖可以保证程序中每个语句都得到执行,但是它并不能全面地检验每 一 个 语 句 ,即 它 并 不 是 一 种 充 分 的 检 验 方 法 。当 程 序 段 中 两 个 判 定 的 逻 辑 运 算 存 在 问 题 时 , 如 果 第 一 个 判 定 的 运 算 符 “AND” 错 写 成 运 算 符 “OR” , 这 时 仍 使 用 该 测 试 用 例 , 则 程 序 仍 按 流 程 图 上 的 路 径 ace 执 行 ; 当 第 二 个 条 件 语 句 中 X>1 误 写 成 X>0 时 , 述 的 测 试 用 例 也 不 能 发 现 这 一 错 误 。( 2) 定 覆 盖 判 上 判 定覆盖是比语句覆盖较强一些的方法,即通过执行足够的测试用例,使得 程 序 中 的 每 个 判 定 至 少 都 获 得 一 次 “真 ”值 和 “假 ”值 , 也 就 是 使 程 序 中 的 每 个 取 “ 真 ”分 支 和 取 “假 ”分 支 至 少 均 经 历 一 次 , 也 称 为 “分 支 覆 盖 ”。 对 上 述 示 例 程 序 段 , 计 两 个 测 试 用 例 , 它 们 能 通 过 路 径 ace 和 abd, 通 过 路 径 acd 及 设 使 或 abe, 即 可 达 到 “判 定 覆 盖 ”的 标 准 。 若 选 用 的 两 组 测 试 用 例 如 判 定 覆 盖 测 试 用 例 表 所 示 ,则 可 分 别 执 行 流 程 图 上 的 路 径 ace 和 abd,从 而 使 两 个 判 断 的 4 个 分 支 c,e 和 b,d 分 别 得 到 覆 盖 。 判 定 覆 盖 测 试 用 例 表 测 试 用 例 A, B, X (A>1)AND(B=0) (A=2)OR(X>1) 执 行 路 径 测 试 用 例 1 2, 0, 3 真( T) 真( T) ace 测 试 用 例 2 1, 0, 1 假( -T) 假( -T) abd 需 要 注 意 的 是 ,上 述 的 两 组 测 试用例在满足判定覆盖的同时,还完成了语句 覆盖,因此判定覆盖要比语句 覆 盖 更 强 一 些 。但 是 ,此 时 仍 然 存 在 这 样 的 问 题 , 即 如 果 程 序 段 中 的 第 2 个 判 定 条 件 X>1 误 写 为 X<1, 执 行 上 述 测 试 用 例 原 路 经 abe 执 行 而 不 影 响 结 果 。 这 表 明 , 仅 仅 满 足 判 定 覆 盖 仍 然 无 法 确 定 判 断 内 部 条 件 的 错 误 。 ( 3) 条件覆盖 在实际程序代码中,一个判定中通常都包含了若干个条件,如上述

示 例 程 序 段 , 判 定 ( A>1) AND( B=0) 包 含 了 两 个 条 件 : A>1 及 B=0。 此 时 一 个 更 强 的 覆 盖 标 准 是 “条 件 覆 盖 ”,条 件 覆 盖 的 目 的 是 设 计 若 干 测 试 用 例 , 在 执 行 被 测 程 序 以 后 ,要 使 每 个 判 定 中 每 个 条 件 的 可 能 值 至 少 满 足 一 次 。 因 此 , 第 一 个 判 定 A>1)AND B=0) 应 考 虑 到 各 种 条 件 取 值 的 情 况 : ● A>1 在 ( ( 中 为 真 与 A>1 为 假 的 情 况 ● B=0 为 真 与 B=0 为 假 的 情 况 同 样 , 对 于 第 二 个 判 定 (A=2) OR (X>1)应 考 虑 到 : ● A=2 为 真 与 A=2 为 假 的 情 况 ● X>1 为 真 与 X>1 为 假 的 情 况 因 此 , 需 要 采 用 两 个 测 试 用 例 , 可 以 满 足 测 试 要 求 , 只 就 即 覆 盖 4 个 条 件 可 能 产 生 的 8 种 情 况 ,如 条 件 覆 盖 测 试 用 例 表 表 所 示 。 条 件 覆 盖 测 试 用 例 表 测 试 用 例 A, B, X 执 行 路 径 覆 盖 条 件 测 试 用 例 1 2, 0, 3 ace (BCEF) T1 ,T 2 ,T3, T4 测 试 用 例 5 1, 1, 1 abd (AD) -T1 ,-T2 ,-T3,-T4 这 两 个测试用例不但覆盖了 4 个条件的全部 8 种情况,而且将两个判定的 4 个 分 支 b,c,d,e 也 同 时 覆 盖 了 , 即 同 时 达 到 了 条 件 覆 盖 和 判 定 覆 盖 。 但 是 , 并 不 是 说 满 足 条 件 覆 盖 , 就 一 定 能 够 满 足 判 定 覆 盖 。 ( 4) 判 定 /条 件 覆 盖 判 定 / 条 件 覆 盖 要 求 设 计 足 够 的 测 试 用 例 ,使 得 判 定 中 每 个 条 件 的 所 有( 真 / 假 )至 少 出 现 一 次 , 并 且 每 个 判 定 本 身 的 判 定 结 果 ( 真 /假 ) 也 至 少 出 现 一 次 。 对 于 上 述 示 例 程 序 段 , 采 用 测 试 用 例 1 和 测 试 用 例 5, 可 以 达 到 判 定 /条 件 覆 盖 若 就 的 这 一 要 求 , 如 判 断 /条 件 覆 盖 测 试 用 例 表 所 示 。 判 断 /条 件 覆 盖 测 试 用 例 表 测 试 用 例 A, B, X 执 行 路 径 覆 盖 条 件 (A>1)AND (B=0) (A=2) OR (X>1) 测 试 用 例 1 2, 0, 3 ace T1 ,T 2 ,T3, T4 真 ( T) 真 ( T1) 测 试 用 例 5 1, 1, 1 abd -T1 ,-T2 ,-T3,-T4 假 ( -T) 假 ( - T1) 在 实 际 情 况 下 , 大 多 数 计 算 机 不 能 用 一条指令对多个条件做出判定,而必须 将源程序中对多个条件的组合分解成 几个简单的单个条件判定,上例经编译系统 产生的目标程序执行流程如图所 示。从执行流程得到,上面的两个例子未能使目 标程序中每一个简单判定区 的 各 种 可 能 的 结 果( 真 /假 ) ,如 不 可 能 使 判 定 I ( B=0) 为 “假 ”,也 不 可 能 使 判 定 K( X>1)为 “真 ”。原 因 是 :含 有 AND 和 OR 的 逻 辑 表 达 式 中 ,某 些 条 件 将 对 其 他 条 件 产 生 抑 制 , 如 逻 辑 表 达 式 AAND B, 如 果 A 为 “假 ”, 目 标 程 序 就 不 用 再 检 查 B 了 ,这 样 B 中 的 错 误 就 无 法 发 现 。 ( 5)组 合 覆 盖 组 合 覆盖的目的是通过执行足够的测试用例,使得每个判定中条件的各种可 能都 至 少 出 现 一 次 。 此 , 足 条 件 组 合 覆 盖 的 测 试 用 例 一 定 满 足 “判 定 覆 盖 ”、 “条 因 满 件 覆 盖 ”、“判 定 /条 件 覆 盖 ”。 在 上 述 示 例 程 序 段 中 的 每 个 判 定 个 包 含 有 2 个 条 件 ,这 2 个 条 件 在 判 定 中 有 8 种 可 能 的 组 合 ,如 下 : ● A>1, B=0 记 为 T1,T2 1) ● A>1, B<>0 记 为 T1,-T2 2) ● A<=1, B=0 记 为 -T1,T2 3) ● A<=1, B<>0 记 为 -T1,-T2 4) ● A=2, X>1 记 为 T3,T4 5) ● A=2, X<=1 记 为 T3,-T4 6 ) ● A<>2, X>1 记 为 -T3,T4 7 ) ● A<>2, X<=1 记 为 -T3,-T4 8) 下 面 的 4 个 测 试 用 例 , 用 以 覆 盖 上 述 8 种 条 件 组 合 , 如 组 合 覆 盖 测 试 用 例 表 所 示 。 组 合 覆 盖 测 试 用 例 表 测 试 用 例 A,B, X 执 行 路 径 覆 盖 条 件 覆 盖 组 合 号 测 试 用 例 1 2, 0, 3 ace T1 ,T 2 ,T3, T4 1, 测 试 用 例 4 2, 5 1, 1 abe T1 ,-T2 ,T3,-T4 2, 6 测 试 用 例 5 1, 1, 1 abd -T1 ,-T2 ,-T3,-T4 4, 8 测 试 用 例 6 1, 0, 3 abe -T1 ,T2 ,-T3, T4 3, 7 在 示 例 程 序 段 中 共 有 4 条 路 经 , 上 面的 4 个测试用例虽然同时覆盖了全部条 件组合 4 个分支, 是却仅覆盖了 3 但 条 路 经 ,漏 掉 了 路 径 acd。 6)路 径 覆 盖 通 过 前 面 讨 论 过 的 5 种 覆 盖 准 则 的 学 ( 习,应注意到,虽然有的覆盖准则提到 经历路径这一问题,但并未涉及到路 径的覆盖。事实上,路径能否全面覆盖是软 件测试中很重要的问题。因为程 序要得到正确的结果,就必须能保证程序总是沿 着特定的路径顺利执行。只

有 当 程 序 中 的 每 一 条 路 经 都 经 受 了 检 验 ,才 能 使 程 序 受 到 了 全 面 检 验 。 路 径 覆盖的目的是指设计足够多的测试用例,要求覆盖程序中所有可能的路 径。 针对以上示例,从流程图中可以看出,其中有 4 条可能的路径。即: ● 路径 1 ace (BCEF,1-2-3-4-5) 记 为 L1 ● 路 径 2 abd (AD,1-3-5) 记 为 L2 ● 路 径 3 abe (AEF,1-3-4-5) 记 为 L3 ● 路 径 4 acd (BCD,1-2-5) 记 为 L4 因 此 ,可 以 给 出 4 个 测 试 用 例 :测 试 用 例 1、测 试 用 例 2、测 试 用 例 4 和 测 试 用 例 3。 使 其 分 别 覆 盖 这 4 条 路 经 。 如 路 径 覆 盖 测 试 用 例 表 所 示 。 路 径 覆 盖 测 试 用 例 表 测 试 用 例 A, B, X 执 行 路 径 测 试 用 例 1 2, 0, 3 ace( L1) 测 试 用 例 2 1, 0, 1 abd( L2) 测 试 用 例 4 2, 1, 1 abe( L3) 测 试 用 例 3 3, 0, 3 acd ( L4) 需 要 指 出 , 由 于 所 引 用 的 示 例 程 序 段 非 常 简 单 , 所 以 只 有 4 条 路 经 。 但实际 问题当中,一个不太复杂的程序,其路径都是一个庞大的数字,要在 测试中覆盖 这样多的路径是无法实现的。为了解决这个难题,只有把覆盖路 径 数 量 压 缩 到 一 定 的 限 度 内 ,例 如 ,程 序 中 的 循 环 体 只 执 行 了 一 次 。 另 外 需 要注意的事,在实际工作中,即使对于路径数目很有限的程序已经做 到路径 覆盖,仍然不能保证被测试程序的正确性,还需要采用其他测试方法进行 补 充。 4.5 问 : 什 么 是 基 本 路 径 测 试 方 法 ? 答 :对 于 复 杂 性 大 的 程 序 要 做 到 所 有 路 径 覆 盖( 测 试 所 有 可 执 行 路 径 )是 不 可 能 的 。根 据 前 面 叙 述 过 的 独 立 路 径 概 念 ,某 一 程 序 的 独 立 路 径 是 指 从 程 序 入 口 道程序出口的多次执行中,每次至少看一个语句集(包括运算、赋值、输入/ 输 出或判断)是新的和未被重复的。换用流图来进行描述的话,独立路径就 是 在 从 入 口 进 入 流 图 后 ,至 少 走 过 一 个 弧 。 在 不 能 做 到 所 有 路 径 覆 盖 的 前 提 下,如果某一程序的每一个独立路径都被 测试过,那么可以认为程序中的每 个语句都已经检验过了,即达到了语句覆盖, 这种测试方法就是通常所说的 基本路径测试方法。 4.6 问 : 如 何 进 行 基 本 路 径 测 试 方 法 ? 答: 试用例设计者导出一个过程设计的逻辑复杂性测度, 使用修改测度 作 测 并 为 指 南 来 定 义 执 行 路 径 的 基 本 集 ,从 该 基 本 集 导 出 的 测 试 用 例 保 证 对 程 序 中 的 每 一 条 执 行 语 句 至 少 执 行 一 次 。基 本 路 径 测 试 用 例 的 设 计 方 法 步 骤 如 下 ,分 为 以 下 四 个 步 骤 : ( 1)画 出 程 序 的 控 制 流 图 。 2)计 算 环 形 复 杂 度 。 环 形 复 ( 杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用 于计算 程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的 上 界 。独 立 路 径 必 须 包 含 一 条 在 定 义 之 前 不 曾 用 到 的 边 。有 以 下 三 种 方 法 计 算 环 形 复 杂 度 : a) 流 图 中 区 域 的 数 量 对 应 于 环 形 复 杂 度 ; b) 给 定 流 图 G 的 环 ( ( 形 复 杂 度 V(G), 定 义 为 V(G)=E-N+2, E 是 流 图 中 边 的 数 量 , N 是 流 图 中 节 点 的 数 量 ; c) 给 定 流 图 G 的 环 形 复 杂 度 V(G), 定 义 为 V(G)=P+1, P 是 流 ( 图 G 中 判 定 节 点 的 数 量 。 ( 3)导 出 测 试 用 例 ,根 据 上 面 的 计 算 方 法 ,导 出 基 本 路 径 集 , 列 出 程 序 的 独 立 路 径 。 ( 4) 设 计 测 试 用 例 。 4.7 问 : 代 码 走 查 属 于 白 盒 测 试 范 畴 ,请 以 Java 为 例 ,说 明 一 种 语 言 规 范 走 查 的 内 容 。 答 : Java 语 言 规 范 走 查 内 容 一 般 情 况 下 , 包 括 以 下 内 容 : 测 试 项 测 试 内 容 下 标 是 否 有 下 标 变 量 越 界 错 误 ? 除 数 是 否 包 含 有 除 零 错 误 的 可 能 ? Get 方 法 当对一个不知是否为空的对象取其属性值会引起空指 针异常。如果空指针异 常没有被接收程序将终止。 字符串 在字符串比较和将字符串写入数据表前应 Trim()掉 它 的 前 后 空 格 。 字 符 串 连 结 符 "+" 将 字 符 串 连 结 操 作 中 的 +操 作 符

同 加 法 运 算 中 的 +操 作 混 淆 将 导 致 奇 怪 的 结 果 。 例 如 : y 为 int 类 型 , y 的 值 为 5, g.drawString("y+2="+y+2,30,30);将 显 示 y+2=52 Float double 不 要 用 等 于或不等于来比较浮点值,而应该判断其差别 是否小于某一指定小的值。例 如 : 89.6 实 际 可 能 为 89.59999232458 Float double 不 要 对 浮 点 值 用 做 计 数 循 环 , 应 用 整 型 值 。 Float double 不 要 使 用 类 型 float 或 者 double 的 变 量 执 行 精 确 的 金 融 计 算 。浮 点 数 的 不 精 确 会 导 致 引 起 不 正 确 金 融 计 算 的 错 误 。可 定 义 若 干 类 来 完 成 不 同 的 金 融 计 算 。 switch switch 语 句 的 末 尾 如 果 没 有 defaul 语 句 将 会 不 利 于 处 理 异 常 。 switch 是 否 在 switch 结 构 中 的 每 一 个 case 语 句 体 结 束 时 都 有 break 语 句 ? if 语 句 在 if 语 句 体 右 括 号 后 紧 跟 一 个 分 号 常 常 是 一 个 错 误 , 会 使 if 语 句 成 为 顺 序 语 句 。 通 过 循 环 语 句 对 一 Vector 型 变 量 赋 值 时 , 其 Vector 变 量 的 实 例 化 语 句 是 否 被 错 误 地 包 含 在 循 环 体 内 ? 注意循环的条件中是否有差 1 的现象? 循环语句 代码是否有无穷循环的可 能 ? ( 循 环 条 件 永 远 为 真 ) 数 值 范 围 是 否 存 在 溢 出 错 误 This Super This 和 Super 的 用 法 是 否 正 确 构 造 子 是 否 缺 少 构 造 子 方 法 方 法 声 明 方 法 声 明 错 误 参数 参数错误 返回值 返回值错误 计算 计算错误 比较 比较错误 控 制 流 控 制 流 错 误 类 的 修 饰 符 修 饰 符 是 否 符 合 以 下 原 则 : Public 用 于 对 所 有 的 类 可 见 , Private 用 于 对 本 类 可 见 Protected 不 仅 用 于 对 子 类 可 见 , 也 用 于 对同一个包的其 它所有类可见


相关文章:
白盒测试用例设计1-无相关简单流程图
白盒测试用例设计1-无相关简单流程图_计算机软件及应用_IT/计算机_专业资料。白盒测试用例设计1-无相关简单流程图十分详细,真正讲清楚了白盒测试用例设计的逻辑覆盖...
白盒测试用例
白盒测试用例 1.如下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、 判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。 ...
白盒测试用例练习_图文
白盒测试用例练习 1. 为以下所示的程序段设计一组测试用例, 要求分别满足语句覆盖、 判定覆盖、 条件覆盖、 判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序...
实验1 白盒测试
覆盖和路径覆盖法设计测试用例方法的不熟悉,所以导致效率很 低,书写测试用例中出现很多错误,通过同学的帮助已经解决,通过这次白盒测试用例的实验,我 对的重测试用例...
白盒测试:路径测试及测试用例设计
041240134 刘玉宝 任课教师: 实验日期:2015 年 6 月 16 日 实验题目 实验目的 实验 5、白盒测试:路径测试及测试用例设计 1、掌握独立路径,程序基本路径测试...
白盒测试用例设计方法
白盒测试用例设计方法_计算机软件应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 白盒测试用例设计方法_计算机软件应用_IT/计算机_专业资料。白...
白盒测试
白盒测试_计算机软件及应用_IT/计算机_专业资料。《软件测试》 白盒测试院 专...白盒测试用例设计一、实验目的通过本次实验掌握白盒测试的各种方法以及用例的设计...
白盒测试用例设计方法
白盒测试用例设计方法_IT/计算机_专业资料。白盒测试用例设计方法 1. 白盒测试用例设计方法 1.1. 白盒测试概述由于逻辑错误和不正确假设与一条程序路径被运行的...
白盒测试练习及答案
白盒测试练习及答案_理学_高等教育_教育专区。1、在白盒测试用例设计中,有语句覆盖、分支覆盖、条件覆盖、路径覆盖等,其中( A ) 是最强的覆盖准则。为了对如下...
白盒测试用例练习题
白盒测试实验一 1.为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、 判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图...
更多相关标签: