当前位置:文档之家› 软件测试实用教程第二章 软件测试基本

软件测试实用教程第二章 软件测试基本

第二章 软件测试基本知识
测试发展历程 测试的几种观点
软件测试目的与原则
软件测试分类 软件测试模型 测试用例
测试发展历程
早在50年代,英国著名的计算机科学家图灵 就给出了程序测试的原始定义。 他认为,测试是程序正确性证明的一种极端 实验形式。早期测试主要针对机器语言和汇编语 言,给出特定的测试用例,运行被测程序,将所 得结果与预期结果进行比较,从而判断程序的正 确性。 缺点:测试方法和理论研究缓慢。除去非常 关键的程序系统外,一般程序的测试大都是不完 备的。
在20世纪60年代计算机发展早期,软 件测试含义比较窄,等同于“调试”,目 的是纠正软件的故障,常常由软件开发人 员自己进行。对测试的投入极少,测试介 入也晚,常常是等到形成代码,产品已经 基本完成时才进行测试。
直到70年代以后,测试的意义才逐渐被人们认识,软件测 试的研究才开始受到重视。 F.P.Brooks总结了开发IBM OS/360操作系统中的经 验,在著名的《神秘的人月》一书中阐明了软件测试在研 制大系统中的重要意义。 1975年,Goodenough首次提出了软件测试理论,从而把 软件测试这一实践性很强的学科提高到理论的高度。 W.C.Hetzel整理出版了“Program Test Methods“一 书,纵览了测试方法以至各种自动测试工具,这是软件测 试的第一本著作。 E.P.Miller在测试管理和普及方面作了大量工作,他为 把现代测试概念推向实践做出了重要贡献。 1982年,美国北卡来纳大学召开了首次软件测试技术会 议,这次会议成为软件测试技术发展的一个重要的里程碑。 此后,测试理论、测试方法进一步完善,从而使软件测试 这一实践性很强的学科成为有理论指导的学科。
J. C.Huang提出了程序插装的概念
W.E.Howden对路径测试进行了深入的分析 L.A.Clarke等人提出了符号测试方法 R. A. Demillo提出了基于程序变异的测试方法 L.Osterweit等人首先引入了数据流测试方法 L White等提出了新的测试策略——域测试策略 DeMillo91提出了一种基于故障的测试产生方法
软件测试的风险论
软件测试的风险论认为测试是对软件系统中 潜在的各种风险进行评估的活动。对应这种观点 ,产生基于风险的测试策略,首先评估测试的风 险,功能出问题的概率有多大?哪些是用户最常 用的20%功能——Pareto原则(也叫80/20原则) ?如果某个功能出问题,其对用户的影响有多大 ?然后根据风险大小确定测试的优先级。优先级 高的测试,优先得到执行。一般来讲,针对用户 最常用的20%功能(优先级高)的测试会得到完 全执行,而低优先级的测试(另外用户不经常用 的80%功能)就不做或少做。
20世纪90年代,软件测试工具开始运用 。1996年,测试能力成熟度TMM、测试支 持度TSM等一系软件测试相关理论提出。 到了2002年,Rick和Stefan在《系统的软 件测试》一书中对软件测试做了进一步描 述:测试是为了度量和提高软件的质量, 对软件进行工程设计、实施和维护的整个 生命周期过程。2003年Brett Pettichord 发 表文章将软件测试思想划分为5个学派。
近20年来,随着计算机和软件技术飞速发展 ,软件测试技术的研究也取得了工具,如功能测试工具、
Web测试工具、性能测试工具、测试管理工具、
代码测试工具等。以软件测试服务为主导的软件
测试产业正在兴起。
测试的几种观点
软件测试的广义论与狭义论 软件测试的辩证论 软件测试的风险论 软件测试的经济学观点 软件测试的标准论
软件测试的标准论
软件测试的标准论认为软件测试为“验证(

软件测试的广义论与狭义论
传统瀑布模型认为测试是指在代码完成后、处于运行 维护阶段之前,通过运行程序来发现程序代码或软件系统 中错误。因此,不能在代码完成之前发现软件系统需求以 及设计上的缺陷,如果需求和设计上的缺陷问题遗留到后 期,这样就会造成大量返工,增加软件开发的成本、延长 开发的周期等。 为了更早地发现问题,将测试延伸到需求评审、设计 审查活动中去,将“软件质量保证”的部分活动归为测试 活动。软件生命周期每一阶段中都应包含测试,用于检验 本阶段的成果是否接近预期的目标,尽可能早的发现错误 并加以修正,将软件测试和质量保证合并起来的软件测试 ,被认为是一种软件测试的广义概念。
软件测试的辩证论
验证软件是验证软件是“工作的”,是指软件的功能 是按照预先的设计执行的,以正向思维,针对软件系统的 所有功能点,逐个验证其正确性。其代表人物是软件测试 领域的先驱Dr. Bill Hetzel (代表论著《The Complete Guide to Software Testing》)。 反之,证明软件是“不工作的”,以反向思维方式, 不断思考开发人员理解的误区、不良的习惯、程序代码的 边界、无效数据的输入以及系统的弱点,试图破坏系统、 摧毁系统,目标就是发现系统中各种各样的问题。其代表 人物是Glenford J. Myers。(代表论著《The Art of Software Testing》)他强调一个成功的测试必须是发现 Bug的测试,不然就没有价值。他于1979年提出了他对软 件测试的定义:“就是以发现错误为目的而运行程序的过 程。”
软件测试的经济学观点
“一个好的测试用例是在于它能发现至 今未发现的错误”,体现了软件测试的经 济学观点。这是由于在需求阶段修正一个 错误的代价是1,而在设计阶段就是它的3 ~6倍,在编程阶段是它的10倍,在内部测 试阶段是它的20~40倍,在外部测试阶段 是它的30~70倍,而到了产品发布出去时 ,这个数字就是 40~ 1000倍。修正错误的 代价不是简单地随着时间线性增长,而几 乎是呈指数级增长的。因此,应该尽快尽 早地发现缺陷。
相关主题