版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 软件测试基础,软件测试在软件开发中的地位越来越重要。软件测试是目前用来验证软件是否能够完成所期望的功能的唯一有效的方法,其总目标是充分利用有限的人力和物力资源,高效率、高质量地完成测试。 本章重点: 软件测试的基本概念 软件测试的关键问题 软件测试的复杂性与经济性 软件测试原则 停止测试的标准,2.1 软件测试的基本概念,尽管软件测试是一门技术很强的学科,但正确认 识测试的目的十分重要,测试目的决定了测试方案 的设计。,2.1.1软件测试的目的,2.1.2软件测试的定义,IEEE在软件工程标准术语中给软件测试下的定义是: “使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它
2、是否满足规定的需求或是弄清预期结果与实际结果之间的差别”。 该定义包含了两方面的含义: 1)是否满足规定的需求 2)是否有差别,1.不同时期关于软件测试的定义,如果有差别,说明设计或实现中存在故障,自然不满足规定的需求。因此,这一定义非常明确地提出了软件测试以检验软件是否满足需求为目标。该定义指出测试时需要明确预期结果,然后将它们与实际发生的结果相比较,因此比较是测试的基础之一,确定预期输出是测试用例必不可少的一部分。 一个测试用例由两部分组成:对程序输入数据的描述和由这些输入数据应产生的正确结果的精确描述。,2.1.2软件测试的定义,2.1.2软件测试的定义,对测试人员,测试的最好定义是:
3、测试是为了发现故障而执行程序的过程。,这一定义非常明确地提出了 软件测试以发现故障为目的。,强调正确定义软件测试的另一方面是正确使用“成功”和 “失败”这两个词。一般来说, “成功”表示达到了某种目的, 而“失败”则表示令人失望或事不如愿。,但在测试中,由于查不出故障的测试浪费了大量的时间和人力, 因此使用“成功”这个词就显得不够恰当了。,事实证明,发现故障是一个有价值的工作。,发现故障的测试是成功的测试.,2.1.2软件测试的定义, 测试 1)测试是一种活动,在该活动中一个系统或组成 部分在特定条件下被运行,结果被观察或记录,并对 该系统或组成部分的某些方面进行评估。 2) 测试是一个或多个
4、测试用例的集合。,2.1.2软件测试的定义, 测试用例 1)测试用例是为特定的目的而开发的一组测试输入、 执行条件和预期结果。 2)测试用例是执行的最小实体。, 测试步骤 测试步骤详细说明了如何设置、执行和评估特定的测 试用例。,2.关于软件测试的一些常用术语,故障产生的原因,2.1 软件测试的基本概念,软件测试主要涉及5方面的问题: 谁来执行测试? 测试什么? 什么时候测试? 怎样进行测试? 测试停止的标准是什么?,2.1.3 软件测试涉及的关键问题,2.1.3 软件测试涉及的关键问题,软件测试主要涉及5方面的问题: 谁来执行测试? 测试什么? 什么时候测试? 怎样进行测试? 测试停止的标准
5、是什么?,一个软件产品的开发通常涉及开发者和测试者两种角色。 开发者通过开发而形成产品,例如分析,设计,编码,调试或者文档编制。 测试者通过测试来检测产品中存在的缺陷,包括根据特定的目的设计测试用例,构造测试,执行测试以及评估测试结果等。,2.1.3 软件测试涉及的关键问题,软件测试主要涉及5方面的问题: 谁来执行测试? 测试什么? 什么时候测试? 怎样进行测试? 测试停止的标准是什么?,显然,表现在程序中的故障,并不一定是编码所引起的。 即使针对源程序进行测试,所发现故障的根源也可能在开发前期的 各个阶段。 实际上,软件需求分析、设计和实施阶段是软件故障的主要来源, 因此, 需求分析、概要设
6、计、详细设计以及程序编码等各个阶段所 得到的文挡,包括需求规格说明分析、概要设计规格说明、详细设 计规格说明以及源程序,都应成为软件测试的对象。,2.1.3 软件测试涉及的关键问题,软件测试主要涉及5方面的问题: 谁来执行测试? 测试什么? 什么时候测试? 怎样进行测试? 测试停止的标准是什么?,测试的另一个极端是每天都进行测试, 一旦软件的每个模块开发出来之后就对它们测试, 这样显然又会延缓早期开发的进度。,测试开始的时间越早,测试执行的越频 繁,所带来的整个软件开发成本的下降 就会越多。,2.1.3 软件测试涉及的关键问题,软件测试主要涉及5方面的问题: 谁来执行测试? 测试什么? 什么时
7、候测试? 怎样进行测试? 测试停止的标准是什么?,规范说明一个软件要做什么,而程序实现则规定了软 件应怎样做。对软件进行测试就是根据软件的功能规 范说明和程序实现,利用介绍的各种测试方法,生成 有效的测试用例,对软件进行测试。,2.1.3 软件测试涉及的关键问题,软件测试主要涉及5方面的问题: 谁来执行测试? 测试什么? 什么时候测试? 怎样进行测试? 测试停止的标准是什么?,从现实和经济的角度来看, 对软件进行完全测试是不可能的。 因为无法判断当前查出的故障是否为最后一个故障, 所以决定什么时候停止测试是一件很最困难的事。,实用的测试停止的标准应该基于以下几个因素: 成功地采用了具体的测试用
8、例设计方法。 每一类覆盖的覆盖率。 故障检测率(即每一单元测试时间内检测出的故障数)低于指定的限度。基于故障检测数量的标准必须注明故障严重性程度。 检测出故障的具体数量(估计存在的故障总量的比率)或消耗的具体时间。,2.1.3 软件测试涉及的关键问题,2.1.4 软件测试与软件质量保证,测试能帮助确保一个产品满足需求,但测试并不是质量保证。 在许多组织中,软件质量保证部门通常负责开发测试计划和执行系统测试,也可能会对开发过程中的测试进行监测和保留统计数据。测试是任何质量保证过程中必需的但不是所有的部分。 测试在确保质量方面的主要贡献在于它能发现那些在一开始就应该能够避免的错误。 软件质量保证部
9、门从事的是那些用来防止和去除软件缺陷的活动,负责制订为了生产出更好的软件而应该遵守的标准,包括定义为理解设计意图而创建的各种文档的类型,指导项目活动的过程以及量化决议结果的方法等。,2.2 软件故障,故障(fault)、失效(failure)、错误(error)、 缺陷(defect)、隐错(bug)、过失(mistake)、 异常(anomaly)等术语常用来描述软件失败时的现象。,我们采用IEEE制定的标准术语。 错误(error)人是会犯错误的。一个很接近的同义词是过失(mistake)。过失是人犯下的,是人做的一件错事或人为产生的一个不正确结果。 故障(fault)故障是错误的结果(可
10、能导致失效)。更精确地说,故障是错误的表现。与故障很接近的一个同义词是缺陷(defect), 失效(failure)故障(例如崩溃)引起的结果(表现)。,2.2.1 故障定义,与任何事物一样,软件也有一个从孕育、诞生、 成长到衰亡的生存过程,通常称为软件生存周期。 包括 制定计划、 需求分析、 设计、 程序编码、 测试 运行维护六个阶段。,2.2 软件故障,2.2.2 软件故障分类,软件开发经过制定开发计划,进行需求分析、 软件设计阶段之后,才能进入编写程序阶段,程序 编写完之后还必须经过大量的测试工作才能交付使用。,因此, 编写程序只是软件开发过程的一个阶段。 在典型的软件开发工程中, 编写
11、程序所需的工作量 只是软件开发全部工作量的20%左右。,2.2 软件故障,2.2.2 软件故障分类,2.2 软件故障,2.2.2 软件故障分类 软件故障有多种分类方法:可以以故障出现的开发阶段来划分,以失效产生的后果来划分,以解决难度来划分,以不解决会产生的风险来划分,等等。图2-2给出了软件故障的大致分布情况。,图,2,-,2,软件故障分布,分析软件故障分布情况, 有助于将测试的主要精力更好地集中到最有价值的地方, 以改进软件测试过程,提高软件测试的效率。,2.2 软件故障,2.2.2 软件故障分类,表2-1 按严重程度分类的软件故障,2.2 软件故障,2.2.2 软件故障分类 其它类型的软
12、件故障 软件需求故障 输入输出故障 逻辑故障 计算故障 接口故障 数据故障,由于人的主观认识常常难以完全符合客观现实,与 工程密切相关的各类人员之间的通信和配合也不可能 完美无缺。在软件生存周期的每个阶段都不可避免 地会产生差错,并且前一阶段的故障自然会导致后一 阶段相应的故障,因此,故障会积累起来。 此外,后一阶段的工作是前一阶段工作结果的进一 步具体化,因此,前一阶段的一个故障可能会造成后 一阶段中出现几个故障。,软件故障不仅有积累效应,还有放大效应。,2.2 软件故障,2.2.3 软件故障的修复,图2-3形象地表示了故障的积累和放大效应。,2.2 软件故障,所有的错误都是要付出代价的。,
13、统计资料表明, 在软件开发的不同阶段进行改动需要付出的代价完全不同。 后期改动的代价比前期进行相应修改要高出23个数量级。,2.2 软件故障,2.2.3 软件故障的修复,2.3 测试的复杂性与经济性,黑盒测试是一种常用的软件测试方法,在应用这种方法设计测试用例时,我们把被测程序看成是一个打不开的黑盒,测试人员在不考虑程序内部结构和内部特性的情况下,只根据需求规格说明书,设计测试用例,检查程序的功能是否按照规范说明的规定正确地执行。,如果希望利用黑盒测试方法查出软件中所有的故障, 只能采用穷举输入测试。 即把所有可能的输入全部都用作测试输入使用。,2.3 测试的复杂性与经济性,例如,要对Micr
14、osoft Windows计算器程序进行测试。,要穷举地测试这个 Windows计算器程序, 实际上就得给出 无穷多个测试用例。,黑盒穷举测试不现实。,2.3 测试的复杂性与经济性,白盒测试是否可以做到穷举测试呢?白盒测试又称结构测试或基于程序的测试。该方法将被测对象看作一个打开的盒子,允许人们检查其内部结构。测试人员根据程序内部的结构特性,设计、选择测试用例,检测程序的每条路径是否都按照预定的要求正确地执行。,然而,程序的独立路径数目可能是个天文数字。,独立逻辑路径的数目,相当于从A点走到B点的所有独立路径数, 是520+519+51,其中5是贯穿循环体的路径数。 如果每5分钟可以写出、执行
15、并验证一个测试用例, 那么测试完所有路径大概要花10亿年。,即使程序中每条路径都测试过了,仍不能保证程序没有故障。 因为:第一,穷举路径测试不能保证程序实现符合规格说明的要求。第二,穷举路径测试不可能查出程序中因遗漏路径而出现的错误;第三,穷举路径测试可能发现不了与数据有关的故障。例如,假定程序要求实现: if (abs(x-y) 而实际程序则写成: if (x-y) 显然,这个语句有错,但用举穷路径测试,并不一定能发现这个错误。 因此,不论穷举输入测试还是穷举路径测试,都不可能进行彻底的测试。,2.3 测试的复杂性与经济性,穷举测试工作量太大,实际上是行不通的, 这就注定了一切实际测试都是不
16、彻底的。,选择测试用例时应注意遵守测试的“经济性”原则: 第一,根据程序的重要性和一旦发生故障将造成的损失 来确定它的测试等级; 第二,认真研究测试策略,以便能使用尽可能少的测试 用例,发现尽可能多的程序故障。,因此,软件测试的一个基本问题是经济学问题。 软件测试的总目标是充分利用有限的人力和物力资源, 高效率、高质量地完成测试。,2.4 测试的充分性问题,不充分的测试是愚蠢的,而过度的测试则是一种罪孽。,不不充分的测试势必使软件带着一些未揭露的隐藏故障 投入运行,这可能使用户承担更大的危险; 而过度测试则会浪费许多宝贵的资源。,测试的一个合理目标就是: 开发出足够的测试用例, 以保证软件在典
17、型应用和关键系统中不会存在什么问题。,测试充分性准则具有以下的一些基本性质: 空测试对于任何软件都是不充分的。 对任何软件都存在有限的充分测试数据集,这一性质称为有限性。 如果一个测试数据集对一个软件系统的测试是充分的,那么再增加一些测试用例也是充分的,这一性质称为单调性。 软件越复杂,需要的测试用例就越多,这一性质称为复杂性。 测试得越多,进一步测试所能得到的充分性增长就越少,这一性质称为回报递减律。,2.4 测试的充分性问题,基于程序的测试数据集充分性公理。 公理2.1 (非外延性公理):如果有两个功能相同而 实现不同的程序,对其中一个是充分的测试数据集 对另一个不一定是充分的。 公理2.
18、2 (多重修改公理):如果两个程序具有相同 的语法结构,对一个是充分的测试数据集对另一个 不一定是充分的。,2.4 测试的充分性问题,公理2.3 (不可分解公理):对一个程序进行了充分 的测试,并不表示对其中的成分都进行了充分的测 试。 公理2.4 (非复合性公理):对程序各单元是充分的 测试数据集并不一定对整个程序(集成后)是充分 的。,2.4 测试的充分性问题,2.5 测试原则,从不同的角度出发,软件测试会派生出两种不同的测试原则。 从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和故障。 从开发者的角度出发,就是希望测试能表明软件产品已经正确地实现了用户的需求,没有软件故
19、障存在。,因此,软件测试中 一个最为重要的问题是人们的心理学问题。,2.5 测试原则,例如: 完全测试程序是不可能的 软件测试是有风险的 测试无法显示隐藏的软件故障 存在的故障数量与发现的故障数成正比 杀虫剂现象 并非所有软件故障都能修复 一般不要扔掉测试用例 应避免测试自己编写的程序 测试工作应该由独立的专业软件测试机构来完成 软件测试是一项复杂的,具有创造性的和需要高度 智慧的挑战性任务,一些至关重要的测试原则或方针,可以视为软件测试和软件开发的“交通规则”或者“生活法则”。,2.6 停止测试的标准,因为无法判定当前发现的故障是否是最后一个故障,所以决定什么时候停止测试是一件非常困难的事。
20、受经济条件的限制,测试最终一定要停止。 五类常用的停止测试标准, 测试超过了预定的时间则停止测试。 执行了所有测试用例但没有发现故障,则停止测试。 使用特定的测试用例设计方法作为判断测试停止的基础。 正面指出测试停止的要求,比如发现并修改70个故障。 根据单位时间内查出故障的数量决定是否停止测试。,第三类标准把使用特定的测试用例设计方法作为判断测试停止的基础。 这类标准比前面两个标准优越,但它存在以下三方面的问题: 1. 在没有特定方法的测试阶段中无效,如系统测试阶段。 2. 这仍是一个主观的衡量标准,因为无法保证测试人员准确、严格地使用了某种方法,如边界值分析。 3. 这类标准只给定了一个测试用例设计的方法,并不是一个确定的目标。只有测试人员确实能够成功地运用测试用例设计的方法时,才能应用这类标准,并且这种标准只对某些测试阶段适用。,2.6 停止测试的标准,2.6. 停止测试的标准,第四类标准正面指出了停止测试的要求。 这类标准虽然加强了测试的定义。但仍存在两个问题: 一个问题是如何知道将要查出的故障数,为了得到这个数字,要求: 1)估计程序中故障的总数。 2)估计这些故障中通过测试的比例,有多少故障可以很容易地被找出来。 3)估计哪些故障产生于某些特定的设计过程,估计这些故障将在测试的哪个阶段被查出。 另一个明显的问题是过高地估计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冬季施工作业指导书培训课件
- 测量放线工安全技术交底培训课件
- 卡轨车安装使用安全措施培训
- 抓斗司机安全技术操作规程培训课件
- 框架住宅楼消防安全专项方案培训
- (2026年)医院质量与安全管理制度
- (2026年)医院感染管理知识培训总结
- (2026年)抵押车的合同协议
- 2025年河南省濮阳市濮阳县数学四下期中教学质量检测试题含解析
- 2025年河南省南阳市唐河县四年级数学第二学期期中监测试题含答案
- 2026贵州省农业发展集团有限责任公司招录(第一批)岗位65人农业考试备考题库及答案解析
- 中心静脉血管通路装置皮肤损伤管理指南
- JJF 2309-2025 重点排放单位碳计量审查规范
- 2025年大学生支教保研笔试题库及答案
- 环卫工夏季作业安全培训课件
- 静脉输液操作流程课件
- 2026年高考数学全国二卷真题试卷含答案
- 2026年科研设施与仪器开放共享服务合同
- 酒店宴会主持培训
- 水泥产品生产许可证实施细则2025
- 客户下单管理制度
评论
0/150
提交评论