第一章 软件测试概述
软件工程-软件测试
第一一章软件测试软件测试是发现软件错误与缺陷地主要手段。
为了保证软件产品地质量,软件开发员通过软件测试发现产品存在地问题,并对其行及时地修改。
可以说,软件测试地过程就是发现并改正软件缺陷地过程。
软件缺陷是指软件产品存在地问题,具体表现为用户所需地功能没有实现,无法满足用户地需求。
缺陷地产生是不可避免地,软件测试地工作是必需地。
在软件开发过程地任何阶段都可能引入缺陷。
缺陷被引入地阶段越早,在软件开发地后期修复这些缺陷带来地成本损失就越大。
软件测试是软件开发过程地一个重要阶段。
在软件产品正式投入使用之前,软件开发员需要保证软件产品正确地实现了用户地需求,并满足稳定,安全,一致,完全等各个方面地要求,通过软件测试对产品地质量加以保证。
实际上,软件测试过程与整个软件开发过程是同步地,也就是说,软件测试工作应该贯穿于整个开发过程。
•一一.一.一 软件测试地原则•软件测试是为了发现错误而执行程序地过程,它并不可能找出所有地错误,但是却可以减少潜在地错误或缺陷。
们在长期行软件测试实践地过程,不断地总结出一些软件测试地经验或原则,可供我们参考。
•(一) 完全测试是不可能地。
•(二) 测试存在风险。
•(三)软件测试只能表明缺陷地存在,而不能证明软件产品已经没有缺陷。
(六) 让开发小组与测试小组分立,开发工作与测试工作不能由同一部分来完成。
(七) 尽早并不断地行测试,使测试工作贯穿于整个软件开发地过程。
(八) 在设计测试用例时,应包括输入数据与预期地输出结果两个部分,并且,输入数据不仅应该包括合法地情况,还应该包括非法地输入情况。
(九) 要集测试容易出错或错误较多地模块。
(一零) 应该长期保留所有地测试用例。
•一一.一.二 软件测试模型•软件测试模型是指软件测试全部过程,活动或任务地结构框架。
•一个好地软件测试模型可以简化测试地工作,加速软件开发地程。
常用地软件测试过程模型有V模型,W模型与H模型。
V模型是最具代表意义地测试模型,它是软件开发瀑布模型地变种。
软件测试概要
第一章:软件测试概述①软件缺陷定义:(1)软件未达到产品说明书中已经标明的功能;(2)软件出现了产品说明书中指明不会出现的错误;(3)软件未达到产品说明书中虽未指出但应当达到的目标;(4)软件功能超出了产品说明书中指明的范围;(5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。
②软件缺陷的特征:•“看不到”——软件的特殊性决定了缺陷不易看到•“看到但是抓不到”——发现了缺陷,但不易找到问题发生的原因所在③软件缺陷产生原因:(1)软件产品说明书(需求)——56%(不专业—专业~~信息传递)(2)设计——27%(设计不规范)(3)编写代码——7%(4)其他——10%(软、硬件设备之间的配备问题)④软件测试发展历程:早期―→测试1957年―→为了确信自己的产品20世纪70年代―→Glenford Myers 《软件测试艺术》——“测试是为发现错误而执行一个程序或系统的过程”20世纪80年代早期―→软件质量、Bill Hetzel 《软件测试完全指南》——“测试是以评价一个程序或者系统属性为目标的任何一种活动。
测试是对软件质量的度量”20世纪90年代―→测试工具盛行2002年―→Rick和Stefan《系统的软件测试》——“测试是为了度量和提高被测软件的质量,对测试件进行工程设计、实施和维护的整个生命周期过程”⑤今天的软件测试面临的挑战:•软件在国防现代化、社会信息化和国民经济信息化中的作用越来越重要,由此产生的测试任务越来越繁重•软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题•面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步•对于分布式系统整体性能还不能进行很好的测试•对于实时系统来说,缺乏有效的测试手段•随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性难题⑥软件开发与软件测试的关系:•测试与开发各阶段的关系项目规划阶段,需求分析阶段,详细设计和概要设计阶段,编码阶段,测试阶段(软件开发生命周期)•测试与开发的并行性⑦软件测试的发展趋势:•测试工作将进一步前移。
Chapter 01_软件测试概述
如何学好这门课
向有经验的测试人员学习 阅读相关的软件测试书籍 走读缺陷管理库中的问题报告单 走读相关产品的历史测试用例 学习产品相பைடு நூலகம்的业务知识 利用已有的软件修改记录 自己尝试编写用例
软件测试职业发展
初级测试 工程师
中级测试
工程师
高级测试 工程师
测试管理者
开发工程师
独立的软件测试 软件测试 概念 第一次定义
80年代软件行业飞速发展,软件规模、复杂度都 增大,人们开始关注质量。 83年IEEE定义: 使用人工或自动的手段来运行或测量软件系统的 过程,目的是检验软件系统是否满足规定的需求, 并找出与预期结果之间的差异。 90年代,出现了各种开发模式, TDD(Test Driven Development) ,)出现
软件测试工程师的素质
责任心
沟通能力 团队合作精神 耐心、细心和信心 保持怀疑的态度,有缺陷预防的意识 不断学习的能力
合格的测试工程师
软件测试已经形成了一个独立的技术学科,软件测试技术不断 更新和完善,新工具、新流程、新的测试设计方法都在不断更新。 合格的测试工程师应具有的能力: 一般能力:包括表达、交流、协调、管理、质量意识、软件开 发过程方法、软件工程等 测试技能及方法:包括测试基本概念及方法、对测试工具的掌 握、对专业测试标准的熟悉程度等 测试规划能力:包括风险分析及防范能力、测试目标及计划的 制定能力等 测试执行能力:包括测试数据/脚本/用例的制定能力、测试比 较及分析能力、缺陷记录及处理能力 测试分析、报告和改进能力:包括测试度量、统计技术、测试
口将超过20万,在未来5到10年中这一数字还将继续增大。
在软件产业中,目前有两年工作经验的软件测试人员的月薪一般都能 够达到4000~5000。(软件测试人员的薪水主要还要看其工作经验及能力) 在企业内部,软件测试工程师基本处于“双高”地位,即地位高、待 遇高,有的人月薪可高达七八千元。可以说职业前景非常广阔,从近期的 企业人才需求和薪金水平来看,软件测试工程师的年工资有逐年上升的明 显迹象。
第1章 软件测试概述
A Free sample background from
Slide 13
第1章 软件测试概述
理的、合法的和非法的、边界和越界的,以及极限的输入
数据、操作和环境设置等。 (2)测试结果的可判定性:即测试执行结果的正确
性是可判定的或可评估的。
缺陷,衡量软件的品质,关注用户需求。
7
A Free sample background from
Slide 8
第1章 软件测试概述
1.3 软件测试原则 为了要达到测试目的,应遵循以下软件测试的基本原 则。
·所有的测试都应追溯到用户需求,软件测试的目标
Slide 14
第1章 软件测试概述
的白盒测试技术有: ·基本路径测试 ·条件测试
·数据流测试
黑盒测试需要了解功能性的规格说明,关注对功能的 需求,为测试系统的功能设计测试用例。常用的黑盒测试
技术有:
·边界值分析 ·因果测试
·等价划分
14
A Free sample background from
(4)实施测试。 (5)分析测试结果。
10
A Free sample background from
Slide 11
第1章 软件测试概述
1.拟定软件测试计划
拟定软件测试计划就是确定主要的目标、测试范围、
系统功能和非功能性需求、测试环境、测试自动控制、测 试结果分析计划、问题解决方案与报告计划、测试重用计
第1章 软件测试概述
1.5.4 按照执行主体划分 软件测试按照执行主体可划分为:开发方测试、用户
测试和第三方测试。
18
A Free sample background from
第1章软件测试概述
(2)爱国者导弹防御系统缺陷
爱国者导弹防御系统是里根总统提出的战略防 御计划(即星球大战计划)的缩略版本,它首次应 用在海湾战争中对抗伊拉克飞毛腿导弹的防御战中。 尽管对系统赞誉的报道不绝于耳,但是它确实在对 抗几枚导弹中失利,包括一次在沙特阿拉伯的多哈 击毙了28名美国士兵。分析发现症结在于一个软件 缺陷,系统时钟的一个很小的计时错误积累起来到 14小时后,跟踪系统不再准确。在多哈的这次袭击 中,系统已经运行了100多个小时。
(1)迪士尼的狮子王游戏软件缺陷。
1994年秋天,迪士尼公司发布了第一个面向儿童的多 媒体光盘游戏——狮子王动画故事书(The Lion King Animated Storybook)。尽管已经有许多其他公司在 儿童游戏市场上运作多年,但是这次是迪士尼公司首次进军 这个市场,所以进行了大量促销宣传。结果,销售额非常可 观,该游戏成为孩子们那年节假日的“必买游戏”。然而后 来却飞来横祸。12月26日,圣诞节的后一天,迪士尼公司 的客户支持电话开始响个不停。很快,电话支持技术员们就 淹没在来自于愤怒的家长并伴随着玩不成游戏的孩子们哭叫 的电话之中。报纸和电视新闻进行了大量的报道。
已经深入渗透到我们的日常生活中,软件在电子信 息领域里无处不在。现在有许多人如果一天不上网 查看电子邮件,简直就没法过下去。我们已经离不 开24小时包裹投递服务、长途电话服务和最先进的 医疗服务了。
然而软件是由人编写开发的,是一种逻辑思维 的产品,尽管现在软件开发者采取了一系列有效措 施,不断地提高软件开发质量,但仍然无法完全避 免软件(产品)会存在各种各样的缺陷。
软件测试教学PPT-软件测试概述
用于软件地开发,运行与维护,即将工程 化应用于软件。
对上述方法地研究。具体说来,软件工 程是以借鉴传统工程地原则,方法,以提 高质量,降低成本为目地指导计算机软 件开发与维护地工程学科。
软件测试与软件工程
软件测试在软件工程过程一直占据着核 心活动地地位
在瀑布模型,软件测试作为一个重要步 骤被执行,并花费整个软件开发近四零% 地时间与工作量。可以说在早期地软件 工程活动,软件质量主要是通过测试活 动保证地。
软件质量
Roger S. Pressman对软件质量地定义 为:软件要符合显式声明地功能与能需 求,显式文档化地开发标准以与专业员 开发地软件所应具有地所有隐含特。
软件地质量属,按其在运行时是否可见 分为:运行时可观察到地,包含能,安全,可 用,易用;运行时不可观察到地,包含可修 改,可移植,可测试,可集成,可重用。
小结
本章从著名地软件错误案例谈起,介绍 了软件,软件工程与软件质量,从而引出 软件缺陷地定义,出现原因与软件测试 地定义,目地,原则,并介绍了软件测试 分类。本章还介绍了软件测试行业地历 史,现状与前景。
The End
软件缺陷
软件缺陷至少满足下列五个规则之一: 软件未实现产品规格说明所要求地功能。 软件出现了产品规格说明指明不应该出
第1章 软件测试概述
第1章 软件测试概述软件测试(Software Testing)是信息系统开发中不可缺少的一个重要步骤,随着软件变得日益复杂,软件测试也变得越来越重要。
软件的基础知识、软件测试的概念(方法、目标和任务)、软件测试的定义是软件测试的基础。
本章重点讨论以下内容:● 软件的相关知识概述 ;● 软件测试的相关知识概述 ;● 测试的目的和原则;● 软件测试的流程 ;● 软件测试人员的要求 ;● 软件测试的前景 。
1.1 软件的相关知识概述做任何事,应从概念入手,才能少走弯路,才能对此概念相关的问题有一个正确的理解分析,最终解决问题。
软件测试的对象就是软件,为了进行软件测试,我们应了解什么是软件?它的内容以及生命周期?1.1.1 软件的定义1. 软件是计算机系统中与硬件相互依存的一部分,它是包括程序、数据及其相关文档的完整集合。
其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。
软件具有8个特点:(1) 软件是一种逻辑实体,而不是具体的物理实体。
因而它具有抽象性。
(2) 软件的生产与硬件不同,它没有明显的制造过程。
对软件的质量控制,必须着重在软件开发方面下功夫。
(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
然而它存在退化问题,必须要对其进行多次的修改与维护。
(4) 软件的开发和运行常常受到计算机系统的制约,对计算机系统有着不同程度的依赖性。
为了解除这种依赖性,在软件开发中提出了软件移植的问题。
(5) 软件的开发至今尚未完全摆脱手工艺的开发方式。
(6) 软件本身是复杂的。
软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7) 软件成本相当昂贵。
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。
(8) 相当多的软件工作涉及到社会因素。
许多软件的开发和运行涉及机构、体制及管理方式等问题,它直接影响到项目的成败。
第1章软件测试概述
6
3、修复软件缺陷的成本
软件开发过程是使用软件工程的方法,在整个过程
中,都有可能出现各种各样的软件缺陷。随着开发时间的 推移,软件缺陷修复成本呈倍数的增长。假如早在进行分 析时发现相关功能缺失,立即补上就可了,可以说付出的 代价小得几乎忽略不计。如果在发布时发现缺失某个功能, 那么此时加上一个功能,相当于重新开发一样,这时的修 补费用可以说高许多。因此要尽早进行测试。
12
3、测试用例设计的基本原则
从两个层次考虑测试用例: (1)低层次——从单个测试用例看,衡量其描述 的规范性、可理解性及可维护性条等。 (2)高层次——以满足某一个测试目标或测试任 务来衡量一组测试用例的结构、设计思路和覆盖 率等;
13
测试用例的基本原则: (1)代表性。测试用例能代表并覆盖各种合法的
19
2、软件测试人员的基本素质要求
基本素质要求如下:
(1)具备计算机软件测试的基本理论知识
(2)熟悉开发工具和平台
(3)掌握测试工具的使用
(4)善于学习,理解与归纳
(5)耐心、细致、工作态度好
20
1.3 本章小结
本章先从软件缺陷的表现形式及对软件的影 响入手,再介绍软件测试的产生和发展,以及修 复软件缺陷的成本;最后介绍软件测试的基本概
7
1.2 软件测试的基本概念
1.2.1软件测试的定义 软件测试专家G.J.Myers早在1979年给软件 测试下定义:软件测试是为了发现错误而针对某
个程序或系统的执行过程。
8
G.J.Myers给出与测试相关的三个要点: (1)测试是为了证明程序有错,而不是证明程序 无错误;
(2)一个好的测试用例是在于它能发现至今未发
或不合法、边界内的或越界的以及极限的输入数
第1章 软件测试概述
内部动作是否按照设计规格说明书的规定正常运行。白盒测试
又称结构测试、逻辑驱动测试、基于程序的测试。主要测试程 序内部的变量状态、逻辑结构、运行路径等。
Version 01 30 March 2019 Slide 26
1.3 软件测试的基本知识
1.3.6 软件测试的分类
5.单元测试的概念 单元测试是在软件开发过程中要进行的最低级别的测试活 动。在单元测试活动中,软件的独立单元将在与程序的其他 部分相隔离的情况下进行测试。 (1)单元接口测试; (2)局部数据结构测试;
(4)软件系统运行难以维护。
Version 01
30 March 2019
Slide 2
1.1 软件质量的基本概念
1.1.2 软件危机的相关因素
1. 软件的自身特点 (1)软件是计算机系统中的逻辑部件而不是物理部件 (2)软件不会因使用时间过长而“老化”或“用坏”; (3)软件具有可延展性、多样性特点,属于柔性生产;
(7)运行环境错误;
(8)测试定义与测试执行错误。
Version 01 30 March 2019 Slide 12
1.2 软件质量
1.2.2 软件错误
软件缺陷对系统产生的影响不同,一般分为4种级别。 (1)致命的:造成系统或程序崩溃、死机、系统悬挂、 数据丢失、功能完全丧失; (2)严重的:功能或特性没有实现、主要功能丧失;
(2)软件结构过于复杂; (3)概要设计或详细设计文档内容不正确;
(4)没有预算数据容量或预算不正确;
(5)对程序逻辑路径或数据边界考虑不周全; (6)时间同步不够准确;
(7)没有考虑系统备份和灾难恢复;
(8)硬件或系统软件存在错误。
Version 01
第一章_软件测试概述
测试的目标
• 为软件的质量评估提供依据 (项目验收) • 为软件质量改进和管理提供帮助 (经验教训等知识转移)
软件测试的原则
• Good-enough: 一种权衡投入/产出比的原则:选择测试 • 保证测试的覆盖程度,但穷举测试是不可能的:有限测
试 • 所有的测试都应追溯到用户需求 • 越早测试越好,测试过程与开发过程应是相结合的 • 测试的规模由小而大,从单元测试到系统测试 • 为了尽可能地发现错误,应该由独立的第三方来测试 • 不能为了便于测试擅自修改程序 传统的瀑布模型中软件测试学仅处于运行维护阶段之前
课程内容
• 软件测试的重要性 • 软件测试基本概念 • 软件测试误区 • 软件测试技术 • 软件测试方法 • 软件测试流程 • 软件测试过程 • 微软软件测试简介
软件测试基本概念
• 什么是软件测试 • 软件测试的目的 • 软件测试原则 • 软件测试的重点 • 软件测试质量 • 软件测试度量 • 软件的可测试性
什么是软件测试
• 软件测试通常包括验证(verification)和确认 (validation):
- 验证指保证软件正确的实现了某一特定功能的一系列活动(功 能性)
- 确认指的是保证软件的实现满足了用户需求的一系列活动(实 用性)
- ?哪一个更重要?
什么是软件测试
• 软件的质量与可靠性:
- 可靠性:运行稳定、满足客户需求 - 质量:功能强度、可靠性、性能、客服以及性价比等 - 可靠性和功能,哪一个更重要?
• 企业原因:主要是两个方面的IT服务缺失:(1)软件 选型服务缺失。缺乏IT高端人才指导,企业更多关注到 软件购买合同、价格、功能等方面的要素,而无法深入 了解到软件性能问题;(2)软件测试服务缺失。在大 用户量的情况下,该软件产品在上线前,本身就应该进 行性能测试、压力测试和安全测试。
软件测试概述
质量体系(核心是人和物这些实体)
质量保证 质量体系认证(认证机构、颁发认证证书)
质量管理的3个阶段
制作者:
Page 22
1.6 软件质量认证
软件质量管理的内容
软件质量 (SoftWare Quality ),是贯穿软件生存期的一 个极为重要的问题。是软件开发过程中所使用的各种开 发技术和验证方法的最终体现。因此,在软件生存期中 要特别重视质量的保证,以生成高质量的软件产品。 软件质量是一个软件企业成功的必要条件,其重要性无 论怎样强调都不过分。软件质量与传统意义上的质量概 念并无本质差别,只是针对软件的某些特性进行了调整。
制作者:
Page 4
1.1 回顾软件测试的发展历史
1.1.1 软件缺陷产生的原因
产业界研究表明,软件故障不一定是由编码所引起 的,大部分是因为在详细设计阶段、概要设计阶段 甚至是在需求分析阶段所存在的问题引起的 。
软件缺陷的原因分布图
不同阶段的软件缺陷修正费用示意图 缺陷放大模型图
制作者:
Page 7
1.2 软件测试的概念
1.2.1 软件测试的定义
标准定义
有关术语
测试 测试用例
软件测试模型图(V模型)
软件生命周期
制作者:
Page 8
1.2 软件测试的概念
1.2.2 软件测试方法、对象和原则
测试的方法和对象
测试的目的 测试原则 软件测试停止的标准
制作者:
Page 28
1.6 软件质量认证
1.6.3 ISO 9000质量管理标准 ISO 9000构成 ISO 9000标准的要求
第1章软件测试概述
教学特点
• 注重测试工作经验 • 注重软件测试自动化
课程体系
3/38
第一章 软件测试概述
学习目标
• 了解软件企业岗位 • 了解软件测试行业
学习方法
• 复习 • 记忆
主题
• • • • 软件公司的职位介绍 软件 软件测试 软件开发与软件测试
软件公司的职位介绍
总经理 技术总监 市场总监 人事、行政经理
• 执行的周期不同
– 测试贯穿整个软件开发生命周期,调试一般在开发 阶段。
开发VS测试
• • • • 难易程度 工作环境 薪水 发展前景
总结
• • • • • • 软件公司的职位介绍 软件 软件测试 软件测试发展与前景 软件开发与软件测试 请预习第二章
软件测试的产生
• 软件规模越来越大
• 软件开发与用户之间的矛盾
软件测试的定义
• 1979年,Glenford Myers,<软件测试艺术 >[The Art of Software Testing]:为了发现错 误而执行程序或者系统的过程; • 1983年,IEEE软件工程标准术语:使用人 工或自动手段,来运行或测试某个系统的 过程。其目的在于检验它是否满足规定的 需求或弄清预期结果与实际结果之间的差 别。
软件危机的表现
• 对软件开发成本和进度的估计很不准确 • 用户对“已完成的”软件系统不满意的现 象经常发生 • 软件产品的质量常常靠不住 • 软件常常是不可维护的 • 软件通常没有适当的文档资料 • 软件成本在计算机系统总成本中所占比例 逐年上升
软件危机出现的原因
• 软件危机的出现原因
– 一方面是由软件生产本身存在着复杂性 – 另一方面却是与软件开发所使用的方法和技术 有关。 – 软件工程正是为克服软件危机而提出的一种概 念,并在实践中不断地探索它的原理,技术和 方法。
第1章 软件测试概述
(4)软件功能超出了产品说明书中指明的范围;
(5)软件测试人员认为软件难以理解、不易使用, 或者最终用户认为该软件使用效果不良。
2、为什么会产生软件缺陷?
(1)产品需求说明书 (2)设计方案 (3)编写代码 (4)其他 图1-1 软件缺陷产生的原因分布 •其 他 10 %
•设 计 27 %
•软件产品说明书 (需求)56%
事件
1999年; 火星气象卫星(Mars Climate Orbiter)到达火星之后不久就消失; 火星极地登陆者(Mars Polar Lander)在火星上着陆时坠毁
原因
地面系统软件和飞行器上软件分别使用公制和英制两种单位。
神舟七号: 测试用例3万多。确保稳定,确保万无一失。 基本消除缺陷
$1000+
$100
$10
$1 specificatio design n code release
软件缺陷例子1
事件
1996年6月4日,Arane5发射40秒后爆炸。
原因
将一个64位浮点值转换为16位有符号整数值时,超出了16位整数的表示 范围,而这个异常未得到正确解决
软件缺陷例子2
“W”模型
Evolutif公司提出了W模型的概念,增加了软件各开发阶 段中应同步进行的验证和确认活动,明确了测试与开发的 并行性.
“W”模型
用户需求 用户需求 验收测试设计 交付
验收测试
需求分析与系 统设计
需求分析与系统设计 确认与系统测试设计
实施 确认测试与系 统测试
概要设计
概要设计 集成测试设计 集成
H模型
这个示意图仅仅演示了在整个生产周期中某个层次上的一次测试“微循 环”。图中的其他流程可以是任意开发流程。
第01章 软件测试概述资料
第1 章软件测试概述随着计算机技术的飞速发展,人们对计算机的需求和依赖与日俱增。
随之而来的是计算机系统的规模和复杂性急剧增加,其软件开发成本以及由于软件故障而造成的经济损失也正在增加,软件质量问题已成为人们共同关注的焦点。
因此,许多科学家在展望21世纪计算机科学发展方向和策略时,把软件质量放在优先于提高软件功能和性能的地位。
软件测试是对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
随着软件系统规模和复杂性的增加,进行专业化高效软件测试的要求越来越严格,软件测试职业的价值逐步得到了认可,软件测试从业人员急剧增加,软件测试评测中心如雨后春笋般成长起来。
可以预测,在未来3~5年内,软件测试技术将作为一门新兴产业而快速发展起来。
1.1 计算机系统的软件可靠性问题随着对计算机需求和依赖的与日俱增,计算机系统的规模和复杂性急剧增加,使得计算机软件的数量以惊人的速度急剧膨胀。
与此同时,计算机出现故障引起系统失效的可能性也逐渐增加。
由于计算机硬件技术的进步,元器件可靠性的提高,硬件设计和验证技术的成熟,硬件故障相对显得次要了,软件故障正逐渐成为导致计算机系统失效和停机的主要因素。
下面介绍几个实例,以说明软件故障可能造成的损失和灾难,1.千年虫问题千年虫问题是一个众所周知的软件故障。
上世纪70年代,所使用的计算机存储空间很小,这就迫使程序员在开发工资系统时尽量节省存储空间,一个简单的方法是在存储日期时,只存储2位,如1974存储为74。
工资系统常依赖于日期的处理,因此他们节省了大量的存储空间。
他们知道在2000年到来时,问题会出现,比如银行在计算利息时,是用现在的日期如“2000年1月1日”减去客户当时的存款日期如“1974年1月1日”,如果年利息为3%,那么每100元银行应付给客户78元的利息。
如果年份存储问题没有得到纠正,其存款年数就变为-74年,客户反应付给银行利息了,这显然是不合理的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
–对测试错误结果一定要有一个确认的过程。一般 有A测试出来的错误,一定要有一个B来确认,严 重的错误可以召开评审会进行讨论和分析。 – 制定严格的测试计划,并把测试时间安排得尽量 宽松,不要希望在极短的时间内完成一个高水平 的测试。 – 重复测试的关联性一定要引起充分的注意,修改 一个错误而引起更多错误出现的现象并不少见。 – 妥善保存一切测试过程文档,意义是不言而喻的, 测试的重现性往往要靠测试文档。
• 生命周期模型:
– 软件开发过程中的各种活动构成软件开发的生命 周期,而随着这些活动的组织方式和方法不同, 就构成不同的软件开发生命周期模型。
• 生命周期与测试的关系:
–也就是说,虽然软件开发的生命周期模型有所不 同,但软件开发的阶段性始点和终点是相同的, 而且软件测试是不可缺少的一项工作。
1.2.1顺序生命周期模
1.3.7 系统测试
• 恢复测试:
–恢复测试主要检查系统的容错能力。当系 统出错时,能否在指定时间间隔内修正错 误并重新启动系统。
• 安全测试:
–安全测试检查系统对非法侵入的防范能力。
• 强度测试:
–强度测试检查程序对异常情况的抵抗能力。
• 性能测试:
– 对于那些实时和嵌入式系统,软件部分即 使满足功能要求,也未必能够满足性能要 求,虽然从单元测试起,每一测试步骤都 包含性能测试,但只有当系统真正集成之 后,在真实环境中才能全面、可靠地测试 运行性能,系统性能测试是为了完成这一 测试任务。
第一章 软件测试概述
• 软件测试的意义
–计算机在关键领域的重要性 –软件对计算机系统的影响 –软件测试可以一定程度上减少系统故障
• 本课程的主要内容
–软件测试的基本概念 –软件测试技术
• 白箱法 • 黑箱法
–TTCN树表描述语言 –LOTOS时序逻辑描述语言
第一节 软件故障与软件测试
• 两个软件故障的例子
统称为错误
统称为失败
第一节 软件故障与软件测试
• 第一类称为缺陷:它们都是软件开发过程潜在的隐患,这些
缺陷可能在软件投入运行后出现,使得软件的性能和可靠性等 方面与系统的设计要求不符;有时这些问题可能不出现,软件 的性能和可靠性并不会因为它们的存在而受到影响。
• 第二类称为错误:这类错误与软件运行状态有关,它们是在
– 所谓软件测试是为了评价一个软件系统的 质量和发现错误而从事的一种工作过程。 – 可分为局部软件的局部运行和全部运行; 从运行的环境来看,可有仿真运行和实际 运行。这就存在一个软件测试中的方式和 方法的问题。而方法又与采用的技术相关, 技术不同,方法也不同。所以软件测试技 术是测试的关键。
1.2软件测试与软件开发过程
需求阶段 验收测试阶段 体系结构设计阶段 系统集成阶段
系统详细设计阶段
软件集成阶段
编码和单元测试阶段
图1-1V 生命周期模型
需求阶段 体系结构设计阶段 系统详细设计阶段 编码和单元测试阶段 软件集成阶段 系统集成阶段
图1-2 瀑布生命周期模型
验收测试阶段
1.2.2 渐进式开发生命周期模型
Phase 1 Development Interim Delivery1
1.3.5 综合测试
• 综合测试是组装软件的系统测试技术, 按设计要求把通过单元测试的各个模块 组装在一起之后,进行综合测试以便发 现与接口有关的各种错误。
1.3.6确认测试(集成测试)
• 确认测试应检查软件能否按合同要求进 行工作,即是否满足软件需求说明书中 的确认标准。 • 确认测试标准 • 配置复审
软件运行过程中可观测到的软件错误。这些问题出现的原因是 软件缺陷所致。
• 第三类称为失败:这是软件运行给用户造成的损失的一类软
件故障,它强调软件失败的结果。失败的直接原因是软件系统 存在软件错误。并不是所有的软件错误都会导致软件失败,如 果对软件错误加以适当的控制,软件错误可以导致安全。
• 什么是软件测试呢?
• 协议测试是一种黑盒测试,它按照协议 标准,通过控制观察被测协议实现的外 部行为对其进行评价 • 协议测试分成三个方面进行研究:
– 一致性测试(Conformance Testing) – 互操作性测试(Interoperability Testing) – 性能测试(Performance Testing)。
Phase 2 Development
Interim Delivery2
Final Phase
Final Delivery
图 1.3 progressive development lifecycle
1.2.3 迭代生命周期模型
Start Requirement Design
Complete
Review
Implements & Test
1-4 迭代生命周期模型
1.3 软件测试方法与测试内容
• 软件测试的种类:
– 从是否需要执行被测软件的角度,可分为静态测 试和动态测试。 – 从测试是否针对系统的内部结构和具体实现算法 的角度,可分为白盒测试和黑盒测试; – 从测试范围角度,可分为单元测试、系统测试、 集成测试等等; – 从测试目标角度,可分为性能测试、功能测试、 可靠性测试等等。 – 从测试采用的工具角度,可分自动测试,手工测 试等。
1.3.3 ALAC测试
• ALAC测试是一种基于客户使用产品的 知识开发出来的测试方法。ALAC测试 是基于复杂的软件产品有许多错误的原 则。最大的受益者是用户,缺陷查找和 改正将针对哪些客户最容易遇到的错误。
1.3.4 单元测试
• 单元测试的对象是软件设计的最小单 位——模块。单元测试的依据是详细设 计描述,单元测试应对模块内所有重要 的控制路径设计测试用例,以便发现模 块内部的错误。单元测试多采用白盒测 试技术,系统内多个模块可以并行地进 行测试。
ห้องสมุดไป่ตู้
1.3.1 黑盒测试
• 黑盒测试也称功能测试或数据驱动测试, 它是在已知产品所应具有的功能的情况 下,通过测试来检测每个功能是否都能 正常使用。
1.3.2 白盒测试
• 白盒测试也称结构测试或逻辑驱动测试, 它是在知道它产品内部工作过程的前提 下,可通过测试来检测产品内部动作是 否按照规格说明书的规定正常进行。
1.4软件测试原则与特点
• 软件测试的原则
–应当把“尽早和不断地测试”作为开发者的座右 铭。 –程序员应该避免检查自己的程序,测试工作应该 由独立的专业的软件测试机构来完成。 –设计测试用例时,应该考虑到合法的输入和不合 法的输入,以及各种边界条件,特殊情况下要制 造极端状态和意外状态,比如网络异常中断、电 源断电等情况。 –一定要注意测试中的错误集中发生现象,这和程 序员的编程水平和习惯有很大的关系。
– Intel奔腾处理器故障
• 1994年12月30日,美国Lynchburg大学的Thomas R.Nicely R.Nicely博士在一台奔腾PC机上做运算时发现, PC (4195835/3145727)*3145727-4195835不等于0 (4195835/3145727)*3145727-4195835 0
1.4.2 软件测试特点
• 完全测试程序是不可能的。
图1-5 一个程序结构图
• 软件测试是有风险的行为: • 测试无法显示潜在的软件缺陷 • 发现的缺陷越多,说明软件缺陷越多
• 小结:
– 软件故障可大体上分为三种类型,软件缺陷是根 源,后两类故障是软件缺陷的直接后果。 – 软件测试与生命周期的关系
1.3.8 面向对象的软件测试
• 面向对象的软件测试(OOTest)是根据面 向对象的软件开发方法所设计的软件系 统所提出的软件测试方法。 • OO Test又分为:
– 面向对象分析的测试(OOA Test) – 面向对象设计的测试(OOD Test) – 面向对象的程序测试(OOP Test)
1.3.9 协议软件测试
• 可用性测试:
– 对“用户友好性”的测试。显然这是主观 的,且将取决于目标最终用户或客户。用 户面谈、调查、用户对话的录像和其他一 些技术都可使用。程序员和测试员通常都 不宜作可用性测试员。
• 可靠性测试:
– 可靠性测试是为了检验软件系统运行是否 可靠,而进行的一种测试。这类软件系统 的失败往往导致不可预料的结果,如航空、 航天领域中运行的软件,铁路系统中运行 的软件等等。可靠性测试的方法关心的是, 一旦软件系统出现故障,其系统是否导向 安全,所以可靠性测试与安全测试紧密相 关。可靠性测试通常采用黑箱测试法。
• 协议软件作为软件的一种特殊形式,已经形 成了一个崭新的学科——协议工程学。 • 研究范围包括:
– – – – – – – – 协议说明(Protocol Specification) (Protocol 协议证实(Protocol Validation) 协议验证(Protocol Verification) 协议综合(Protocol Synthesis) 协议转换(Protocol Conversion) 协议性能分析(Protocol Performance Analysis) 协议自动实现(Protocol Automatic Implementation) 协议测试(Protocol Testing)。
–确认测试的另一个重要环节是配置复审。 复审的目的在于保证软件配置齐全、分类 有序,并且包括软件维护所必须的细节。
1.3.6 α、β测试
• α测试是指软件开发公司组织内部人员模拟 各类用户对即将面市软件产品(称为α版本) 进行测试,试图发现错误并修正。 • 经过α测试调整的软件产品称为β版本。紧 随其后的β测试是指软件开发公司组织各方 面的典型用户在日常工作中实际使用β版本, 并要求用户报告异常情况、提出批评意见。 然后软件开发公司再对β版本进行改错和完 善。