软件测试的背景_第1页
软件测试的背景_第2页
软件测试的背景_第3页
软件测试的背景_第4页
软件测试的背景_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Wang_1软件测试Software Testing第第1 1章章 软件测试的背景软件测试的背景主讲主讲: : 王安文王安文软件工程专业软件工程专业 主干课程主干课程Wang_2First Computer Bug (1947)Grace Murray Hopper(1906-1992)计算机科学家计算机科学家 美国海军将军美国海军将军编译器的发明者编译器的发明者COBOL语言的开发负责人语言的开发负责人ACM Grace Murray Hopper AwardWang_3软件测试背景软件测试背景n软件危机软件危机危机背景:危机背景: 落后的软件生产方式无法满足日趋复杂大型软件系落后的软件生产

2、方式无法满足日趋复杂大型软件系统的开发需求(统的开发需求(2020世纪世纪6060年代)年代)危机表现:危机表现: 项目延期、经费超支、产品无法维护项目延期、经费超支、产品无法维护Wang_4软件测试背景软件测试背景n软件危机软件危机危机原因:缺乏规范化工程约束危机原因:缺乏规范化工程约束缺陷的不断积累与放大效应缺陷的不断积累与放大效应需求阶段需求阶段设计阶段设计阶段编码阶段编码阶段测试阶段测试阶段正确需求正确需求 需求缺陷需求缺陷正确设计正确设计 需求缺陷需求缺陷 设计缺陷设计缺陷正确编码正确编码 需求缺陷需求缺陷 设计缺陷设计缺陷 编码缺陷编码缺陷已发现缺陷已发现缺陷需求缺陷需求缺陷 设计

3、缺陷设计缺陷 编码缺陷编码缺陷未发现缺陷未发现缺陷缺陷如何使软件开发成本增加缺陷如何使软件开发成本增加Wang_5软件测试背景软件测试背景n软件危机软件危机危机解决:危机解决:软件工程软件工程(1968年)年)软件工程软件工程(IEEE定义定义):将系统化的、严格约束的、可量化的方法应用于软件的开发、将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件运行和维护,即将工程化应用于软件. 阶段阶段需求分析需求分析(Requirement Analysis)设计设计(Design)编码编码(Coding)测试测试(Testing)运行和维护运行和维护(Run an

4、d Maintenance)工作量工作量20%15%20%45%软件工程各阶段工作量软件工程各阶段工作量Wang_6软件测试的重要性n软件测试在软件生存期非常重要,工作量和开销要占将近一半,是保证软件质量的主要手段,对于查找软件缺陷、保证产品质量,提高企业效益具有不可替代的作用。 下面我们以具体的案例来说明。Wang_7著名的软件错误案例(1)n迪斯尼的狮子王:19941995q94年秋,迪斯尼公司发布了面向儿童的游戏“Lion King Animated Storybook”,进行了大量的宣传和促销,销售额可观。12月26日,开始收到大量投诉:游戏无法正常运行,舆论哗然。q原因:没有对市场上

5、的各种PC机型进行测试,该软件只能在少数系统中正常工作,但在大众常用的系统中不行。Wang_8软件测试背景软件测试背景n软件测试的意义软件测试的意义2IntelIntel奔腾处理芯片缺陷奔腾处理芯片缺陷(Pentium FDIV bug)软件缺陷难以避免!软件缺陷难以避免! (4195835/3145727)*3145727-4195835/wiki/Pentium_FDIV_bugThomas Nicely4195835.0/3145727.0 = 1.333 820 449 136 241 002 (Correct value) 4195835.

6、0/3145727.0 = 1.333 739 068 902 037 589 (Returned by flawed Pentium) 4195835*3145727/3145727 = 4195835 (Correct value) 4195835*3145727/3145727 = 4195579 (The flawed Pentium) Wang_9软件测试背景软件测试背景n软件测试的意义软件测试的意义软件缺陷难以避免!软件缺陷难以避免! 3火星登陆事故火星登陆事故( (Mars Polar Lander) )Nancy G. LevesonNancy G. Leveson, The

7、Role of Software in Spacecraft Accidents, The Role of Software in Spacecraft AccidentsWang_10软件测试背景软件测试背景n软件测试的意义软件测试的意义4爱国者导弹防御系统爱国者导弹防御系统软件缺陷难以避免!软件缺陷难以避免! Wang_11软件测试背景软件测试背景n软件测试的意义软件测试的意义5千年虫问题千年虫问题(Y2K)(Y2K)软件缺陷难以避免!软件缺陷难以避免! Wang_12软件测试背景软件测试背景n软件测试的意义软件测试的意义6北京奥运订票网站瘫痪北京奥运订票网站瘫痪事故过程:订票系统半小时即

