第一章 软件测试的基础理论
软件测试基础理论(总结)

软件测试基础理论(总结)软件测试是一项关键的软件开发过程,它确保软件的可靠性和质量。
本文总结了软件测试的基础理论,包括测试的概念、测试策略、测试类型、以及常见的测试方法和技术。
测试的概念在软件开发过程中,测试是验证和确认软件系统是否满足特定需求和预期功能的过程。
它的目标是发现软件中的错误和缺陷,并确保软件系统的正确性、稳定性和可靠性。
测试可以被视为一种质量保证手段,它通过比较实际输出和预期输出,来评估软件的质量水平。
测试还提供了反馈信息,帮助开发团队改进软件,并提高其性能和用户体验。
测试策略在进行软件测试之前,需要确定适当的测试策略。
测试策略是一种规划方法,它定义了测试的范围、目标、资源和时间限制。
一般而言,测试策略应考虑以下因素:1.测试目标:明确定义测试的目标和预期结果,例如发现系统缺陷、评估性能等。
2.测试范围:定义要测试的软件模块、功能和利益相关者的需求。
3.测试资源:确定测试所需的人力、工具和设备等资源。
4.测试优先级:确定测试的优先级,以便在资源有限的情况下进行有效的测试。
5.测试计划:规划测试活动的时间和流程,确保测试进度合理。
一旦测试策略确定,就可以选择适当的测试类型和方法。
测试类型软件测试可以根据不同的标准和目的进行分类。
以下是一些常见的测试类型:1.单元测试:针对软件中的最小功能模块进行测试,以确认每个模块是否按照预期工作。
2.集成测试:测试多个模块之间的交互和通信,确保它们能够无缝地工作。
3.系统测试:对整个软件系统进行综合测试,检查是否满足系统需求和业务规则。
4.验收测试:由最终用户或利益相关者进行的测试,以验证系统是否满足预期需求。
5.性能测试:评估软件在不同负载下的性能和响应时间。
6.安全测试:评估软件的安全性,确保其能够抵御潜在的安全威胁。
在实际测试过程中,可以结合多种测试类型,以充分检查软件的质量和性能。
测试方法和技术为了有效地进行软件测试,一些常见的测试方法和技术被广泛采用:1.黑盒测试:只关注软件的输入和输出,而不考虑内部实现细节。
软件测试1软件测试的基础知识

10
火星探测飞船坠毁
机械震动在大多数情况下也会触 发着地开关,设置错误的数据位 。设想飞船开始着陆时,计算机 极有可能关闭推进器,而火星登 陆飞船下坠1800米之后没有反推 进器的帮助,冲向地面,必然会 撞成碎片 两个小组本身的工作都没什么问 题,就是没有合在一起测试,其 接口没有被测,而问题就在这里
代码完成文件包,功能详细设计说 明书 最终技术文档 代码修改后的文件包 完整测试用例,完备的测试计划 代码冻结文件包 确认测试用例 代码发布文件包 测试计划检查清单
测试计划, 测试用例
完整测试用例,完备的测试计划, 缺 陷报告, 功能验证测试报告 缺陷报告 缺陷状态报告 项目阶段报告 缺陷状态报告 缺陷报告审查 版本审查 当前版本已知问题的清单 版本发布报告
按测试目的分类,
如功能测试、回归测试、性能测试、可靠性测试、安全性测试和兼容性
测试等 根据测试过程中被测软件是否被执行, 分为静态测试和动态测试 根据是否针对系统的内部结构和具体实现算法来完成测试, 可分为白盒测试和黑盒测试 按测试方法分类 数据库测试、压力测试、恢复测试、安全测试、兼容性测试等
Test Engineer
QA/Supervisor
Project/Quality Manager
Senior Engineer
2
主要内容
第1部分 软件测试概述(What) 第2部分 软件测试基础(概念、原理、方法 、步骤、工具)(How) 第3部分 软件测试实践(Application)
3
集成方式。
功能测试
功能测试一般须在完成集成测试后进行, 而且是针对应用系统进行测试。功能测试 是基于产品功能说明书,是在已知产品所 应具有的功能,从用户角度来进行功能验 证,以确认每个功能是否都能正常使用
软件测试与质量保证基础入门

