软件测试课件第1章软件测试概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件的定义
计算机软件是由专业人员开发并长期维护的软件产品。完整的 软件产品包括了在各种不同容量和体系结构计算机上的可执行 的程序,运行过程中产生的各种结果,以及以硬复制和电子表 格等多种方式存在的软件文档。
软件的特点
软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽 象性。
软件的生产与硬件不同,它没有明显的制造过程。要提高软件 的质量当时考虑不足的另一个原因是人们的心理因素。从软件系统开 发者的角度看,研制工作的目标是使其可以运转起来,这是富有刺激性和 创造性的任务,当付出相当的精力逐渐变为成果时,他们往往充满信心。
20世纪70年代中期,软件测试技术的研究达到高潮。而在软件测试理论 迅速发展的同时,程序插装、符号测试方法、耦联效应假设、域测试方法 等各种高级的软件测试方法也将软件测试技术提高到了初期的原始方法无 法比拟的高度。
◦ 系统软件、支撑软件和应用软件
按照软件本身规模的不同
◦ 微型、小型、中型、大型和超大型软件
按照软件运行平台的不同
◦ 个人计算机软件、嵌入式软件、基于Web的软件
软件工程
IEEE对软件工程的定义为:
◦ 将系统化、严格约束的、可量化的方法应用于软件的开发、 运行和维护,即将工程化应用于软件。
◦ 对上述方法的研究。具体说来,软件工程是以借鉴传统工程 的原则、方法,以提高质量、降低成本为目的指导计算机软 件开发和维护的工程学科。
看,最终用户会认为不好。
1.2 软件缺陷
软件缺陷出现的原因
◦ 说明书 ◦ 设计 ◦ 编码 ◦ 其他
编码
其他
设计
说明书
软件测试的定义
概括说来,软件测试是为了发现错误而执行程序的过程。或者 说,软件测试是根据软件开发各阶段的规格说明和程序的内部 结构,而精心设计一批测试用例,并利用这些测试用例去执行 程序,以发现程序错误的过程。
—— 静态测试与动态测试
静态测试与动态测试之间既具有一定的协同性,同时又具有相 对的独立性。程序静态分析的目标不是证明程序完全正确,而 是作为动态测试的补充,在程序运行前尽可能多的发现代码中 隐含的缺陷。静态测试是不能完全代替动态测试的。
测试方法 静态测试 动态测试
是否需要运 是否需要测 是否可以直 测试实现难
◦ 用户测试
用户测试是指在用户的应用环境下,由用户通过运行和使用 软件,验证软件是否满足自己预期的需求。
◦ 第三方测试
第三方测试也叫做独立测试,是指介于软件开发者和软件用 户之间的测试组织对软件进行的测试。
1.4 软件测试的分类
其他测试类型
◦ 冒烟测试
冒烟测试在测试中发现问题,找到缺陷,然后开发人员会来修复 这个缺陷。
软件测试的现状
近两年来,随着软件市场的成熟,软件行业的竞争越来越激 烈,已从过去的卖方市场转变为现在的买方市场,软件的质 量、性能、可靠性等方面正逐渐成为人们关注的焦点。为提高 自身的竞争能力,软件企业必须重视和加强软件测试。
欧美软件项目中,软件测试的工作量和费用已占到项目总工作 量的53%~87%。国外成熟软件企业,如微软,软件开发人员 与测试人员的比例约为1:2,而国内软件企业,平均8个软件开 发工程师才对应1个软件测试工程师,比例严重失衡。
SQA包含:一种质量管理方法,有效的软件工程技术,在整个 软件过程中采用的正式技术评审,一种多层次的测试策略,对 软件文档及其修改的控制,保证软件遵从软件开发标准的规程、 度量和报告机制。
1.2 软件缺陷
软件缺陷的定义
◦ 软件缺陷,常常又被叫做Bug。所谓软件缺陷,即为计算机 软件或程序中存在的某种破坏正常运行能力的问题、错误或 者隐藏的功能缺陷。
在软件的运行和使用期间,不会出现硬件中所出现的机械磨损、 老化问题。然而它存在退化问题,必须要对其进行多次修改与 维护。
计算机的开发与运行常常受到计算机系统的制约,它对计算机 系统有着不同程度的依赖性。为了解除这种依赖性,在软件开 发中提出了软件移植的问题。
软件的特点
软件的开发至今尚未完全摆脱人工的开发方式。 软件本身是复杂的。软件的复杂性可能来自它所反映的实际问
◦ IEEE对缺陷有一个标准的定义:从产品内部看,缺陷是软件 产品开发或维护过程中存在的错误、毛病等各种问题;从产 品外部看,缺陷是系统所需要实现的某种功能的失效或违背。 在软件开发生命周期的后期,修复检测到的软件错误的成本 较高。
1.2 软件缺陷
软件缺陷至少满足下列5个规则之一:
◦ 软件未实现产品规格说明所要求的功能。 ◦ 软件中出现了产品规格说明指明不应该出现的错误。 ◦ 软件实现了产品规格说明未提到的功能。 ◦ 软件未实现产品规格说明虽未明确提及但应该实现的目标。 ◦ 软件难以理解,不容易使用,运行缓慢,或从测试员的角度
软件测试的现状
国内软件测试工程师的缺口为30万之多。目前,国内软件测试 工程师的来源主要有3个方面:一是以前专业做软件开发的人 员后来转行做软件测试,二是从大学招聘的学生,三是通过培 训机构招聘的专业学员。
近几年以来,我国软件测试行业发展极为迅速,软件测试评测 中心发展迅速。
◦ 2005年6月2日,由14家成员单位组成的“中国软件测评机构联 盟”在京成立。
题的复杂性,也可能来自程序逻辑结构的复杂性。 软件成本相当昂贵。软件的研制工作需要投入大量的、复杂
的、高强度的脑力劳动,它的成本是比较高的。 相当多的软件工作涉及社会因素。许多软件的开发和运行涉及
机构、体制及管理方式等问题,他们直接决定项目的成败。
软件的分类方法
按照在计算机系统中所处的应用层次的不同
软件测试工程师未来的发展空间
◦ 走技术路线,成长为高级软件测试工程师,再向上可以成为软件测 试架构设计师。
◦ 向管理方向发展,做项目管理。 ◦ 做开发人员,很容易转去做产品编程。
1.6 小结
本章从著名的软件错误案例谈起,介绍了软件、软 件工程和软件质量,从而引出软件缺陷的定义、出 现原因和软件测试的定义、目的、原则,并介绍了 软件测试分类。本章还介绍了软件测试行业的历 史、现状和前景。
软件测试概述
软件测试就是按照测试方案和流程对产品进行功能和非 功能性测试,甚至根据需要编写不同的测试工具,设计和维 护测试系统,对测试方案可能出现的问题进行分析和评估。
1.1 软件测试背景
著名软件错误案例
◦ 迪斯尼的狮子王,1994-1995 ◦ 美国航天局火星极地登陆者号探测器,1999 ◦ 北京奥运会票务系统,2007
IEEE对软件测试的定义为:使用人工和自动手段来运行或测试 某个系统的过程,其目的在于检测它是否满足规定的需求或弄 清预期结果与实际结果之间的差别。
软件测试的定义
软件测试可以简单的理解成下图这个过程:
1.3 软件测试的目的
软件测试的目的,就是要发现软件中存在的缺陷和系统不足, 定义系统的能力和局限性,提供组件、工作产品和系统的质量 信息;提供预防或减少可能错误的信息,在过程中尽早检测错 误以防止错误传递到下一阶段,提前确认问题和识别风险;最 终获取系统在可接受风险范围内可用的信息,确认系统在非正 常情况下的功能和性能,保证一个工作产品是完整的并且是可 用的或者可被集成的。
软件测试的目的
软件缺陷可能在软件开发的各个阶段被引入,如果没能及时发 现和纠正,就会传递到软件开发的下一阶段。如图所示。
软件测试的原则
不可能进行完全测试 测试中有风险存在 软件测试只能表明缺陷的存在,而不能证明产品已经没有缺陷 软件产品中所存在的缺陷数与已发现的缺陷数成正比 要避免软件测试的杀虫剂现象 及早的和不断的进行软件测试 进行回归测试 软件测试应该有计划、有组织的进行
软件质量
软件工程的目标是生产出高质量的软件
◦ 正确性:软件能够做正确的事情,并且能够正确的运行; ◦ 性能:系统的响应时间和硬件资源的占用率; ◦ 安全性:在对合法用户提供服务的同时,阻止未授权用户的使用企
图; ◦ 可用性:能长时间正确的运行并快速的从错误状态恢复到正确状态; ◦ 易用性:最终用户容易使用和学习; ◦ 可修改性:系统很容易的被修改从而适应新的需求或采用新的算法、
行软件
试用例
接定位缺陷 易程度



