1、国家教学资源库建设项目国家教学资源库建设项目单元单元1 软件测试入门软件测试入门 主讲人主讲人南京工业职业技术学院 软件测试软件测试2南京工业职业技术学院 软件测试软件测试3任务一:理解软件工程和软件测试的联系 及软件测试模型任务二:正确理解和认识软件质量的概念 及质量保证体系任务三:理解软件测试的分类、原则、策 略和流程建议课时:建议课时:4课时课时 南京工业职业技术学院 软件测试软件测试4 项目概述任务一任务二任务三 南京工业职业技术学院 软件测试软件测试5目标目标l本单元旨在对软件测试建立概要性、框架性的整体本单元旨在对软件测试建立概要性、框架性的整体认识和全面理解,并为后续学习软件测试
2、的策略、认识和全面理解,并为后续学习软件测试的策略、方法与实现技术建立坚实基础。方法与实现技术建立坚实基础。l本单元将:本单元将:l介绍软件工程及其各阶段的任务,由此引出软件介绍软件工程及其各阶段的任务,由此引出软件测试模型测试模型l讨论软件质量的概念及质量保证体系。讨论软件质量的概念及质量保证体系。l介绍软件测试的分类、原则、策略和流程。介绍软件测试的分类、原则、策略和流程。南京工业职业技术学院 软件测试软件测试6 任务简介 任务分析 相关知识点 任务实施 任务小结 拓展训练南京工业职业技术学院 软件测试软件测试7任务简介任务简介l了解软件测试的历史发展过程和软件测试的现状。了解软件测试的历
3、史发展过程和软件测试的现状。l了解软件测试与软件工程各阶段的联系了解软件测试与软件工程各阶段的联系l了解软件测试模型了解软件测试模型南京工业职业技术学院 软件测试软件测试8l 软件测试的含义和概念,软件测试的含义和概念,l 从软件测试的历史发展阶段来把握。从软件测试的历史发展阶段来把握。l 从软件工程的角度来把握。从软件工程的角度来把握。l 软件测试的历史和现状,它的背景和意义。软件测试的历史和现状,它的背景和意义。l 软件测试和软件工程的联系。软件测试和软件工程的联系。l 常见的软件测试模型。常见的软件测试模型。南京工业职业技术学院 软件测试软件测试9知识点列表知识点列表l软件测试l软件工程
4、南京工业职业技术学院 软件测试软件测试10早期定义早期定义1.1.是证明软件中不存在错误的过程是证明软件中不存在错误的过程2.2.是确信程序做了它应该做的事情是确信程序做了它应该做的事情(Hetzel,1973)(Hetzel,1973)3.3.是为找出错误而运行程序或系统的过程是为找出错误而运行程序或系统的过程(Myers,1979)(Myers,1979)4.4.保证程序和相应的规范说明一致。保证程序和相应的规范说明一致。5.5.发现软件中的缺陷。发现软件中的缺陷。6.6.确保软件不做不必要的事情。确保软件不做不必要的事情。7.7.确保系统合理地执行。确保系统合理地执行。8.8.确保系统失
5、败前可以让系统运行到何种程度确保系统失败前可以让系统运行到何种程度9.9.确保发布给用户的系统中有哪些风险。确保发布给用户的系统中有哪些风险。10.ISO900010.ISO9000定义:测试是一种基于机器的,对代码执行测试,确认测试的活动定义:测试是一种基于机器的,对代码执行测试,确认测试的活动 。11.11.对软件质量的度量对软件质量的度量(Hetzel,1983)(Hetzel,1983)12.12.验证系统满足需求,或确定实际结果与预期结果之间的区别验证系统满足需求,或确定实际结果与预期结果之间的区别13.13.确认程序正确实现了所要求的功能确认程序正确实现了所要求的功能南京工业职业技
6、术学院 软件测试软件测试11标准定义标准定义l IEEE软件工程(1983)的定义:使用人工或者自动手段来运行或测试某个系统的过使用人工或者自动手段来运行或测试某个系统的过程程,其目的在于检验它。是否满足规定的需求或弄其目的在于检验它。是否满足规定的需求或弄清预期结果与实际结果之间的差别。它是帮助识别清预期结果与实际结果之间的差别。它是帮助识别开发完成(中间或最终的版本)的计算机软件(整开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度体或部分)的正确度(correctness)(correctness)、完全度、完全度(completeness)(completeness)和质量
7、和质量(quality)(quality)的软件过程;是的软件过程;是SQA(software quality assurance)SQA(software quality assurance)的重要子域的重要子域南京工业职业技术学院 软件测试软件测试12标准定义标准定义l 软件工程知识体系指南2004版 定义测试是为评价、改进产品质量、标识产品的缺陷和问测试是为评价、改进产品质量、标识产品的缺陷和问题而进行的活动。题而进行的活动。软件测试由一个程序的行为在有限测试用例集合上,软件测试由一个程序的行为在有限测试用例集合上,针对期望的行为的动态验证组成,测试用例是从通常针对期望的行为的动态验证组
8、成,测试用例是从通常的无限执行域中适当选取的。的无限执行域中适当选取的。南京工业职业技术学院 软件测试软件测试13由来由来l 北大西洋公约组织(NATO)在1968年举办了首次软件工程学术会议并于会中提出“软件工程”来界定软件开发所需相关知识,并建议“软件开发应该是类似工程的活动”。l 软件工程自1968年正式提出至今,这段时间累积了大量的研究成果,广泛地进行大量的技术实践,借由学术界和产业界的共同努力,软件工程正逐渐发展成为一门专业学科。南京工业职业技术学院 软件测试软件测试14定义定义l IEEEl 在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件
9、的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究 l FritzBauerl 在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。南京工业职业技术学院 软件测试软件测试15定义定义l 计算机科学技术百科全书计算机科学技术百科全书l 软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来 南京工业职业技术学院 软件测试软件测试16核心知识核心知识l 软件需求(软件需求(Software requireme
10、nts)l 软件设计(软件设计(Software design)l 软件建构(软件建构(Software construction)l 软件测试(软件测试(Software test)l 软件维护与更新(软件维护与更新(Software maintenance)l 软件构型管理(软件构型管理(Software Configuration Management,SCM)l 软件工程管理(软件工程管理(Software Engineering Management)l 软件开发过程(软件开发过程(Software Development Process)l 软件工程工具与方法(软件工程工具与方法(
11、Computer-Aided Software Engineering,CASE)l 软件品质(软件品质(Software Quality)南京工业职业技术学院 软件测试软件测试17步骤步骤l了解软件测试的历史发展过程和软件测试的现状l了解软件测试与软件工程各阶段的联系l了解软件测试模型南京工业职业技术学院 软件测试软件测试18发展阶段发展阶段1.1.软件调试软件调试2.2.独立的软件测试独立的软件测试3.3.定义软件测试定义软件测试4.4.软件测试成为专门学科软件测试成为专门学科5.5.开发与测试的融合开发与测试的融合南京工业职业技术学院 软件测试软件测试19发展趋势发展趋势1.软件测试技术
12、进入快速发展轨道2.自动化软件测试技术应用越来越普遍3.测试技术不断细分1.WEB应用测试 2.手机软件测试 3.嵌入式软件测试4.安全测试5.可靠性测试南京工业职业技术学院 软件测试软件测试20对应关系对应关系南京工业职业技术学院 软件测试软件测试21对应关系对应关系l V模型l W模型l X模型l H模型l 前置模型南京工业职业技术学院 软件测试软件测试22V V模型模型南京工业职业技术学院 软件测试软件测试23W W模型模型南京工业职业技术学院 软件测试软件测试24X X模型模型南京工业职业技术学院 软件测试软件测试25H H模型模型南京工业职业技术学院 软件测试软件测试26前置模型前置
13、模型南京工业职业技术学院 软件测试软件测试271 11.1.软件测试的发展经历了从最初的软件调试软件测试的发展经历了从最初的软件调试独立的独立的软件测试软件测试软件测试定义的讨论软件测试定义的讨论软件测试成为专软件测试成为专门的学科门的学科与软件开发融合的发展历程,目前软件与软件开发融合的发展历程,目前软件测试进入了快速发展的轨道,自动化测试应用广泛,测试进入了快速发展的轨道,自动化测试应用广泛,测试技术不断细分。测试技术不断细分。2.2.软件测试与软件开发的各阶段是一一对应的,且具软件测试与软件开发的各阶段是一一对应的,且具有和软件开发并行的特性。有和软件开发并行的特性。南京工业职业技术学院
14、 软件测试软件测试282 23.软件测试模型的主要特点:l V V模型模型:反映了测试活动与分析设计的关系,清楚的描述了测试阶反映了测试活动与分析设计的关系,清楚的描述了测试阶段和开发过程期间各阶段的对应关系,但没有明确的指出应对软段和开发过程期间各阶段的对应关系,但没有明确的指出应对软件的需求、设计进行测试。件的需求、设计进行测试。l W W模型:强调了测试计划等工作的先行和对系统需求和设计的测模型:强调了测试计划等工作的先行和对系统需求和设计的测试,但无独立的操作流程,受开发进度的制约。试,但无独立的操作流程,受开发进度的制约。l X X模型:提出针对单独的程序片段进行相互分离的编码和测试
15、模型:提出针对单独的程序片段进行相互分离的编码和测试,此此后通过频繁的交接后通过频繁的交接,通过集成最终合成为可执行的程序。通过集成最终合成为可执行的程序。l H H模型:体现了软件测试模型是一个独立的流程,贯穿与整个产模型:体现了软件测试模型是一个独立的流程,贯穿与整个产品周期,与其他流程并发进行。品周期,与其他流程并发进行。l 前置模型:是前置模型:是“测试驱动开发测试驱动开发”的映射。前置测试模型结合了传的映射。前置测试模型结合了传统的统的模型和模型和测试模型特点,把软件测试的工作提早至对需求测试模型特点,把软件测试的工作提早至对需求获取阶段,提高了软件测试的效率获取阶段,提高了软件测试
16、的效率南京工业职业技术学院 软件测试软件测试29进一步练习进一步练习1、进一步了解并简述软件测试定义的演变过程,和测试意义的演变2、进一步了解并简述软件开发的几个模式,并说明每种模式对软件测试的影响。南京工业职业技术学院 软件测试软件测试30 任务简介 任务分析 相关知识点 任务实施 任务小结 拓展训练南京工业职业技术学院 软件测试软件测试31简介简介l了解软件质量管理。了解软件质量管理。l了解软件能力成熟度模型了解软件能力成熟度模型l了解软件测试成熟度模型了解软件测试成熟度模型南京工业职业技术学院 软件测试软件测试32l通常在一般的中小企业中会不将软件测试与软件质通常在一般的中小企业中会不将
17、软件测试与软件质量保证加以细分,软件测试人员也叫做质量保证人员量保证加以细分,软件测试人员也叫做质量保证人员即即QAQA,但是软件测试和软件质量保证是软件质量工程,但是软件测试和软件质量保证是软件质量工程的两个不同层面的工作,两者既有联系,又有区别。的两个不同层面的工作,两者既有联系,又有区别。l质量保证(质量保证(QAQA)是通过预防,检查与改进来保证软)是通过预防,检查与改进来保证软件质量的件质量的l软件测试关注的不是过程活动,而是每个过程活动软件测试关注的不是过程活动,而是每个过程活动的产出物的产出物南京工业职业技术学院 软件测试软件测试33知识点列表知识点列表l软件缺陷l软件可靠性l软
18、件质量南京工业职业技术学院 软件测试软件测试34定义定义l从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。l表现:1、软件没有实现产品规格说明所要求的功能模块2、软件中出现了产品规格说明指明不应该出现的错误3、软件实现了产品规格说明没有提到的功能模块4、软件没有实现虽然产品规格说明没有明确提及但应该实现的目标;5、软件难以理解,不容易使用,运行缓慢,或从测试员的角度看,最终用户会认为不好。南京工业职业技术学院 软件测试软件测试35产生的原因产生的原因l软件本身软件本身l团队工作团队工作l技术问题技术问题l项目管理
19、的问题项目管理的问题南京工业职业技术学院 软件测试软件测试36修复成本修复成本l问题发现的越早越好南京工业职业技术学院 软件测试软件测试371 1l软件可靠性比硬件可靠性更难保证软件可靠性比硬件可靠性更难保证l即使是美国宇航局的软件系统,其可靠性仍比硬即使是美国宇航局的软件系统,其可靠性仍比硬件可靠性低一个数量级。件可靠性低一个数量级。l影响软件可靠性的因素影响软件可靠性的因素1.需求分析定义错误。需求分析定义错误。2.设计错误。设计错误。3.编码错误。编码错误。4.测试错误。测试错误。5.文档错误。文档错误。南京工业职业技术学院 软件测试软件测试382 2l软件可靠性定义软件可靠性定义(1)
20、在规定的条件下,在规定的时间内,软件不引起系统失效的概率;(2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力;南京工业职业技术学院 软件测试软件测试39影响质量的因素影响质量的因素l正确性、健壮性、效率、完整性、可用性、风险正确性、健壮性、效率、完整性、可用性、风险(产品运行);(产品运行);l可理解性、可维修性、灵活性、可测试性(产品修可理解性、可维修性、灵活性、可测试性(产品修改);改);l可移植性、可再用性、互运行性(产品转移)。可移植性、可再用性、互运行性(产品转移)。南京工业职业技术学院 软件测试软件测试40标准标准l软件需求是度量软件质量的基础,与需求不一致就软件需求
21、是度量软件质量的基础,与需求不一致就是质量不高。是质量不高。l指定的标准定义了一组指导软件开发的准则,如果指定的标准定义了一组指导软件开发的准则,如果没有遵守这些准则,几乎肯定会导致质量不高。没有遵守这些准则,几乎肯定会导致质量不高。l如果软件满足明确描述的需求,但却不满足隐含的如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。需求,那么软件的质量仍然是值得怀疑的。南京工业职业技术学院 软件测试软件测试41步骤步骤l了解软件质量管理l了解软件能力成熟度模型l了解软件测试成熟度模型南京工业职业技术学院 软件测试软件测试42质量管理过程质量管理过程l质量计划l质量保
22、证l质量控制南京工业职业技术学院 软件测试软件测试43CMM/CMMICMM/CMMIlCMM/CMMI是目前国际上最流行、最实用的一种软件生产过程标准l美国卡内基梅隆大学软件工程研究所(CMU SEI)提出l分为5个等级l 初始级(initial)l 可重复级(Repeatable)l 已定义级(Defined)l 已管理级(Managed)l 优化级(Optimizing)南京工业职业技术学院 软件测试软件测试44TMMTMMl美国的伊利诺斯州技术学院参照CMM开发了TMM(Testing Maturity Model),作为CMM的补充l一个试图达到TMM特定等级的企业必须至少达到同样的
23、CMM等级l分为5个等级l 初始级l 定义级l 集成级l 管理和测量级l 优化,预防缺陷和质量控制级南京工业职业技术学院 软件测试软件测试451.1.2020世纪世纪9090年代中期以后,人们对软件测试的认识也年代中期以后,人们对软件测试的认识也不断得到发展。不断得到发展。2.2.美国卡耐基美国卡耐基-梅隆大学软件工程研究所梅隆大学软件工程研究所(SEI)(SEI)研制并研制并推出了推出了CMMCMM,该模型逐渐成为了评估软件开发过程,该模型逐渐成为了评估软件开发过程的管理以及工程能力的标准。的管理以及工程能力的标准。3.3.BurnsteinBurnstein博士提出的博士提出的TMMTMM
24、,依据,依据CMMCMM的框架提出测的框架提出测试的五个不同级别,关注于测试的成熟度模型。试的五个不同级别,关注于测试的成熟度模型。TMMTMM描述了测试过程,是项目测试部分得到良好计描述了测试过程,是项目测试部分得到良好计划和控制的基础。划和控制的基础。南京工业职业技术学院 软件测试软件测试46进一步练习进一步练习1、进一步了解并简述软件质量管理中软件质量保证和软件质量控制之间的区别和联系。2、进一步了解并简述软件测试在软件质量管理中的作用。南京工业职业技术学院 软件测试软件测试47 任务简介 任务分析 相关知识点 任务实施 任务小结 拓展训练南京工业职业技术学院 软件测试软件测试48l了解
25、软件测试的分类。l了解软件测试的原则l了解软件测试的流程南京工业职业技术学院 软件测试软件测试49分析分析l软件测试有很多种分类方法,前人也总结出了许多软件测试的原则。l此外,作为第一章的最后一部分我们将要真正了解软件测试的整个流程,了解软件测试的全过程。并真正实施一次软件测试。南京工业职业技术学院 软件测试软件测试50知识点列表知识点列表l测试用例l测试环境南京工业职业技术学院 软件测试软件测试51定义定义l测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。l测试用例=输入+输出+测试环境南京工业职业技术
26、学院 软件测试软件测试52重要性重要性l技术层面l 指导测试的实施l 规划测试数据的准备l 编写测试脚本的“设计规格说明书”l 降低工作强度l管理层面l 团队交流l 重复测试l 检验测试员进度l 质量评估l 分析缺陷的标准南京工业职业技术学院 软件测试软件测试53评价标准评价标准l有效性l经济性l可仿效性l可修改性l独立性l可跟踪性南京工业职业技术学院 软件测试软件测试54设计基本原则设计基本原则l代表性l可判定性l可再生性南京工业职业技术学院 软件测试软件测试551 1l定义l测试环境就是软件运行的平台,即进行软件测试所必需的工作平台和前提条件,可用如下公式来表示。l测试环境=硬件+软件+网
27、络+历史数据l重要性l加快测试进度l准确重现缺陷l提高工作效率和软件质量南京工业职业技术学院 软件测试软件测试562 2l良好测试环境的要素l好的测试模型。l多样化的系统配置l熟练使用工具的测试员l测试环境的规划l明确8个问题l指定责任人南京工业职业技术学院 软件测试软件测试573 3l测试环境的维护和管理l设置专门的测试环境管理员角色l明确测试环境管理所需的各种文档l测试环境访问权限的管理l测试环境的变更管理 l测试环境的备份和恢复南京工业职业技术学院 软件测试软件测试58l了解软件测试的分类l了解软件测试的原则l了解软件测试的流程南京工业职业技术学院 软件测试软件测试591 1l按是否需要
28、执行被测软件的角度l静态测试l动态测试l按阶段划分l 单元测试l 集成测试 l 系统测试l 验收测试l 回归测试l Alpha 测试l Beta 测试南京工业职业技术学院 软件测试软件测试602 2l按测试方法划分l白盒测试l黑盒测试l灰盒测试南京工业职业技术学院 软件测试软件测试611 1l原则1:测试显示缺陷的存在l原则2:穷尽测试是不可能的l原则3:测试的尽早介入l原则4:缺陷的集群性l原则5:杀虫剂悖论l原则6:测试活动依赖于测试内容南京工业职业技术学院 软件测试软件测试622 2l原则7:没有失效不代表系统是可用的l原则8:测试的标准是用户的需求l原则9:尽早定义产品的质量标准l原则
29、10:测试贯穿于整个生命周期l原则11:第三方或独立的测试团队南京工业职业技术学院 软件测试软件测试63l需求分析阶段。l测试计划制定l测试设计l执行测试l测试分析报告南京工业职业技术学院 软件测试软件测试641 11.1.软件测试涉及技术和管理两个层面的工作,看似头软件测试涉及技术和管理两个层面的工作,看似头绪纷繁,实际只要了解测试的主线,就能清楚了解绪纷繁,实际只要了解测试的主线,就能清楚了解每个阶段不同角色的职责。每个阶段不同角色的职责。2.2.本任务主要从宏观上来介绍软件测试的各个角度的本任务主要从宏观上来介绍软件测试的各个角度的分类,软件测试的原则和软件测试的流程分类,软件测试的原则和软件测试的流程南京工业职业技术学院 软件测试软件测试65进一步练习进一步练习1、进一步了解并简述冒烟测试和随机测试的含义和应用场合2、进一步了解并简述软件测试工程师的素质要求。