软件测试与质量保证基础入门第一章:软件测试的概述软件测试是指通过运行或评估软件系统的过程,旨在发现系统中的缺陷并评估其质量。
本章将介绍软件测试的定义、目的和原则,以及测试的基本概念,如测试类型、测试阶段和测试策略。
第二章:软件测试的生命周期软件测试的生命周期包括测试计划、测试设计、测试执行和测试报告。
本章将详细介绍每个阶段的任务和活动,并解释如何制定有效的测试计划和编写高质量的测试用例。
第三章:功能性测试功能性测试是对系统的各个功能进行测试,以确保其符合预期的行为。
本章将介绍功能性测试的各个类型,如单元测试、集成测试和系统测试,以及相应的方法和技术。
第四章:性能测试性能测试是评估系统在特定负载下的性能表现和可靠性的过程。
本章将介绍性能测试的概念和目的,以及常见的性能测试类型和工具。
第五章:安全性测试安全性测试是评估系统的安全性和保护机制的过程。
本章将介绍安全性测试的概念和目的,以及常见的安全测试方法,如渗透测试和漏洞扫描。
第六章:可靠性测试可靠性测试是评估系统在长时间运行中的稳定性和可靠性的过程。
本章将介绍可靠性测试的目的和方法,以及如何设计可靠性测试用例和分析测试结果。
第七章:自动化测试自动化测试是通过工具和脚本执行测试活动的过程,可以提高测试效率和准确性。
本章将介绍自动化测试的概念、优势和限制,并介绍常用的自动化测试工具和实施策略。
第八章:质量保证质量保证是通过持续监测和评估系统的过程,确保软件满足预期质量标准。
本章将介绍质量保证的概念、原则和实施方法,以及如何建立有效的质量保证流程和度量指标。
第九章:测试管理测试管理是组织、计划和监控测试活动的过程,以确保测试工作按时、质量和成本目标完成。
本章将介绍测试管理的各个方面,如测试计划、测试进度管理和风险管理。
结语软件测试与质量保证是保证软件质量的关键步骤,对于任何一个软件项目来说都是不可或缺的。
通过本文的阅读,读者将能够全面了解软件测试的基本概念、方法和工具,以及如何建立有效的质量保证流程。
软件测试基本原理和技巧

软件测试基本原理和技巧第一章:软件测试的基本原理软件测试是软件开发生命周期中至关重要的一环,其基本原理包括以下几个方面:1. 软件测试的目的:软件测试的目的是为了发现潜在的缺陷和错误,并评估软件的质量。
通过测试,可以提高软件的稳定性和可靠性,确保其在不同环境下正常运行。
2. 测试的阶段:软件测试通常分为单元测试、集成测试、系统测试和验收测试四个阶段。
单元测试主要测试单个软件组件的功能,集成测试测试多个组件之间的交互,系统测试测试整个系统的完整性和稳定性,验收测试由最终用户参与,确认系统是否满足需求。
3. 测试策略:测试策略是测试活动的整体规划,包括测试目标、测试方法和资源分配等。
根据软件的特点和需求,选择适合的测试策略可以提高测试的效率和质量。
4. 测试用例设计:测试用例是测试的核心,它是一组输入、预期输出和执行条件的描述。
测试用例应尽可能覆盖软件的各种功能和场景,以便发现更多的潜在问题。
第二章:常用的软件测试技巧为了提高软件测试的效果和效率,常用的软件测试技巧如下所述:1. 黑盒测试:黑盒测试是一种独立于内部结构和实现细节的测试方法。
测试人员只关注软件的输入和输出,通过构造各种情况进行测试,以验证软件功能的正确性。
2. 白盒测试:白盒测试是一种测试方法,关注软件内部结构和逻辑。
测试人员通过检查代码、执行路径和数据流来评估软件的质量,发现潜在的错误。
3. 灰盒测试:灰盒测试结合了黑盒测试和白盒测试的特点,既关注输入输出,也关注内部结构和实现。
测试人员可以利用已有的代码和文档进行测试,以更全面地评估软件的功能和质量。
4. 功能测试:功能测试是验证软件功能的正确性。
测试人员根据需求和规格说明书,通过输入不同的数据和操作软件,检查是否符合预期的结果。
5. 性能测试:性能测试旨在评估软件在不同负载和压力下的性能表现。
测试人员通过模拟大量用户和复杂场景来测试软件的性能和响应时间。
6. 安全测试:安全测试是测试软件系统对各种攻击和恶意行为的防御能力。
软件测试(第2版 慕课版)课后习题答案