8、瘫痪事故过程:订票系统半小时即瘫痪软件缺陷难以避免!软件缺陷难以避免! Wang_13软件测试背景软件测试背景n软件测试的意义软件测试的意义7危险预见,危险预见,2004软件缺陷难以避免!软件缺陷难以避免! Wang_14软件测试背景软件测试背景n软件测试的意义软件测试的意义 软件测试是保证软件质量的重要手段。软件测软件测试是保证软件质量的重要手段。软件测试深入软件开发过程的每个阶段,在有限的开发条试深入软件开发过程的每个阶段,在有限的开发条件下,最大程度地保证最终软件产品符合用户需要。件下,最大程度地保证最终软件产品符合用户需要。Wang_15软件失败n描述软件问题的术语:q错误(error

9、, mistake, bug )q缺陷(fault, defect)n过错缺陷和遗漏缺陷q失效(failure)q事故(incident)Wang_16软件缺陷的定义n产品说明书:是软件开发小组的一个协定。它对开发的产品进行定义,给出产品的细节、如何做、做什么、不能做什么。n至少满足以下5个规则之一才称为软件缺陷:q软件未实现产品说明书要求的功能。q软件出现了产品说明书指明不应出现的错误。q软件实现了产品说明书未提到的功能。q软件未实现产品说明书虽未明确提及但应该实现的目标。q软件难以理解、不易使用、运行缓慢或者从测试员的角度看最终用户会认为不好。Wang_17软件错误的分类n软件需求错误(需

10、求不正确,不完全,文档有误等)n功能和性能错误(遗漏功能、规定了一些冗余的功能、异常处理有误等)n软件系统结构错误(系统整体构架有误)n软件结构错误(程序控制顺序有误,处理过程有误)n数据错误(数据定义或者数据结构有错,数据存取或者操作有误,例如:动态数据和静态数据混淆)n软件实现和编码错误(违背编码标准,例如:局部变量和全局变量混淆)n软件集成错误(接口有误)n测试定义与测试执行错误(例如:测试计划不完整,测试用例不充分)Wang_18导致错误的根源n缺乏有效的沟通n软件复杂度n编程错误n不断变更的需求n时间的压力n人员的自大n软件开发工具n缺乏文档的代码Wang_19Wang_20Wang

11、_21n以上案例都说明了软件测试在软件整个生命周期中起着至关重要的作用,那么什么是软件测试,我们如何定位软件测试呢?问题:Wang_22nIEEE的定义(1983)q使用人工或者自动手段来运行或测定整个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。n测试(test)q软件测试就是一个过程或一系列过程 ,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。 q测试的目标是:发现错误软件测试的定义与定位Wang_23n把软件测试(包括其它任何测试)定位在证明软件的正确性上是不对的,软件测试的目标是:查找软件的错误.原因 :q证明软件正确性的目标不可

12、达:测试是无法证明软件的正确性的,原因是我们无法对软件进行理想测试(在理想情况下:对程序的所有可能执行情况进行测试),如完全的白盒测试(设计若干测试用例,使得软件中所有的执行路径都被执行到,见图1)或黑盒测试(设计若干测试用例,穷举所有软件可能的输入,见图2),这都要花费我们不能承受的成本(时间,人力),退一步讲,就算我们能对软件实施完全的白盒测试与黑盒测试,我们也无法保证软件在需求获取或是设计上没有失误,更何况我们还要考虑到非法和无效输入的问题。软件测试的定义与定位(分析)Wang_24软件测试的定义与定位(分析-CONT)如左边图示,是一个不超过100行的程序结构图,它有大概100,000

13、,000,000,000 条可能的执行路径。以每秒执行1000个测试用例的速度计算,完成所有可能路径的测试大概需要3170 年。图1(白盒测试)Wang_25软件测试的定义与定位(分析-CONT)xyz在32位的计算机上运行,只考虑x,y是整数,不同的测试数据组合最大可能数目为:2的64方,以每秒执行1000个测试用例的速度计算,完成测试大概需要工作5亿年。图2(黑盒测试)Wang_26q从心理学角度讲,与软件测试的最终目标不一致。从心理学角度讲,与软件测试的最终目标不一致。我们进行软件测试的最终目标是想为软件增加一些价值,既提高了软件的可靠性和质量(与软件工程的目标一致),换句话说也就是找到

