资源描述
S T Y 高 茜 S T Y 软 件 测 试 -白 盒 测 试 白 盒 测 试 ( White Box Testing) , 按 照 程序 内 部 的 结 构 、 逻 辑 驱 动 测 试 程 序 , 通 过 测试 来 检 测 产 品 内 部 动 作 是 否 按 照 设 计 说 明 书的 规 定 正 常 进 行 , 检 验 程 序 中 的 每 条 路 径 是否 都 能 按 预 定 要 求 正 确 工 作 。 白 盒 测 试 的 对 象 主 要 是 源 程 序 。 是 指 用 代 码内 部 的 分 支 、 路 径 、 条 件 , 使 程 序 设 计 的 控制 结 构 导 出 测 试 用 例 , 是 软 件 测 试 的 主 要 方法 之 一 。 不 要 求 在 计 算 机 上 实 际 执 行 所 测 程 序 , 主 要 以 一 些 人工 的 模 拟 技 术 对 软 件 进 行 分 析 和 测 试 。 静 态 测 试 大 约可 以 找 出 25%-60%的 逻 辑 错 误 输 入 一 组 预 先 按 照 一 定 的 测 试 准 则 设 计 的 实 例 数 据 驱动 运 行 程 序 , 检 查 程 序 功 能 是 否 符 合 设 计 要 求 , 发 现程 序 中 的 错 误 的 过 程 。 检 查 程 序 的 内部 数 据 结 构 是否 有 效32 原 则所 有 逻 辑 值 都要 测 试 真 和 假两 种 情 况 1 4保 证 一 个 模 块 中的 所 有 路 径 至 少被 测 试 一 次 检 查 上 、 下 边 界及 可 操 作 范 围 内运 行 的 所 有 循 环 “ 语 句 覆 盖 ” 是 一 个 比 较 弱 的 测 试 标 准 , 它 的 含 义 是 : 选 择足 够 的 测 试 用 例 , 使 得 程 序 中 每 个 语 句 至 少 都 能 被 执 行 一 次 。 如 , 例 1: PROCEDURE M(VAR A, B, X: REAL); BEGIN IF (A1) AND (B=0) THEN X:=X/A; IF (A=2) OR (X1) THEN X:=X+1; END. 为 使 程 序 中 每 个 语 句 至 少 执 行一 次 , 只 需 设 计 一 个 能 通 过 路径 ace的 例 子 就 可 以 了 , 例 如 选择 输 入 数 据 为 : A=2 , B=0 , X=3 就 可 达 到 “ 语 句 覆 盖 ” 标 准 。 语 句 覆 盖 从 上 例 可 看 出 , 语 句 覆 盖 实 际 上 是 很 弱 的 , 如 果 第 一个 条 件 语 句 中 的 AND错 误 地 编 写 成 OR, 上 面 的 测 试 用 例是 不 能 发 现 这 个 错 误 的 ; 又 如 第 三 个 条 件 语 句 中 X 1误写 成 X 0, 这 个 测 试 用 例 也 不 能 暴 露 它 , 此 外 , 沿 着 路径 abd执 行 时 , X的 值 应 该 保 持 不 变 , 如 果 这 一 方 面 有 错误 , 上 述 测 试 数 据 也 不 能 发 现 它 们 。 比 “ 语 句 覆 盖 ” 稍 强 的 覆 盖 标 准 是 “ 分 支 覆 盖 ” (或称 判 定 覆 盖 )标 准 。 含 义 是 : 执 行 足 够 的 测 试 用 例 , 使得 程 序 中 的 每 一 个 分 支 至 少 都 通 过 一 次 。 A=2 , B=1 , X=3A=3 , B=0 , X=1 判 定 覆 盖 判 定 覆 盖 程 序 中 含 有 判 定 的 语 句 包 括 IF-THEN-ELSE、 DO-WHILE、REPEAT-UNTIL等 , 除 了 双 值 的 判 定 语 句 外 , 还 有 多 值 的 判 定语 句 , 所 以 “ 分 支 覆 盖 ” 更 一 般 的 含 义 是 : 使 得 每 一 个 分 支获 得 每 一 种 可 能 的 结 果 。 “ 分 支 覆 盖 ” 比 “ 语 句 覆 盖 ” 严 格 , 因 为 如 果 每 个 分 支 都执 行 过 了 , 则 每 个 语 句 也 就 执 行 过 了 。 但 是 , “ 分 支 覆 盖 ”还 是 很 不 够 的 , 例 如 例 1两 个 测 试 用 例 未 能 检 查 沿 着 路 径 abd执 行 时 , X的 值 是 否 保 持 不 变 。 一 个 判 定 中 往 往 包 含 了 若 干 个 条 件 , 如 例 1的 程序 中 , 判 定 (A 1) AND (B=0)包 含 了 两 个 条 件 : A 1以 及 B=0, 所 以 可 引 进 一 个 更 强 的 覆 盖 标 准 “ 条 件 覆 盖 ” 。 “ 条 件 覆 盖 ” 的 含 义 是 : 执 行 足 够 的 测 试 用 例 ,使 得 判 定 中 的 每 个 条 件 获 得 各 种 可 能 的 结 果 。 例 1的 程 序 有 四 个 条 件 : A 1、 B=0、 A=2、 X 1 为 了 达 到 “ 条 件 覆 盖 ” 标 准 , 需 要 执 行 足 够 的 测 试 用 例 使得 在 a点 有 : A 1、 A 1、 B=0、 B 0 等 各 种 结 果 出 现 , 以及 在 b点 有 : A=2、 A 2、 X 1、 X 1 等 各 种 结 果 出 现 。现 在 只 需 设 计 以 下 两 个 测 试 用 例 就 可 满 足 这 一 标 准 : A=2, B=0, X=4 (沿 路 径 ace执 行 ); A=1, B=1, X=1 (沿 路 径 abd执 行 )。 条 件 覆 盖条 件 覆 盖A=2 , B=0 , X=4 A=1 , B=1 , X=1 “ 条 件 覆 盖 ” 通 常 比 “ 分 支 覆 盖 ” 强 , 因 为 它 使 一 个判 定 中 的 每 一 个 条 件 都 取 到 了 两 个 不 同 的 结 果 , 而 判 定覆 盖 则 不 保 证 这 一 点 。“ 条 件 覆 盖 ” 并 不 包 含 “ 分 支 覆 盖 ” , 如 对 语 句 IF(A AND B)THEN S 设 计 测 试 用 例 使 其 满 足 “ 条 件 覆 盖 ” ,即使 A为 真 并 使 B为 假 ,以 及 使 A为 假 而 且 B为 真 ,但 是 它 们 都未 能 使 语 句 S得 以 执 行 。 针 对 上 面 的 问 题 引 出 了 另 一 种 覆 盖 标 准 “ 分 支 条 件 覆 盖 ” , 它 的 含 义 是 : 执 行 足 够 的 测 试 用 例 , 使得 分 支 中 每 个 条 件 取 到 各 种 可 能 的 值 , 并 使 每 个 分 支 取到 各 种 可 能 的 结 果 。对 例 1的 程 序 , 前 面 的 两 个 例 子 A=2, B=0, X=4 (沿 ace路 径 ) A=1, B=1, X=1 (沿 abd路 径 ) 是 满 足 这 一 标 准 的 。 针 对 上 述 问 题 又 提 出 了 另 一 种 标 准 “ 条 件 组合 覆 盖 ” 。它 的 含 义 是 : 执 行 足 够 的 例 子 , 使 得 每 个 判 定 中条 件 的 各 种 可 能 组 合 都 至 少 出 现 一 次 。 显 然 , 满 足“ 条 件 组 合 覆 盖 ” 的 测 试 用 例 是 一 定 满 足 “ 分 支 覆盖 ” 、 “ 条 件 覆 盖 ” 和 “ 分 支 /条 件 覆 盖 ” 的 。 再 看 例 1的 程 序 , 我 们 需 要 选 择 适 当 的 例 子 ,使 得 下 面 8种 条 件 组 合 都 能 够 出 现 :1) A1, B=0 2) A1, B 0 3) A 1, B=04) A 1, B 0 5) A=2, X1 6) A=2,X 1 7) A 2, X1 8) A 2, X 1 5)、 6)、 7)、 8) 四 种 情 况 是 第 二 个 IF语 句 的 条 件 组 合 , 而 X的 值 在 该 语 句 之 前 是 要经 过 计 算 的 , 所 以 还 必 须 根 据 程 序 的 逻 辑 推算 出 在 程 序 的 入 口 点 X的 输 入 值 应 是 什 么 。 下 面 设 计 的 四 个 例 子 可 以 使 上 述 8种 条 件 组合 至 少 出 现 一 次 : A=2, B=0, X=4 使 1)、 5)两 种 情 况 出 现 ; A=2, B=1, X=1 使 2)、 6)两 种 情 况 出 现 ; A=1, B=0, X=2 使 3)、 7)两 种 情 况 出 现 ; A=1, B=1, X=1 使 4)、 8)两 种 情 况 出 现 。 上 面 四 个 例 子 虽 然 满 足 条 件 组 合 覆盖 , 但 并 不 能 覆 盖 程 序 中 的 每 一 条 路径 , 例 如 路 径 acd就 没 有 执 行 , 因 此 ,条 件 组 合 覆 盖 标 准 仍 然 是 不 彻 底 。 路 径 测 试 就 是 设 计 足 够 多 的 测 试用 例 , 覆 盖 被 测 试 对 象 中 的 所 有 可能 路 径 。对 于 例 1, 下 面 的 测 试 用 例 则 可 对程 序 进 行 全 部 的 路 径 覆 盖 。测 试 用 例 通 过 路 径 A=2、 B=0、X=3 aceA=1、 B=0、X=1 abdA=2、 B=1、X=1 abeA=3、 B=0、X=1 acd 例 1是 很 简 单 的 程 序 函 数 , 只 有 四 条 路 径 。 但 在实 践 中 , 一 个 不 太 复 杂 的 程 序 , 其 路 径 都 是 一 个 庞大 的 数 字 , 要 在 测 试 中 覆 盖 所 有 的 路 径 是 不 现 实 的 。为 了 解 决 这 一 难 题 , 只 得 把 覆 盖 的 路 径 数 压 缩 到 一定 限 度 内 , 例 如 , 程 序 中 的 循 环 体 只 执 行 一 次 。 基 本 路 径 测 试 就 是 这 样 一 种 测 试 方 法 , 它 在 程 序控 制 图 的 基 础 上 , 通 过 分 析 控 制 构 造 的 环 行 复 杂 性 ,导 出 基 本 可 执 行 路 径 集 合 , 从 而 设 计 测 试 用 例 的 方法 。 设 计 出 的 测 试 用 例 要 保 证 在 测 试 中 程 序 的 每 一个 可 执 行 语 句 至 少 执 行 一 次 。 前 提 条 件 : 测 试 进 入 的 前 提 条 件 是 在 测 试 人 员 已经 对 被 测 试 对 象 有 了 一 定 的 了 解 , 基 本 上 明 确 了 被测 试 软 件 的 逻 辑 结 构 。测 试 过 程 : 过 程 是 通 过 针 对 程 序 逻 辑 结 构 设 计 和加 载 测 试 用 例 , 驱 动 程 序 执 行 , 以 对 程 序 路 径 进 行测 试 。 测 试 结 果 是 分 析 实 际 的 测 试 结 果 与 预 期 的 结果 是 否 一 致 。 在 程 序 控 制 流 图 的 基 础 上 , 通 过 分 析 控 制 构 造 的环 路 复 杂 性 , 导 出 基 本 可 执 行 路 径 集 合 , 从 而 设 计测 试 用 例 。 包 括 以 下 4个 步 骤 和 一 个 工 具 方 法 : 1.程 序 的 控 制 流 图 : 描 述 程 序 控 制 流 的 一 种 图 示 方 法 。2.程 序 圈 复 杂 度 : McCabe复 杂 性 度 量 。 从 程 序 的 环 路 复 杂 性 可导 出 程 序 基 本 路 径 集 合 中 的 独 立 路 径 条 数 , 这 是 确 定 程 序 中 每个 可 执 行 语 句 至 少 执 行 一 次 所 必 须 的 测 试 用 例 数 目 的 上 界 。3.导 出 测 试 用 例 : 根 据 圈 复 杂 度 和 程 序 结 构 设 计 用 例 数 据 输 入和 预 期 结 果 。4.准 备 测 试 用 例 : 确 保 基 本 路 径 集 中 的 每 一 条 路 径 的 执 行 。 工 具 方 法 : 图 形 矩 阵 : 是 在 基 本 路 径 测 试 中 起 辅 助 作 用 的软 件 工 具 , 利 用 它 可 以 实 现 自 动 地 确 定 一 个 基 本路 径 集 。 在 介 绍 基 本 路 径 方 法 之 前 , 必 须 先 介 绍 一 种 简 单的 控 制 流 表 示 方 法 , 即 流 图 。 流 图 是 对 待 测 试 程序 过 程 处 理 的 一 种 表 示 。 流 图 使 用 下 面 的 符 号 描述 逻 辑 控 制 流 , 每 一 种 结 构 化 构 成 元 素 有 一 个 相应 的 流 图 符 号 。 顺 序 结 构 if 结 构 Case 结 构while 结 构 until 结 构 流 图 只 有 二 种 图 形 符 号l 图 中 的 每 一 个 圆 称 为 流 图 的 结 点 , 代 表 一 条 或 多条 语 句 。l 流 图 中 的 箭 头 称 为 边 或 连 接 , 代 表 控 制 流 。任 何 过 程 设 计 都 要 被 翻 译 成 控 制 流 图 。 在 将 程 序 流 程 图 简 化 成 控 制 流 图 时 , 应 注 意 :l 在 选 择 或 多 分 支 结 构 中 , 分 支 的 汇 聚 处 应 有 一 个汇 聚 结 点 。l 边 和 结 点 圈 定 的 区 域 叫 做 区 域 , 当 对 区 域 计 数 时 ,图 形 外 的 区 域 也 应 记 为 一 个 区 域 。 17 6 2,389 1011 4,5 7 6 231 8 4 511 9 10 节 点 边 区 域区 域 : 由 边 和 节 点 封 闭 起 来 的 区 域计 算 区 域 : 不 要 忘 记 区 域 外 的 部 分待 测 试 程 序 用 流 图 表 示 的 待 测 试程 序 如 果 判 断 中 的 条 件 表 达 式 是 由 一 个 或多 个 逻 辑 运 算 符 (OR, AND, NAND, NOR) 连 接 的 复 合 条 件 表 达 式 , 则 需 要改 为 一 系 列 只 有 单 条 件 的 嵌 套 的 判 断 。 例 如 : 1 if a or b 2 x 3 else 4 y 独 立 路 径 : 至 少 沿 一 条 新 的 边 移 动 的 路 径17 6 2,389 1011 4,5 路 径 1: 1-11路 径 2: 1-2-3-4-5-10-1-11路 径 3: 1-2-3-6-8-9-10-1-11路 径 4: 1-2-3-6-7-9-10-1-11对 以 上 路 径 的 遍 历 , 就是 至 少 一 次 地 执 行 了 程序 中 的 所 有 语 句 。 第 一 步 : 画 出 控 制 流 图 流 程 图 用 来 描 述 程 序 控 制 结 构 。 可 将 流 程 图 映 射 到 一 个 相 应的 流 图 。 在 流 图 中 , 每 一 个 圆 , 称 为 流 图 的 结 点 , 代 表 一 个 或多 个 语 句 。 一 个 处 理 方 框 序 列 和 一 个 菱 形 决 测 框 可 被 映 射 为 一个 结 点 , 流 图 中 的 箭 头 , 称 为 边 或 连 接 , 代 表 控 制 流 , 类 似 于流 程 图 中 的 箭 头 。 一 条 边 必 须 终 止 于 一 个 结 点 , 即 使 该 结 点 并不 代 表 任 何 语 句 (例 如 : if-else-then结 构 )。 由 边 和 结 点 限 定的 范 围 称 为 区 域 。 计 算 区 域 时 应 包 括 图 外 部 的 范 围 。 第 一 步 : 画 出 控 制 流 图 第 二 步 : 计 算 圈 复 杂 度 圈 复 杂 度 是 一 种 为 程 序 逻 辑 复 杂 性 提 供 定 量 测 度的 软 件 度 量 , 将 该 度 量 用 于 计 算 程 序 的 基 本 的 独 立路 径 数 目 , 为 确 保 所 有 语 句 至 少 执 行 一 次 的 测 试 数量 的 上 界 。 独 立 路 径 必 须 包 含 一 条 在 定 义 之 前 不 曾用 到 的 边 。 第 二 步 : 计 算 圈 复 杂 度 , 对 应右 图 中 的 圈 复 杂 度 , 计 算 如 下 :l 流 图 中 有 四 个 区 域 ;l V(G)=10条 边 -8结 点 +2=4; 第 三 步 : 导 出 测 试 用 例 根 据 上 面 的 计 算 方 法 , 可 得 出 四个 独 立 的 路 径 。 (一 条 独 立 路 径 是 指 ,和 其 他 的 独 立 路 径 相 比 , 至 少 引 入一 个 新 处 理 语 句 或 一 个 新 判 断 的 程序 通 路 。 V(G)值 正 好 等 于 该 程 序 的独 立 路 径 的 条 数 。 )路 径 1: 4-14 路 径 2: 4-6-7-14路 径 3: 4-6-8-10-13-4-14 路 径 4: 4-6-8-11-13-4-14根 据 上 面 的 独 立 路 径 , 去 设 计 输 入 数据 , 使 程 序 分 别 执 行 到 上 面 四 条 路 径 。 第 四 步 : 准 备 测 试 用 例 : 为 了 确 保 基 本 路 径 集中 的 每 一 条 路 径 的 执 行 , 根 据 判 断 结 点 给 出 的 条件 , 选 择 适 当 的 数 据 以 保 证 某 一 条 路 径 可 以 被 测试 到 。 下 例 程 序 流 程图 描 述 了 最 多 输 入50个 值 ( 以 1作为 输 入 结 束 标 志 ) ,计 算 其 中 有 效 的 学生 分 数 的 个 数 、 总分 数 和 平 均 值 。 开 始 i =1, n1=n2=0, sum=0Score i -1 AND n20 AND scorei0 average=sum/n1average= 1 返 回F FF TT T12和 345和 6 7 89 1011 12 课 件 P41 给 出 六 个 测 试 用 例 M M Y THANKYOU!
展开阅读全文