第一章软件测试基础课后习题答案1.什么是软件测试?软件测试发现一个应用从开始到结束时的错误,测试是一个过程。
(Glenford J.Myers 提出对软件测试的定义)测试是发现错误而执行的一个程序或系统的过程测试以发现故障为目的,是为了发现故障而执行程序过程2.软件测试涉及哪几个关键问题?软件测试的经济性原则谁来测试(who)测试什么(what)什么时候测试(when)怎样进行测试(how)测试的停止标准是什么(which)3.为什么说软件需求说明是软件故障的最大来源?软件需求是描述了系统有哪些功能,功能操作,性能如何等问题,是开发阶段的重要文档,也是后期软件开发的重要依据。
如果软件需求一开始就错了,在后面处理过程则会把错误放大,这样使得修复起来成本就是提升。
4.简述软件测试的复杂性和经济性。
复杂性1.完全测试是不现实的2.软件测试是有风险的3.杀虫剂现象4.缺陷的不确定性经济性软件测试是软件生命期中费用消耗最大的环节。
测试费用除了测试的直接消耗外,还包括其他的相关费用5.分析最近发生的软件质量事故,并简要分析产生的原因。
具体案例具体分子6.启动Windows计算器,输入“6,000-6=”(逗号不能少),观察计算结果,这是软件故障吗?为什么?这是软件故障中的界面缺陷。
由于无法输入逗号,无法进行输入,当做一个界面缺陷,因为不符合需求,原本是小数点变成了逗号。
7.软件测试应遵循哪些重要的原则或方针?1.完全测试程序是不可能的2.软件测试是有风险的3.测试无法找到隐藏的软件故障4.存在的故障数量与发现的故障数量成正比5.杀虫剂现象6.并非所有软件故障都能修复7.一般不要丢弃测试用例8.应避免测试自己编写的程序9.软件测试是一项复杂且具有创造性的和需要高度智慧的挑战性任务8.假定无法完全测试某一程序,那么在决定是否应该停止测试时应考虑哪些问题?在工作中,常用的停止测试标准有五类:测试超过了预定时间,停止测试执行了所有测试用例但没有发现故障,停止测试使用特定的测试用例方法作为判断测试停止的基础正面指出测试完成要求,如发现并修改70个软件故障根据单位是见查出故障数量决定是否停止测试9 . 假如星期一测试软件的某一功能时,每小时能发现一个新的软件故障,那么星期二会以什么频率发现软件故障?第一感觉就是与第一天(星期一)的一样,既然前一天发现的频率以每小时都有新的故障,说明软件的缺陷很高,所以第二天也可能有同样的频率。
软件测试各章知识点总结