14、了软件的错误并最终修复了它。从心理学的角度讲,测试人员将目标确立为证明程序中存在错误(而不是证明软件中不存在错误), 将更利于为软件增加更多的价值。 软件测试的定义与定位(分析-CONT)Wang_27软件测试的特点n完全测试程序是不可能的n软件测试是有风险的行为n测试很难显示潜伏的软件缺陷n找到的软件缺陷越多,就说明软件缺陷越多n杀虫剂现象:软件测试越多,免疫力越强n并非所有软件缺陷都能修复q没有足够的时间、修复的风险、不值得修复n难以说清的软件缺陷n产品说明书不断变化,没有最终版本n软件测试员在产品小组中不受欢迎q早点找出缺陷、控制情绪、不要总是报告坏消息n软件测试是一项讲究条理的技术工作

15、Wang_28软件测试员的目标n软件测试员的目标是发现软件缺陷。n软件测试员的目标是尽可能早地找出软件缺陷。q随着时间的推移,修复软件缺陷的费用将迅速增长n软件测试员的目标是尽可能早地找出软件缺陷,并确保其得以修复。Wang_29软件测试员应具备的素质n他们是群探索者n他们是故障排除员n他们不放过任何蛛丝马迹n他们具有创造性n他们是群追求完美者n他们判断准确n他们注重策略和外交n他们善于说服n在软件编程方面受过教育Wang_30软件测试背景软件测试背景n软件测试的发展软件测试的发展早期:早期: 测试等同于测试等同于“调试调试”;由开发人员完成;投入少,;由开发人员完成;投入少,介入晚介入晚19

16、50S:1950S: 测试被视为一种发现软件缺陷的活动;测试被视为一种发现软件缺陷的活动; 开始与调试区别开开始与调试区别开;测试始终后于开发;测试始终后于开发; 缺乏有效的测试方法缺乏有效的测试方法 Wang_31软件测试背景软件测试背景n软件测试的发展软件测试的发展1970S:1970S: 软件工程思想开始深入人心;软件工程思想开始深入人心; -1972-1972,Bill Hetzel组织了第一次软件测试会议组织了第一次软件测试会议 -1973, -1973, Bill Hetzel给出软件测试第一个定义:给出软件测试第一个定义:“测试就是建立一种信心,认为程序能够按预期设想运行测试就是

17、建立一种信心,认为程序能够按预期设想运行” 核心思想:测试是试图验证软件是工作的核心思想:测试是试图验证软件是工作的 Wang_32软件测试背景软件测试背景n软件测试的发展软件测试的发展1970S:1970S:Glenford J. Myers: : 测试是尽可能多地发现软件错误测试是尽可能多地发现软件错误MyersMyers的软件测试定义:的软件测试定义: 测试是为发现错误而执行一个程序或系测试是为发现错误而执行一个程序或系统的过程统的过程Wang_33软件测试背景软件测试背景n软件测试的发展软件测试的发展Myers的的三个重要观点三个重要观点: 1. 1. 测试是为了证明程序有错,而不是证

18、测试是为了证明程序有错,而不是证明程序无错误;明程序无错误; 2.2.一个好的测试用例是在于它能发现至今一个好的测试用例是在于它能发现至今未发现的错误;未发现的错误; 3.3.一个成功的测试是发现了至今未发现的一个成功的测试是发现了至今未发现的错误的测试;错误的测试;The Art of Software Testing Wang_34软件测试背景软件测试背景n软件测试的发展软件测试的发展1980S:1980S: - -软件软件趋向大型化、高复杂化,软件质量越来越重要趋向大型化、高复杂化,软件质量越来越重要 - -开发开发从混乱无序过渡到结构化开发从混乱无序过渡到结构化开发 - -测试测试基础

19、理论和基础理论和实用技术开始形成实用技术开始形成 - -测试被作为软件质量保证的重要手段测试被作为软件质量保证的重要手段 -1983-1983年年, ,IEEE给出软件测试的定义给出软件测试的定义Wang_35软件测试背景软件测试背景n软件测试的发展软件测试的发展1990S-1990S-至今:至今: - -测试理论和技术进一步完善测试理论和技术进一步完善 - -测试测试工具发展迅速,大大提高测试的自动化程度工具发展迅速,大大提高测试的自动化程度 - -商业化商业化软件测试工具和开源软件测试工具软件测试工具和开源软件测试工具。 - -Web测试,面向对象测试测试,面向对象测试, , Wang_3