容易



困难
1.4 软件测试的分类
按是否需要查看代码
◦ 白盒测试
输入
白盒测试是指已知软件产品的内部工
作过程,通过验证每种内部操作是否
符合设计规格的要求来进行测试。
◦ 黑盒测试
黑盒测试是指已知软件产品的功能设 计规格,测试每个实现了的功能是否 输入
满足要求。
◦ 动态测试
动态测试又称动态分析,是指需要实际运行被测软件,通过观察程序运行时 所表现出来的状态、行为等发现软件缺陷,包括在程序运行时,通过有效的 测试用例(对应的输入、输出关系)来分析被测程序的运行情况或进行跟踪 对比,发现程序所表现的行为与设计规格或客户需求不一致的地方。
1.4软件测试的分类
◦ 自动测试
自动测试指的是通过软件测试工具,按照测试人员的预定计划对 软件产品进行自动的测试。
优点:产生可靠的系统;改进测试工作质量;提高测试工作效率
1.4 软件测试的分类
按测试实施组织
◦ 开发方测试
开发方测试也叫做α测试,是指在软件开发环境下,由开发 方提供检测和提供客观证据,验证软件是否满足规定的要 求。
◦ 灰盒测试
灰盒测试是介于白盒测试和黑盒测试
之间的测试,是对两种测试的一种折
中。
输出
需求 输出
软件
事件
1.4 软件测试的分类
按测试执行时是否需要人工干预
◦ 手工测试
手工测试是完全由人工完成测试工作,包括测试计划的制定,测 试用例的设计和执行,以及测试结果的检查和分析。传统的测试 工作都是由人工来完成的。
Roger S. Pressman对软件质量的定义为:软件要符合显式声 明的功能和性能需求,显式文档化的开发标准以及专业人员开 发的软件所应具有的所有隐含特性。
软件的质量属性,按其在运行时是否可见分为:运行时可观察 到的,包括性能、安全性、可用性、易用性;运行时不可观察 到的,包括可修改性、可移植性、可测试性、可集成性、可重 用性等。
数据结构的能力; ◦ 可移植性:软件可以很简单地在平台间移植; ◦ 可测试性:软件能够被测试的容易程度; ◦ 可集成性:让分别开发的组件在一起正确工作;
软件质量保证活动
在现代软件工程中,将软件质量保证作为一个单独的活动执行, 以确保软件质量在软件开发的全过程中都受到重视和验证,称 之为软件质量保证活动(SQA)。
◦ 随机测试
随机测试是根据测试说明书执行样例测试的重要补充手段,是保 证测试覆盖完整性的有效方式和过程。
1.5 软件测试的历史回顾
自从计算机作为强大的计算工具在20世纪出现以来,程序的编写与程序的 测试课题就同时出现在人们面前。
早在20世纪50年代,英国著名的计算机科学家图灵就曾给出程序测试的 原始定义。他认为,测试是正确性确认的实验方法的一种极端形式。
1.4 软件测试的分类
按测试阶段
◦ 单元测试、集成测试、确认测试、系统测试和验收测试。
详细设计 被测模块 单元测试 被测模块 单元测试
概要设计
集成测试
软件需求
确认测试
系统需求
系统测试
项目合同
验收测试
被测模块 单元测试
1.4 软件测试的分类
按是否需要执行被测试软件
◦ 静态测试
静态测试又称静态分析,是不实际运行被测软件,而是直接分析 软件的形式和结构,查找缺陷。主要包括对源代码、程序界面和 各类文档及中间产品(如产品说明书、技术设计文档等)所做的 测试。
软件工程
工具 方法 过程 质量焦点
软件测试与软件工程
软件测试在软件工程过程中一直占据着核心活动的 地位
◦ 在瀑布模型中,软件测试作为一个重要步骤被执行,并花费 整个软件开发近40%的时间和工作量。可以说在早期的软件 工程活动中,软件质量主要是通过测试活动保证的。
需求分析
设计
编码
测试
运行和维护
软件质量
◦ 目前,我国已有近2000家软件评测中心,软件测试从业人员达到 数万人,软件测试产值达到数亿元。
软件测试的前景
软件测试学科
◦ 软件测试是一门非常崭新的学科,目前仍然处在研究探索阶段,还 没有完全上升到理论层次。
软件测试工程师需求
◦ 企业的需求 ◦ 许多IT企业没有专职的测试机制 ◦ 网络测试的需求量
相关文档
最新文档