软件测试各章知识点总结第一章:软件测试概述软件测试是指为了发现软件中的错误和问题,评估软件质量,确保软件功能正常的过程。
软件测试的目的是验证软件是否符合用户的需求和期望,以及确保软件的质量达到一定的标准。
软件测试在整个软件开发过程中起着非常重要的作用,它能够帮助开发团队及时发现和修复问题,提高软件的稳定性和可靠性。
软件测试的基本原则包括全面性、系统性、可靠性和性能。
全面性指测试应该覆盖所有可能的情况,包括正常情况和异常情况;系统性指测试应该以系统为单位进行,而不是单个模块或功能;可靠性指测试结果应该是可靠的、准确的;性能指测试应该关注软件的性能表现。
软件测试的方法可以分为静态测试和动态测试。
静态测试是指在软件开发的早期阶段进行的,包括代码审查、设计审查和使用静态分析工具进行分析。
动态测试是指在软件开发的后期阶段进行的,包括单元测试、集成测试、系统测试和验收测试。
软件测试的类型包括功能测试、性能测试、安全测试、兼容性测试、可靠性测试等。
功能测试是验证软件功能是否符合用户需求的测试;性能测试是验证软件在各种条件下的性能表现的测试;安全测试是验证软件的安全性和可靠性的测试;兼容性测试是验证软件在不同平台和环境下的兼容性的测试;可靠性测试是验证软件的稳定性和可靠性的测试。
第二章:软件测试流程软件测试的流程包括测试计划、测试设计、测试执行、测试评估和测试报告。
测试计划是在测试开始之前进行的,包括确定测试目标、测试方法、测试资源和测试进度。
测试设计是在测试执行之前进行的,包括确定测试用例、测试数据和测试环境。
测试执行是在测试设计之后进行的,包括执行测试用例、记录测试结果和发现问题。
测试评估是在测试执行之后进行的,包括评估测试结果、计算测试覆盖率和分析测试效果。
测试报告是在测试评估之后进行的,包括总结测试结果、提出改进建议和撰写测试报告。
软件测试的自动化是指利用自动化测试工具进行软件测试的过程。
自动化测试包括测试脚本的编写、测试数据的准备和测试环境的配置。
软件测试(理论基础)

软件测试(理论基础)Chapter 1_软件测试概述软件测试的IEEE定义:使⽤⼈⼯或⾃动的⼿段来运⾏或测量软件系统的过程,⽬的是检验软件系统是否满⾜规定的需求,并找出与预期结果之间的差异。
软件测试的发展趋势:①测试⼯作将进⼀步前移。
软件测试不仅仅是单元测试、集成测试、系统测试和验收测试,还对需求的精确性和完整性的测试技术、对系统设计的测试技术将成为新的研究热点。
②软件架构师,开发⼯程师,QA⼈员,测试⼯程师将进⾏更好的融合③测试职业将得到更充分的尊重。
④设置独⽴的软件测试部门将成为越越来软件公司的共识。
⑤测试外包服务将快速增长,和软件开发外包⼀样,软件测试外包将成为全球化的趋势。
软件测试⼯程师的素质:责任⼼;沟通能⼒;团队合作精神;耐⼼、细⼼和信⼼;保持怀疑的态度,有缺陷预防的意识;不断学习的能⼒。
合格的测试⼯程师应具有的能⼒:①⼀般能⼒:包括表达、交流、协调、管理、质量意识、软件开发过程⽅法、软件⼯程等;②测试技能及⽅法:包括测试基本概念及⽅法、对测试⼯具的掌握、对专业测试标准的熟悉程度等;③测试规划能⼒:包括风险分析及防范能⼒、测试⽬标及计划的制定能⼒等;④测试执⾏能⼒:包括测试数据/脚本/⽤例的制定能⼒、测试⽐较及分析能⼒、缺陷记录及处理能⼒;⑤测试分析、报告和改进能⼒:包括测试度量、统计技术、测试报告、过程监测及持续改进能⼒。
测试⼯程师的职责:测试⼈员要了解项⽬需求内容,从⽤户的⾓度提出⾃⼰的测试看法;测试⼈员要编写合理的测试计划并与项⽬整体计划有机地整合在⼀起;测试⼈员要编写覆盖率⾼的测试⽤例;测试⼈员要认真仔细的实施测试⼯作,并提交测试报告以供项⽬参考;测试⼈员要进⾏缺陷跟踪和分析。
Chapter 2_软件测试基础软件的概念:软件是计算机系统中与硬件相互依存的⼀部分,包括程序、数据、与其相关⽂档的完整结合。
软件 = 程序 + 数据 + ⽂档。
软件的特点:①软件是⼀种逻辑体,⽽不是具体的物理体,因⽽它具有抽象性;②软件的⽣产与硬件不同,它没有明显的制造过程,对软件质量的控制,必须在开发⽅⾯下功夫;③在软件运⾏和使⽤期间,没有硬件那样的机械磨损和⽼化问题,然⽽它存在退化问题,必须进⾏多次的修改和维护;④软件的开发和运⾏常常受计算机系统的制约,对计算机系统有着不同程度的依赖性,为了解除这种依赖性,在软件开发过程中提出了软件移植问题。
软件测试教案ppt课件