20、6软件测试基本概念软件测试基本概念n软件测试环境软件测试环境测试环境测试环境= =软件软件+ +硬件硬件+ +网络网络测试环境要点:测试环境要点:1. 真实真实2. 干净干净3. 无毒无毒4. 独立独立测试环境分类:测试环境分类:5. 软件开发环境:包括开发工具和平台软件开发环境:包括开发工具和平台6. 软件运行环境:最终用户使用的环境软件运行环境:最终用户使用的环境Wang_37软件测试基本概念软件测试基本概念n软件测试的类型软件测试的类型视角视角2 2:开发阶段:开发阶段1.1.单元测试单元测试 2.2.集成测试集成测试 3.3.确认测试确认测试 4.4.系统测试系统测试5.5.验收测试验

21、收测试 6.6.性能测试性能测试 7.7.回归测试回归测试视角视角1 1:测试技术:测试技术1.1.白盒测试白盒测试 2.2.黑盒测试黑盒测试 3.3.灰盒测试灰盒测试视角视角3 3:执行状态:执行状态1.1.静态测试静态测试 2.2.动态测试动态测试视角视角4 4:执行主体:执行主体1.1.开发方测试开发方测试 2.2.用户测试用户测试 3.3.第三方测试第三方测试视角视角5 5:特殊测试:特殊测试1.1.国际化测试国际化测试 2.2.即兴测试即兴测试 3.3.兼容性测试兼容性测试 4.4.安全性测试安全性测试5.5.可用性与易获得性测试可用性与易获得性测试 6.6.面向对象系统测试面向对象

22、系统测试 7.Web7.Web测试测试Wang_38软件测试基本概念软件测试基本概念n软件测试的类型软件测试的类型视角视角1 1:测试技术:测试技术1.1.白盒测试白盒测试 2.2.黑盒测试黑盒测试 3.3.灰盒测试灰盒测试白盒测试:白盒测试: 基于软件代码的内部逻辑来设计测试用例。测试退出条件是代基于软件代码的内部逻辑来设计测试用例。测试退出条件是代码覆盖率码覆盖率. .一般由开发人员完成一般由开发人员完成. .黑盒测试:黑盒测试: 基于需求和功能性,不需要了解内部的设计和代码,通过软件基于需求和功能性,不需要了解内部的设计和代码,通过软件外部表现来发现缺陷和错误外部表现来发现缺陷和错误.

23、.灰盒测试:灰盒测试: 介于白盒测试与黑盒测试之间的技术,既关注软件外部表现,介于白盒测试与黑盒测试之间的技术,既关注软件外部表现,又注意程序内部逻辑结构又注意程序内部逻辑结构. .Wang_39软件测试基本概念软件测试基本概念n软件测试的类型软件测试的类型单元测试:单元测试: 对最小的软件设计单元对最小的软件设计单元模块的验证工作模块的验证工作. .集成测试:集成测试: 验证模块间接口是否正确,多个模块是否能协调一致地正确实验证模块间接口是否正确,多个模块是否能协调一致地正确实现需求和功能现需求和功能. .确认测试:确认测试: 验证软件是否可以按照用户合理的期望方式工作验证软件是否可以按照用

24、户合理的期望方式工作. .系统测试:系统测试: 测试整个系统的行为和错误属性测试整个系统的行为和错误属性. .视角视角2 2:开发阶段:开发阶段1.1.单元测试单元测试 2.2.集成测试集成测试 3.3.确认测试确认测试 4.4.系统测试系统测试5.5.验收测试验收测试 6.6.性能测试性能测试 7.7.回归测试回归测试Wang_40软件测试基本概念软件测试基本概念n软件测试的类型软件测试的类型验收测试:验收测试: 保证客户对所有的需求都满意保证客户对所有的需求都满意.(.(测试和测试和测试测试) )性能测试:性能测试: 评价系统响应时间、吞吐率等系统属性,并与不同版本或竞争评价系统响应时间、

25、吞吐率等系统属性,并与不同版本或竞争产品进行比较产品进行比较. .回归测试:回归测试: 保证增强型或改正型修改使软件正常运行,不影响已有功能保证增强型或改正型修改使软件正常运行,不影响已有功能. .视角视角2 2:开发阶段:开发阶段1.1.单元测试单元测试 2.2.集成测试集成测试 3.3.确认测试确认测试 4.4.系统测试系统测试5.5.验收测试验收测试 6.6.性能测试性能测试 7.7.回归测试回归测试Wang_41软件测试基本概念软件测试基本概念n软件测试的类型软件测试的类型静态测试:静态测试: 不运行程序不运行程序,而通过人工对程序和文档进行分析与检查,而通过人工对程序和文档进行分析与

