(完整版)1.测试概述(软件测试).ppt
《(完整版)1.测试概述(软件测试).ppt》由会员分享,可在线阅读,更多相关《(完整版)1.测试概述(软件测试).ppt(111页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.测试概述课程内容软件测试的背景软件测试概述软件测试技术软件测试方法软件测试模型软件测试过程软件测试人员例子软件错误失效案例迪斯尼的狮子王游戏 时间:1994 1995 背景:迪斯尼公司首次进军儿童游戏市场,市场宣传力度很大,前期销售情况很好 出现的问题:该游戏在一些PC 机上无法玩 原因:迪斯尼公司没有对市场上已经投入运行的PC 机型进行调研,并且进行测试,导至该游戏只在程序员开发游戏的系统上可以运行,但在大众使用的常见系统中无法运行 结果:迪斯尼公司不得不承担客户的投诉、产品退货、更换光盘、以及又一轮的调试、修改和测试的所有费用。软件错误失效案例迪斯尼的狮子王游戏 时间:1994 199
2、5 背景:迪斯尼公司首次进军儿童游戏市场,市场宣传力度很大,前期销售情况很好 出现的问题:该游戏在一些PC 机上无法玩 原因:迪斯尼公司没有对市场上已经投入运行的PC 机型进行调研,并且进行测试,导至该游戏只在程序员开发游戏的系统上可以运行,但在大众使用的常见系统中无法运行 结果:迪斯尼公司不得不承担客户的投诉、产品退货、更换光盘、以及又一轮的调试、修改和测试的所有费用。软件错误失效案例Intel 奔腾浮点除法软件缺陷 时间:1994 背景:Intel 发布的一款新处理器 问题:在装有这款处理器计算机的计算器中执行算式“(4195835/3145727)3145727-4195835”不等于0
3、 原因:老式奔腾CPU 的浮点除法软件有缺陷 结果:Intel 事实上在芯片发布之前,已经发现了这个缺陷,但认为不严重,没有修正。被外界发现后,试图掩饰。最终,迫于舆论压力公开道歉,花费4 亿美元更换老芯片。软件错误失效案例Intel 奔腾浮点除法软件缺陷 时间:1994 背景:Intel 发布的一款新处理器 问题:在装有这款处理器计算机的计算器中执行算式“(4195835/3145727)3145727-4195835”不等于0 原因:老式奔腾CPU 的浮点除法软件有缺陷 结果:Intel 事实上在芯片发布之前,已经发现了这个缺陷,但认为不严重,没有修正。被外界发现后,试图掩饰。最终,迫于舆
4、论压力公开道歉,花费4 亿美元更换老芯片。软件错误失效案例美国航天局火星极地登陆 时间:1999 年12 月3 日 背景:火星极地登陆飞船在试图登陆火星表面时失踪。问题:某一个数据位被意外复位.原因:为了省钱,采用一个廉价的触点开关来控制关闭推进器。但是由于飞船脚迅速打开的机械震动,大多数情况下也会打开触点开关,并设置错误的数据位。测试过程分两组:一组是测试飞船脚的落地打开过程;另一组是测试飞船打开后的着陆过程;前一组没有注意数据位是否被置位,因为这不是他们负责的范围。而后一个组在每次测试之前又重置计算机,清除所有的数据位。双方独立工作都很正常,但两个组没有进行集成测试。结果:飞船坠毁软件错误
5、失效案例千年虫 时间:20 世纪90 年代 背景:随着21 世纪的到来,很多的计算机系统都面临着“千年虫”的危害 问题:这样就导致2000 年以后的年份的记录出现问题,如00 年是指1900 还是2000?原因:20 实际70 年代时,由于计算机存储空间很小,并且十分昂贵,所以在计算机中记录时间采用了“偷懒”的方式,例如将1973 缩减为73 结果:世界各地为了更换和升级系统,花费了上百亿的美元软件缺陷的定义软件未达到产品说明书中已经标明的功能;软件出现了产品说明书中指明不会出现的错误;软件未达到产品说明书中虽未指出但应当达到的目标;软件功能超出了产品说明书中指明的范围;软件测试人员认为软件难
6、以理解、不易使用,或者最终用户认为该软件使用效果不良。举例:计算器内的嵌入式软件软件缺陷的示例软件未达到产品说明书标明的功能 计算器的产品说明书声称:“它能够准确无误的进行加减乘除运算”。测试人员输入“5/0”,如果没有反应或出现错误的反映,则根据上述规则,这是一个软件缺陷。软件出现了产品说明书指明不会出现的错误 说明书声称“计算器永远不会崩溃、死锁”。如果狂敲键盘会使计算器停止接受输入,那么根据第2 条,这是一个缺陷。软件功能超出了产品说明书指明的范围 如果计算器产品说明书只说明了其能够完成加减乘除的运算,而在实际中发现其还可以进行平方根的运算,这是缺陷。软件缺陷的示例软件未达到产品说明书虽
7、未指出,但应该达到的目标 对于测试人员来讲,这实际上是为了找出产品说明书中的遗漏之处。例如,在测试计算器时,发现电池没电时会导致计算不正确。说明书中可能没有提及这一点,这是缺陷软件测试人员认为软件难于理解、不易使用、运行速度慢,或者最终用户认为不好 这是一个含盖比较广的规则。测试人员往往是真正使用软件的第一人,扮演着客户的角色。如果发现有什么不对劲的地方,无论什么原因都要认定为是软件缺陷。例如,某个按钮的位置不好,界面的格局设计不符合习惯,颜色太刺眼等;缺陷的分类(1)1.轻微 词语拼写错误2.中等 误导或重复信息3.使人不悦 被截断的名称,0.00 美元账单4.影响使用 有些交易没有处理5.
8、严重 丢失交易6.非常严重 不正确的交易处理7.极为严重 经常出现“非常严重”的错误8.无法忍受 数据库破坏9.灾难性 系统停机10.容易传染 扩展到其它系统的系统停机缺陷的分类:根据严重程度分类缺陷的分类(2)1.输入输出缺陷2.逻辑缺陷3.计算缺陷4.接口缺陷5.数据缺陷缺陷的分类:按性质和范围分类 缺陷的分类(3)缺陷的分类:按软件的生存周期分类 1.问题定义(需求分析)错误 在软件定义阶段,分析员研究用户的要求后所编写文档中出现的错误。换句话说,这类错误是由于问题定义不满足用户的要求而导致的错误。缺陷的分类(3)缺陷的分类:按软件的生存周期分类 2.规格说明错误 这类错误是指规格说明与
9、问题定义不一致所产生的错误。它们又可以细分成:不一致性错误:规格说明中功能说明与问题定义发生矛盾。冗余性错误:规格说明中某些功能说明与问题定义相比是多余的。不完整性错误:规格说明中缺少某些必要的功能说明 不可行错误:规格说明中有些功能要求是不可行的。不可测试错误:有些功能的测试要求是不现实的。缺陷的分类(3)缺陷的分类:按软件的生存周期分类 3.设计错误 设计阶段产生的错误,它使系统的设计与需求规格说明中的功能说明不相符。它们又可以细分为:设计不完全错误:某些功能没有被设计,或设计得不完全。算法错误:算法选择不合适。主要表现为算法的基本功能不满足功能要求、算法不可行或者算法的效率不符合要求。模
10、块接口错误:模块结构不合理;模块与外部数据库的界面不一致,模块之间的界面不一致。控制逻辑错误:控制流程与规格说明不一致;控制结构不合理。数据结构错误:数据设计不合理;与算法不匹配;数据结构不满足规格说明要求缺陷的分类(3)缺陷的分类:按软件的生存周期分类 4.编码错误 多种多样,大体归为以下几种:数据说明错、数据使用错、计算错、比较错、控制流错、界面错、输入输出错,及其它的错误 在不同的开发阶段,错误的类型和表现形式不同,故应采用不同的方法和策略来进行检测。软件缺陷的构成软件缺陷修复的代价软件在从计划、编制、测试、一直到交付用户公开使用的过程中,都有可能产生和发现缺陷。随着整个开发过程的时间推
11、移,修复软件的费用呈几何级数的增长。下图是软件缺陷在不同阶段发现时修改的费用示意图课程内容软件测试的背景软件测试概述软件测试技术软件测试方法软件测试模型软件测试过程软件测试人员例子软件测试的发展软件测试发展史上的几个重要事件 1972 年6 月,首次软件测试会议 1972 年6 月,Bill Hetzel(代表论著The Complete Guide to Software Testing)在美国的北卡罗来纳(North Carolina)大学组织了首次以软件测试为主题的会议。1973 年,Bill Hetzel 定义软件测试概念,就是建立一种信心,认为程序能够按预期的设想运行。1983 年,
12、Bill Hetzel 将定义修订为:评价一个程序和系统的特性或能力,并确定它是否达到预期的结果。软件测试就是以此为目的的任何行为。他还把软件的质量定义为“符合要求软件测试的发展软件测试发展史上的几个重要事件(续)1979 年,Glenford Myers:The Art of Software Testing 出版。这本书是软件测试方面的圣经。Myers 定义及诠释的测试方法论已成为软件测试的基本模块。提出测试的目的是证伪。1983、1990 年,IEEE/ANSI 标准定义软件测试概念。1990 年的IEEE/ANSI 标准将软件测试进行了这样的定义:在既定的状况条件下,运行一个系统或组建
13、,观察记录结果,并对其某些方面进行评价的过程。这里所谓“既定的状况”可理解为需求或设计。软件测试的发展软件测试发展史上的几个重要事件(续)1996 年提出:测试能力成熟度TCMM(Testing Capability Maturity Model)、测试支持度TSM(Testing Support Model)、测试成熟度(Testing Maturity Model)。软件测试的发展软件测试发展趋势 测试与质量保证体系的融合 测试方法越来越细分,如网站测试、安全性测试等 测试技术不断发展 软件验证技术方面 软件静态测试方面 测试用例的选择方面 自动化测试方面 测试走向专业化道路Softwar
14、e Engineering什么是软件测试广义的概念 指软件生存周期中所有的检查、评审和确认工作,其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认狭义概念 识别软件缺陷的过程,即实际结果与预期结果的不一致Software Engineering什么是软件测试软件测试通常包括验证(verification)和确认(validation):-验证指保证软件正确的实现了某一特定功能的一系列活动(功能性)-确认指的是保证软件的实现满足了用户需求的一系列活动(实用性)Software Engineering什么是软件测试软件的质量与可靠性:-可靠性:运行稳定、满足客户需求-质
15、量:功能强度、可靠性、性能、客服以及性价比等-可靠性和功能,哪一个更重要?Software Engineering什么是软件测试软件的测试(Testing)与质量保证(Quality Assurance,QA):-软件测试:尽可能找到软件缺陷,并确保缺陷得以修复-软件质量保证:创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法-?QA和QC的异同点?Software Engineering软件测试的目的测试的目的就是发现软件中的各种缺陷测试只能证明软件存在缺陷,不能证明软件不存在缺陷测试可以使软件中缺陷降低到一定程度,而不是彻底消灭以较少的用例、时间和人力找出软件中的各种错误和缺陷,以确
16、保软件的质量以更少的支出(需求变更、维护、客服等成本)来谋取收入支出比达到最大化。Software Engineering软件测试的原则软件开发者的座右铭:“尽早地和不断地进行软件测试”。测试用例应由测试输入和与之对应的预期输出结果两部分组成。妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。Good-enough:一种权衡投入/产出比的原则:选择测试保证测试的覆盖程度,但穷举测试是不可能的:有限测试所有的测试都应追溯到用户需求测试的规模由小而大,从单元测试到系统测试为了尽可能地发现错误,应该由独立的第三方来测试不能为了便于测试擅自修改程序既应该测试软件该做什么也应该测试软件
17、不该做什么Software Engineering软件测试的原则充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中以发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。其中的原因是:编写该段程序时,程序员情绪不佳、心情不好;程序员往往犯同样的错误;某些软件缺陷实乃冰山一角。Software Engineering软件测试的原则严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的组装方式,跟踪规则,调试规则,以及回归测试的规定等等以
18、及评价标准。应当对每一个测试结果做全面的检查。对测试结果要有一个确认过程。A 测出的错误由B 确认。严重的错误可召开评审会进行讨论和分析Software Engineering软件测试的原则严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的组装方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。应当对每一个测试结果做全面的检查。对测试结果要有一个确认过程。A 测出的错误由B 确认。严重的错误可召开评审会进行讨论和分析Software Engineeri
19、ng软件测试的原则软件测试必须基于“质量第一”的思想去开展各项工作,当时间和质量冲突时,时间服从质量。并非所有软件缺陷都要修复 原因:没有足够的时间进行修复;修复的风险较大;不值得修复可不算做故障的一些缺陷;“杀虫剂现象”。结论:关键是要进行正确判断、合理取舍,根据风险分析决定哪些故障必须修复,哪些故障可以不修复。Software Engineering软件测试的规律木桶原理:软件质量的关键因素是分析、设计和实现,测试应该是融于其中的补充检查手段,其他管理、支持、甚至文化因素也会影响最终软件的质量(例如:老板不诚信)测试是提高软件质量的必要条件,最直接、最快捷的手段,但决不是一种根本手段 2
20、个角度:木桶原理与反木桶原理?Software Engineering软件测试的规律Bug 的80-20 原则 在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的Bug(提前测试)而系统测试又能找出其余Bug 中的80%最后的5%的Bug 可能只 有在用户的大范围、长时间使用后才会曝露出来Software Engineering软件测试的规律80/20 原则1.80%的工程量用在20%的需求上(关键需求)2.80%的开发成本花费在20%的部件上3.80%的错误是由20%的部件引起的4.80%的延期或返工是由20%的变更造成的5.80%的系统资源是由20%的部件消耗的6.80%的进度是
21、由20%的人完成的Software Engineering软件测试的对象(1)软件测试并不等于程序测试。软件测试应该贯穿整个软件定义与开发整个期间。因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试的对象。Software Engineering软件测试的对象(2)在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来。Software Engineering软件测试的重点测试用例的良好设计 测试用例的设计是整个软件测试
22、工作的核心 测试用例反映对被测对象的质量要求,决定对测试对象的质量评估Software Engineering软件测试的重点测试工作的管理 尤其是对包含多个子系统的大型软件系统,其测试工作涉及大量人力和物力,有效的测试工作管理是保证有效测试工作的必要前提测试环境的建立 测试环境应该与实际测试环境一致Software Engineering软件测试的质量软件测试可以发现以下软件缺陷:软件实现的功能不正确“缺少”:软件没有实现某项功能“多余”,软件实现的某项功能在需求中没有定义发现第一类软件缺陷的过程-“验证”发现后两类软件缺陷的过程-“确认”“验 证”和“确 认”哪 一 个 更 重 要?“确 认
23、”有 必 要 吗?Software Engineering软件测试度量1、测试覆盖率 有多少需求、代码已经被测试了2、缺陷发现率 缺陷是何时被发现,并且有多少缺陷已经被发现。缺陷可以根据严重性来分类。需记录以下值:缺陷数目缺陷的严重性Software Engineering软件测试度量3、测试成功率:有多少测试已经通过了,并且有多少是运行正常的?需记录以下值:已通过的测试用例的数目可利用的测试用例的数目Software Engineering软件测试的分类典型的软件测试类型 功能测试 可靠性测试 容错性测试 恢复测试 易用性测试 性能测试 可维护性测试 可移植性测试 安全性测试 用户文档测试S
24、oftware Engineering软件测试误区软件开发完成后进行软件测试;软件测试=程序测试;软件质量问题是测试人员的错误,软件发布后如果发现问题,那是软件测试人员的错;测试技术要求不高,比编程容易,随便找一个人就可以了;测试跟着开发动,有时间就多测,没时间就少测;测试是测试人员的事,与开发人员无关;软件测试是没有前途的工作,只有程序员才是软件高手;测试要执行所有可能的输入;好的测试一定要使用很多的测试工具。Software Engineering错误(error):同义词“过错”(mistake),是指在软件生存期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生。缺陷(Faul
25、t):同义词“缺点”(Defect),缺陷是错误的结果。更精确地说,缺陷是错误的表现,表现可以是叙述性文字、数据流框图、层次结构图、源代码等。失效(failure):是指软件运行时产生的一种不希望或不可接受的外部行为结果。事故(incident):当出现失效时,可能会也可能不会呈现给用户。事故说明出现了与失效类似的情况,警告用户注意所出现的失效。测试中的几个概念Software Engineering课程内容软件测试的背景软件测试概述软件测试技术软件测试方法软件测试模型软件测试过程软件测试人员例子Software Engineering软件测试技术Software Engineering动态测
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 测试 概述 软件
限制150内