软件测试的对象:
——软件测试不等于程序测试。
——软件测试贯串于软件定义和开发的整个过程。
——软件开发过程中所产生的需求规格说明、概要 设计规格说明、详细设计规格说明以及源程序都是 软件测试的对象。
A Free sample background from
的定义有两种描述:
定义1:软件测试是为了发现错误而执行程序的 过程。
定义2:软件测试是根据软件开发各阶段的规格 说明和程序的内部结构而精心设计的一批测试用
例,并利用这些测试用例运行程序以及发现错误
的过程,即执行测试步骤。
A Free sample background from
功能冻结
代码冻结
图1-3 软件测试的周期性
第1章
A Free sample background from
软件测试概述
Slide 19
软件测试的基本理论(续)
6、测试停止的依据(标准) 第一类标准:测试超过了预定时间,则停止测试。 第二类标准:执行了所有的测试用例,但并没有发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
后来证实,迪斯尼公司未能对市面上投入使用的许多不同类 型的PC机型进行广泛的测试。软件在极少数系统中工作正常—例如在迪斯尼程序员用来开发游戏的系统中——但在大多数公众 使用的系统中却不能运行。
第一章 软件测试的基础理论
1.1.1软件缺陷
(2)爱国者导弹防御系统缺陷 爱国者导弹防御系统是里根总统提出的战略防御计划(即星球大 战计划)的缩略版本,它首次应用在海湾战争中对抗伊拉克飞毛腿 导弹的防御战中。尽管对系统赞誉的报道不绝于耳,但是它确实在 对抗几枚导弹中失利,包括一次在沙特阿拉伯的多哈击毙了28名美 国士兵。分析发现症结在于一个软件缺陷,系统时钟的一个很小的 计时错误积累起来到14小时后,跟踪系统不再准确。在多哈的这次 袭击中,系统已经运行了100多个小时。
第一章 软件测试的基础理论
1.1.1软件缺陷
(4)美国航天局火星登陆探测器缺陷 1999年12月3日,美国航天局的火星极地登陆者号探测器试图在火星 表面着陆时失踪。一个故障评估委员会调查了故障,认定出现故障的 原因极可能是一个数据位被意外置位。最令人警醒的问题是为什么没 有在内部测试时发现呢。 从理论上看,着陆的计划是这样的:当探测器向火星表面降落时, 它将打开降落伞减缓探测器的下降速度。降落伞打开几秒钟后, 探测 器的三条腿将迅速撑开,并锁定位置,准备着陆。当探测器离地面 1800米时,它将丢弃降落伞,点燃着陆推进器,缓缓地降落到地面。 美国航天局为了省钱,简化了确定何时关闭着陆推进器的装置。为 了替代其他太空船上使用的贵重雷达,他们在探测器的脚部装了一个 廉价的触点开关,在计算机中设置一个数据位来控制触点开关关闭燃 料。很简单,探测器的发动机需要一直点火工作,直到脚“着地”为 止。
第一章 软件测试的基础理论
1.1.1软件缺陷
3.软件缺陷的种类 软件缺陷表现的形式有多种,不仅仅体现在功能的失效方面,还 体现在其他方面。软件缺陷的主要类型有: • 功能、特性没有实现或部分实现。 • 设计不合理,存在缺陷。 • 实际结果和预期结果不一致。 • 运行出错,包括运行中断、系统崩溃、界面混乱。 • 数据结果不正确、精度不够。 用户不能接受的其他问题,如存取时间过长、界面不美观。
第一章 软件测试的基础理论
1.1.1软件缺陷
下面以实例来说明。 (1)迪斯尼的狮子王游戏软件缺陷。 1994年秋天,迪斯尼公司发布了第一个面向儿童的多媒体光盘游戏 ——狮子王动画故事书(The Lion King Animated Storybook)。尽管 已经有许多其他公司在儿童游戏市场上运作多年,但是这次是迪斯尼 公司首次进军这个市场,所以进行了大量促销宣传。结果,销售额非 常可观,该游戏成为孩子们那年节假日的“必买游戏”。然而后来却 飞来横祸。12月26日,圣诞节的后一天,迪斯尼公司的客户支持电话 开始响个不停。很快,电话支持技术员们就淹没在来自于愤怒的家长 并伴随着玩不成游戏的孩子们哭叫的电话之中。报纸和电视新闻进行 了大量的报道。
第一章 软件测试的基础理论
1.1.1软件缺陷
(2).软件缺陷的状态 软件缺陷除了严重性之外,还存在反映软件缺陷处于一种什么样的 状态,便于跟踪和管理某个产品的缺陷,可以定义不同的bug状态。 • 激活状态:问题还没有解决,测试人员新报的bug,或验证后bug仍 然存在。 • 已修正状态:开发人员针对所存在的缺陷,修改程序,认为已解决 问题,或通过单元测试。 关闭或非激活状态:测试人员验证已经修正的bug后,确认bug不存 在以后的状态。
第一章 软件测试的基础理论
1.1.1软件缺陷
4.软件缺陷的级别及软件缺陷的状态 (1)软件缺陷的级别 作为软件测试员,可能所发现的大多数问题不是那么明显、严重,而是难以觉察 的简单而细微的错误,有些是真正的错误,也有些不是。一般来说,问题越严重 的,其优先级越高,越要得到及时的纠正。软件公司对缺陷严重性级别的定义不 尽相同,但一般可以概括为4种级别: •致命的:致命的错误,造成系统或应用程序崩溃、死机、系统悬挂,或造成数据 丢失、主要功能完全丧失等。 •严重的:严重错误,指功能或特性没有实现,主要功能部分丧失,次要功能完全 丧失,或致命的错误声明。 •一般的:不太严重的错误,这样的软件缺陷虽然不影响系统的基本使用,但没有 很好地实现功能,没有达到预期效果。如次要功能丧失,提示信息不太准确,或 用户界面差,操作时间长等。 •微小的:一些小问题,对功能几乎没有影响,产品及属性仍可使用,如有个别错 别字、文字排列不整齐等。 除了这4种之外,有时需要“建议”级别来处理测试人员所提出的建议或质疑, 如建议程序做适当的修改,来改善程序运行状态,或对设计不合理、不明白的地 方提出质疑。
第一章 软件测试的基础理论
1.1.1软件缺陷
为了更好地理解每一条规则,我们以计算器为例进行说明。 计算器的产品说明书声称它能够准确无误地进行加、减、乘、除运算 。当你拿到计算器后,按下(+)键,结果什么反应也没有,根据第1 条规则,这是一个缺陷。假如得到错误答案,根据第1条规则,这同样 是一个缺陷。 若产品说明书声称计算器永远不会崩溃、锁死或者停止反应。当你任 意敲键盘,计算器停止接受输入,根据第2条规则,这是一个缺陷。 若用计算器进行测试,发现除了加、减、乘、除之外它还可以求平方 根,说明书中从没提到这一功能,根据第3条规则,这是软件缺陷。软 件实现了产品说明书未提到的功能 若在测试计算器时,会发现电池没电会导致计算不正确,但产品说明 书未指出这个问题。根据第4条规则,这是个缺陷。 第5条规则是全面的。如果软件测试员发现某些地方不对劲,无论什 么原因,都要认定为缺陷。如“=”键布置的位置使其极其不好按;或 在明亮光下显示屏难以看清。根据第5条规则,这些都是缺陷。
第一章 软件测试的基础理论
1.1 软件测试的含义
1.1.1软件缺陷 1.1.2 软件测试技术的发展历史及现状
第一章 软件测试的基础理论
1.1 软件测试的含义
软件的质量就是软件的生命,为了保证软件的质量,人们在长 期的开发过程中积累了许多经验并形成了许多行之有效的方法。但 是借助这些方法,我们只能尽量减少软件中的错误和不足,却不能 完全避免所有的错误。 如果把所开发出来的软件看作一个企业生产的产品,那么软 件测试就相当于该企业的质量检测部分。简单地说,我们在编写 完一段代码之后,检查其是否如我们所预期的那样运行,这个活 动就可以看作是一种软件测试工作。新的测试理论、测试方法、 测试技术手段在不断涌出,软件测试机构和组织也在迅速产生和 发展,由此软件测试技术职业也同步完善和健全起来。
软件测试基础教程
杜文洁 景秀丽 主编
中国水利水电出版社
第一章 软件测试的基础理论
1.1 软件测试的含义 1.2 软件测试的目的与原则 1.3软件测试的生命周期 1.4 软件测试与软件开发的关系 习题
第一章 软件测试的基础理论
本章概要
软件测试的发展历史及其现状 软件测试的定义 测试目的 测试原则 测试的生命周期 软件测试与软件开发的关系
第一章 软件测试的基础理论
1.1.1软件缺陷
2.软件缺陷的定义 从上述的案例中可以看到软件发生错误时将造成灾难性危害或 对用户产生各种影响。软件缺陷(bug),即计算机系统或者程序 中存在的任何一种破坏正常运行能力的问题、错误,或者隐藏的 功能缺陷、瑕疵。缺陷会导致软件产品在某种程度上不能满足用 户的需要。 对于软件缺陷的准确定义,通常有以下5条描述: (1)软件未实现产品说明书要求的功能。 (2)软件出现了产品说明书指明不会出现的错误。 (3)软件超出实现了产品说明书提到的功能。 (4)软件实现了产品说明书虽未明确指出但应该实现的目标。 (5)软件难以理解,不易使用,运行缓慢或者终端用户认为不好 。
第一章 软件测试的基础理论
1.1.1软件缺陷
(3)千年虫问题 20世纪70年代早期的某个时间,某位程序员正在为本公司设计开发 工资系统。他使用的计算机存储空间很小,迫使他尽量节省每一个字 节。他将自己的程序压缩得比其他任何人都紧凑。使用的其中一个方 法是把4位数年份,例如1973年,缩减为2位数,73。因为工资系统相 当信赖于日期的处理,所以需要节省大量的存储空间。他简单的认为 只有在到达2000年,那时他的程序开始计算00或01这样的年份时问题 才会产生。虽然他知道会出这样的问题,但是他认定在25年之内程序 肯定会升级或替换,而且眼前的任务比现在计划遥不可及的未来更加 重要。然而这一天毕竟到来了。1995年他的程序仍然在使用,而他退 休了,谁也不会想到如何深入到程序中检查2000年兼容问题,更不用 说去修改了。 估计全球各地更换或升级类似的前者程序以解决潜在的2000问题的 费用已经达数千亿美元。
第一章 软件测试的基础理论
1.1.1软件缺陷
1.软件缺陷案例 人们常常不把软件当回事,没有真正意识到它已经深入渗透到我们 的日常生活中,软件在电子信息领域里无处不在。现在有许多人如果一 天不上网查看电子邮件,简直就没法过下去。我们已经离不开24小时 包裹投递服务、长途电话服务和最先进的医疗服务了。 然而软件是由人编写开发的,是一种逻辑思维的产品,尽管现在软 件开发者采取了一系列有效措施,不断地提高软件开发质量,但仍然 无法完全避免软件(产品)会存在各种各样的缺陷。Biblioteka 第一章 软件测试的基础理论
1.1.1软件缺陷
(6) 英特尔奔腾浮点除法缺陷 在计算机的“计算器”程序中输入以下算式: (4195835/3145727)*3145727-4195835 如果答案是0,就说明计算机没问题。如果得出别的结果,就表示计 算机使用的是带有浮点除法软件缺陷的老式英特尔奔腾处理器——这 个软件缺陷被烧录在一个计算机芯片中,并在制作过程中反复生产。 1994年10月30日,弗吉利亚州Lynchburg学院的Thomas R .Nicely博 士在他的一个实验中,用奔腾PC机解决一个除法问题时,记录了一个 想不到的结果,得出了错误的结论。他把发现的问题放到因特网上, 随后引发了一场风暴,成千上万的人发现了同样的问题,并且发现在 另外一些情形下也会得出错误的结果。万幸的是,这种情况很少见, 仅仅在进行精度要求很高的数学、科学和工程计算中才会导致错误。 大多数用来进行税务处理和商务应用的用户根本不会遇到此类问题。