26、检查. .动态测试:动态测试: 通过人工或利用工具通过人工或利用工具运行程序运行程序进行检查,分析程序执行状态和进行检查,分析程序执行状态和外部表现外部表现. .视角视角3 3:执行状态:执行状态1.1.静态测试静态测试 2.2.动态测试动态测试Wang_42软件测试基本概念软件测试基本概念n软件测试的类型软件测试的类型开发方测试:开发方测试: 开发方通过检测和提供证据,证实软件是否满足规定的需求开发方通过检测和提供证据,证实软件是否满足规定的需求. . 验证测试或验证测试或测试测试. .用户测试:用户测试: 用户通过运行和使用软件,检测与核实软件实现是否符合自己用户通过运行和使用软件,检测与

27、核实软件实现是否符合自己预期要求预期要求.测试测试. .第三方测试:第三方测试: 介于软件开发方和用户之间的测试组织进行的测试活动介于软件开发方和用户之间的测试组织进行的测试活动. .视角视角4 4:执行主体:执行主体1.1.开发方测试开发方测试 2.2.用户测试用户测试 3.3.第三方测试第三方测试Wang_43软件测试基本概念软件测试基本概念n软件测试的类型软件测试的类型国际化测试:国际化测试: 保证全球化软件产品符合不同国家的语言和使用习惯保证全球化软件产品符合不同国家的语言和使用习惯. .即兴测试:即兴测试: 通过直觉和经验,不采用任何形式化的测试通过直觉和经验,不采用任何形式化的测试

28、. .兼容性测试:兼容性测试: 确保软件在不同基础设施下都能够一致地发挥作用确保软件在不同基础设施下都能够一致地发挥作用. .安全性测试:安全性测试: 测试软件是否存在安全漏洞和隐患测试软件是否存在安全漏洞和隐患. .视角视角5 5:特殊测试:特殊测试1.1.国际化测试国际化测试 2.2.即兴测试即兴测试 3.3.兼容性测试兼容性测试 4.4.安全性测试安全性测试5.5.可用性与易获得性测试可用性与易获得性测试 6.6.面向对象系统测试面向对象系统测试 7.Web7.Web测试测试Wang_44软件测试基本概念软件测试基本概念n软件测试的类型软件测试的类型可用性与易获得性测试:可用性与易获得性

29、测试: 确认产品的易用性、美感以及是否方便行动不便的用户确认产品的易用性、美感以及是否方便行动不便的用户. .面向对象系统测试:面向对象系统测试: 针对采用面向对象技术开发的软件所的测试技术针对采用面向对象技术开发的软件所的测试技术. .WebWeb测试:测试: 发现存在于发现存在于webweb应用中的内容、功能、性能、安全性等方面的错应用中的内容、功能、性能、安全性等方面的错误的测试活动集误的测试活动集. .视角视角5 5:特殊测试:特殊测试1.1.国际化测试国际化测试 2.2.即兴测试即兴测试 3.3.兼容性测试兼容性测试 4.4.安全性测试安全性测试5.5.可用性与易获得性测试可用性与易

30、获得性测试 6.6.面向对象系统测试面向对象系统测试 7.Web7.Web测试测试Wang_45测试生命周期需求规格说明设计编码测试错误错误错误错误缺陷分类缺陷隔离缺陷解决修复清除程序错误引入程序错误找出程序错误测试计划测试用例开发运行测试用例评估测试结果Wang_46软件测试基本概念软件测试基本概念n软件测试与软件开发的关系软件测试与软件开发的关系编码编码单元测试单元测试集成测试集成测试模块集成模块集成确认测试确认测试系统构建系统构建系统测试系统测试系统发布系统发布需求分析需求分析需求测试需求测试概要设计概要设计概要设计测试概要设计测试详细设计详细设计详细设计测试详细设计测试软件测试过程软件

31、测试过程W模型模型Wang_47软件测试现状和趋势软件测试现状和趋势n国际现状国际现状测试在软件开发中占有不可或缺的重要地位(测试在软件开发中占有不可或缺的重要地位(53%-87%53%-87%). . 阶段阶段需求分析需求分析设计设计编码编码测试测试投产和维护投产和维护资金量资金量3%8%7%15%67%知名知名ITIT企业中,开发人员和测试人员比例通常都为企业中,开发人员和测试人员比例通常都为1:1,1:1,微软微软甚至达到甚至达到1:2.1:2.Microsoft ProjectExchange2000Windows2000Manager25250Developer1401700Tester3503200Develo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论