Professional Documents
Culture Documents
IT 论坛 科技视界 2012 年 02 月第 04 期
软件测试方法概述
张新华 何永前
(中国人民解放军海军湛江航保厂 广东 湛江 524002)
【摘 要】软件测试是软件质量的 重 要 保 证 ,对 软 件 测 试 的 目 的 、原 则 、标 准 做 了 简 介 ,同 时 介 绍 了 几 种 常 用 的 软 件 测 试 方
法。
【关键词】软件测试;需求分析;软件质量
【Abstract 】Software testing is an important guarantee for software quality assurance, software testing purposes, principles, stan-
dards do About the same time introduces some commonly used software testing methods.
【Key words 】Software testing ;Software quality ;Requirements analysis
0 简介 件,例如飞行控制、核反应堆监控软件 等 ,其 测 试 费 用 甚 至 高
达所有其他软件工程阶段费用的总和的 3~5 倍。
在开发软件的过程中,人们 使 用 了 许 多 保 证 软 件 质 量 的
方法分析、设计和实现软件,但难免在工 作 中 犯 错 误 。 这 样 , 1 软件测试的目的和原则
在软件产品中就会隐藏许多错误和缺 陷 。 对 于 规 模 大 、复 杂
基于不同的立场,存在着 两 个 不 同 的 测 试 目 的 。 从 用 户
性高的软件更是如此。 在这些错误中,有些是致命的错误,如
的角度出发,普遍希望通过软件测 试 暴 露 软 件 中 隐 藏 的 错 误
果不排除,就会导致生命与财产的重 大 损 失 。 这 种 情 况 迫 使
和缺陷,以考虑是否接受该产品。 而 从 软 件 开 发 者 的 角 度 出
人们必须认真计划、彻底地进行软件测试 [3][6]。
发, 则希望测试成为表明软件产品 中 不 存 在 错 误 的 过 程 ,验
为 了 保 证 软 件 的 质 量 和 可 靠 性 ,应 力 求 在 分 析 、设 计 等
证该软件已正确第实现了用户的要 求 ,确 立 人 们 对 软 件 质 量
各个开发阶段结束前,对软件进行严 格 的 技 术 评 审 。 但 由 于
的信心。 因此,他们会选择那些导 致 程 序 失 效 概 率 小 的 测 试
人们能力的局限性,审查不能发现所 有 的 错 误 。 而 且 在 编 码
用例,回避那些易于暴露程序错误的测试用例。 同时,也不会
阶段还会引进大量的错误。 这些错误和缺陷如果遗留到软件
着意去检测、排除程序中可能包含的副作用。 显然,这样的测
交付投入运行之时,终将会暴露出来。 但到那时,不仅改正这
试对完善和提高软件的质量毫无价值。 因为在程序中存在着
些错误的代价更高,而且往往造成很恶劣的后果。
许 多 预 料 不 到 的 问 题 ,可 能 会 被 疏 漏 ,许 多 隐 藏 的 错 误 只 有
软件测试就是在软件投入运 行 前 , 对 软 件 需 求 分 析 、设
在特定的环境下才能暴露出来。 如果不把着眼点放在尽可能
计规格说明和编码的最终审查, 是软件质量保证的关键步
查找错误这样一个基础上,这些隐 藏 的 错 误 和 缺 陷 就 查 不 出
骤。 如果给软件测试下定义,可以这样讲:软件测试是为了发
来,会遗留到运行阶段中去。 如果站在用户的角度,替他们设
现错误而执行程序的过程。 或者说,软 件 测 试 是 根 据 软 件 开
想,就应当把测试活动的目标对准 揭 露 程 序 中 的 错 误 。 在 选
发各阶段的规格说明和程序的内部结构而精心设计一批测
取测试用例时,考虑那些易于发现程序错误的数据。
试 用 例 ( 即 输 入 数 据 和 预 期 的 结 果 ) ,并 利 用 这 些 测 试 用 例 去
有鉴于此 ,Grenford J.Myers 就 软 件 测 试 的 目 的 提 出 以 下
运行程序,以发现错误的过程 [1][2]。
观点:
软件测试在软件生存期中横 跨 两 个 阶 段 :通 常 在 编 写 出
(1 )测试是程序的执行过程,目的在于发现错误;
每一个模块之后就对它做必要的测试 ( 称为单 元 测 试 ) 。 编 码
(2 )一个好的测试用例在于能发现至今未发现的错误;
与单元测试属于软件生存期中的同一阶段。 在结束这个阶段
(3 )一个成功的测试用 例 是 发 现 了 至 今 未 发 现 的 错 误 的
后 ,对 软 件 系 统 还 要 进 行 各 种 综 合 测 试 ,这 是 软 件 生 存 期 的
用例。
另一阶段,即测试阶段。
测试的目标是以最少的时间和人力找出软件中潜在的
现在,软件开发机构将研制力量的 40% 以 上 投 入 到 软 件
错误和缺陷。 如果成功地实现了测 试 ,就 能 够 发 现 软 件 中 的
测试之中的事例越来越多。 特殊情况 下 ,对 于 性 命 攸 关 的 软
错误。 测试的附带收获是,它能够 证 明 软 件 的 功 能 和 性 能 与
作者简介:张新华(1974 —),天津人,本科,高级工程师,主要从事导航装备开发与研究。
何永前(1970 —),广东湛江人,研究生,高级工程师,主要从事导航装备开发与研究。
格 是 明 晰 的 、完 备 的 、简 明 的 、可 以 理 解 的 ,并 且 不 存 在 二 义 级的模块进行测试。 为了模仿被 测 试 模 块 的 低 级 模 块 ,需 要
性。 但实际上,需求规格几乎总是不完备 的 、模 棱 两 可 的 、易 哑模块或桩子模块。
于变化的。 因此,一个软件系统可以被验证 ( 满足 需 求 规 格 ) , 从上至下测试的主要好 处 就 是 排 除 了 系 统 测 试 和 集 成 ,
但仍存在不满足要求的部分, 因为规 格 本 身 是 不 完 备 的 、模 它可以让人们看见系统的早期版本并证明系统的正确性。 它
棱两可的、甚至是错误的。 软件验证 中 的 许 多 问 题 是 因 错 误 的效果之一可以提高程序员的士气。
的规格引起的。 并且由于代码的规模、复杂性,以及软件本身 从上至下测试的主要缺 点 是 需 要 桩 子 模 块 ,并 且 在 桩 子
的进化规律使得软件开发满足规格是 困 难 的 ,有 时 甚 至 是 不 模块中的测试数据直到输入输出模块加入之前不能确定。 某
可能的 。 [9]
些模块的测试数据难以创建,因 为 桩 子 模 块 不 能 模 拟 数 据 流
使得模块之间的数据流不能组织成有向无环图。
3 验证
7 从下至上测试
存 在 两 种 系 统 验 证 :一 是 系 统 发 布 前 进 行 的 ;二 是 对 系
统进行维护时。 系统验证一般是由与开发小组独立的小组完 从下至上测试策略从程序的最低级模块 ( 不调用别的模
成的, 其中一至两人充当质量控制经理与组内其他人员独 块 ) 开始。 为了模拟高一级的模块需要驱动模块。 当对所有的
立。 低一级模块测试完毕才对高一级模块进行测试。
尽管 70% 的精力花在对系统的维护上,但 系 统 的 重 新 验 从下至上测试方法的优点之一是测试数据的建立不存
证仍未被重视。 有两个理由使得重新 验 证 是 必 要 的 :一 是 修 在困难。 尽管数据流不在有向无 环 图 中 ,但 驱 动 模 块 模 拟 所
正错误;二是修改系统的能力。 重新验证检验修正是否正确、 有 的 调 用 参 数 ,如 果 关 键 模 块 位 于 调 用 模 块 的 底 部 ,则 从 上
修改是否实现, 以及修改是否对系统 的 其 它 方 面 产 生 影 响 。 至下测试方法更优。
完善的文档、功能局部化以及良好的 模 块 定 义 使 得 重 新 验 证 从下至上测试的主要缺点是系统的早期版本直到最后
较为容易一些 [10]。 模块测试完毕才产生,并且设计 和 测 试 一 个 系 统 不 能 重 叠 进
行,因为不可在低级模块设计之前进行测试。 S
4 黑盒测试
在 黑 盒 测 试 ( 或 称 功 能 测 试 ) 中 ,不 考 虑 程 序 的 内 部 结 构 【参考文献】
和表现, 其目的是确定程序的输入与输出是否与其规格一 [1 ][ 美 ]Jeffrey Richter.Windows 95 Windows NT3.5 高 级 编 程 技 术 [M].
致,力图发现以下几类错误: 郑全战 , 阿夏 , 译 . 清华大学出版社,1998 年 2 月 .
是否有不正确或遗漏了的功能? [2 ]郑 人 杰 , 殷 人 昆 , 陶 永 雷 . 实 用 软 件 工 程 [M].2 版 . 清 华 大 学 出 版 社 ,
从上至下测试从程序的顶点 模 块 开 始 ,然 后 逐 步 对 较 低 [责任编辑:曹明明]