《第2章软件测试方法课件.ppt》由会员分享,可在线阅读,更多相关《第2章软件测试方法课件.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章章软件件测试方法方法第1页,此课件共50页哦软件测试的分类方法方法目标目标/特性特性单元测试单元测试系统测试系统测试验收测试验收测试性能测试性能测试强壮性测试强壮性测试功能测试功能测试白盒测试白盒测试黑盒测试黑盒测试测试对象或层次测试对象或层次适用性测试适用性测试可靠性测试可靠性测试集成测试集成测试安全性测试安全性测试Zhu.K第2页,此课件共50页哦不同的分类v按测试的对象或范围分类,如单元测试、文档测试、系统测试等)v按测试目的分类,如功能测试、回归测试、性能测试、可靠性测试、安全性测试和兼容性测试等v根据测试过程中被测软件是否被执行,分为静态测试和动态测试v根据是否针对系统的内部
2、结构和具体实现算法来完成测试,可分为白盒测试和黑盒测试Zhu.K第3页,此课件共50页哦软件测试的各个阶段开发生命周期开发生命周期.维护 需求定义应用定义应用开发 修订 建立 建立测试生命周期测试生命周期.执行.执行执行.测试计划缺陷跟踪测试开发测试设计评估Zhu.K第4页,此课件共50页哦软件测试阶段阶 段段输入入 输出出 需求分析需求分析需求定义需求定义,市场分析文档市场分析文档,相关技术相关技术文档文档市场需求分析会议记要市场需求分析会议记要,功能设计功能设计,技术设计技术设计设计审查设计审查 市场需求文档市场需求文档,技术设计文档技术设计文档 测试计划测试计划,测试用例测试用例功能验证
3、功能验证 代码完成文件包代码完成文件包,功能详细设计说明功能详细设计说明书书最终技术文档最终技术文档完整测试用例完整测试用例,完备的测试计划完备的测试计划,缺缺陷报告陷报告,功能验证测试报告功能验证测试报告系统测试系统测试代码修改后的文件包代码修改后的文件包 完整测试用例完整测试用例,完备的测试计划完备的测试计划 缺陷报告缺陷报告缺陷状态报告缺陷状态报告项目阶段报告项目阶段报告确认测试确认测试代码冻结文件包代码冻结文件包确认测试用例确认测试用例缺陷状态报告缺陷状态报告缺陷报告审查缺陷报告审查版本审查版本审查版本发布版本发布 代码发布文件包代码发布文件包 测试计划检查清单测试计划检查清单当前版本
4、已知问题的清单当前版本已知问题的清单版本发布报告版本发布报告Zhu.K第5页,此课件共50页哦测试阶段(SDLC)Zhu.K第6页,此课件共50页哦需求和设计审查测试人员参与产品需求分析和系统设计,认真阅读有关文档,真正理解客户的需求和技术上的设计,检查需求说明书对产品描述的准确性、一致性等,检查系统设计的合理性和可测试性等Zhu.K第7页,此课件共50页哦单元测试单元测试单元测试的对象是程序系统中的最小单元-模块或组件上,在编码阶段进行,针对每个模块进行测试,主要通过白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。
5、多个模块可以平行地、对立地测试,通常要编写驱动模块和桩模块v单元测试一般由编程人员和测试人员共同完成,而以开发人员为主v单元测试包括代码评审,代码评审可以发现程序50%70%代码的缺陷。Zhu.K第8页,此课件共50页哦集成测试集成测试,也称组装测试、联合测试、子系统测试,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的模块之间问题 两种集成方式:一次性集成方式和增殖式集成方式。Zhu.K第9页,此课件共50页哦功能测试功能测试一般须在完成集成测试后进行,而且是针对应用系统进行测试。功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行
6、功能验证,以确认每个功能是否都能正常使用 Zhu.K第10页,此课件共50页哦系统测试系统测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试,包括恢复测试、安全测试、强度测试和性能测试等 Zhu.K第11页,此课件共50页哦验收测试&安装测试验收测试验收测试的目的是向未来的用户表明系统能够像预定要求那样工作,验证软件的功能和性能如同用户所合理期待的那样安装测试安装测试是指按照软件产品安装手册或相应的文档,在一个和用户使用该产品完全一样的环境中或相当于用户使用环境中,进行一步一步的安装操作性的测试 Zhu.K第12页,此课件共50页哦2
7、.1静态分析静态分析v静态分析是不需要执行程序而进行测试的技术,其主要功能是检查软件与其描述是否一致,是否有冲突或是歧义性。静态分析的主要特征是利用计算机作为工具分析源程序,而不是运行程序。v静态分析是其他测试的前提,静态分析包括代码检查、静态结构分析、代码质量度量等。静态分析可由人工进行,充分发挥人的逻辑思维优势,也可借助软件工具进行,加快分析速度和效果。第13页,此课件共50页哦2.1静态分析静态分析v代码检查代码检查代码检查包括代码走查和代码审查,代码走查与代码审查的区别是:代码走查除了阅读程序外,还需要由测试员利用人工运行程序并得出输出结果,然后由参加者对结果进行审查,以达到测试的目的
8、。代码审查的主要内容是检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等方面;代码审查可以发现违背程序编写标准的问题、程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。第14页,此课件共50页哦2.1静态分析静态分析v静态结构分析静态结构分析静态结构分析主要是以图形的方式描述程序的内部结构,例如函数调用关系图、函数内部控制流图。其中函数调用关系图以图形方式描述一个应用程序中各个函数的调用和被调用关系;函数内部控制流图显示一个函数的逻辑结构,它由许
9、多节点组成,一个节点代表一条语句或数条语句,结点间的连接称之为边,边表示语句间的控制流向。第15页,此课件共50页哦2.1静态分析静态分析v代码质量度量代码质量度量 软件质量的ISO/IEC 9126国际标准包括六个方面:v功能性v可靠性v易用性v效率性v可维护性v可移植性软件的质量是软件属性的各种标准度量的组合。对于软件开发人员来说,静态分析只是进行动态测试的预处理工作,并且静态分析已经成为一种自动化的代码校验方法。第16页,此课件共50页哦2.1静态分析静态分析v静态分析的任务静态分析的任务:1、发现程序的错误2、寻找潜伏问题的原因3、提供程序的信息4、选择测试用例5、为查错做准备 第17
10、页,此课件共50页哦2.2动态测试动态测试v动态测试特点:动态测试是使被测代码在相对真实的环境下运行,从多个角度观察与检测程序运行时的功能、逻辑、行为和结构,并且通过实际运行的输出结果和预期输出结果的比较,来发现其中的错误。主要特点:v运行被测试程序,获得程序运行的动态情况和真实结果,从而进行分析。v必须生成测试用例来运行程序,测试质量与测试用例密切相关。v生成测试用例、分析测试结果的工作量大,使得测试工作消耗较多。v动态测试中涉及人员多、设备多、数据多,要求有较好的管理制度和工作流程。第18页,此课件共50页哦2.2动态测试动态测试v动态测试的内容:动态测试包括功能确认与接口测试、覆盖率分析
11、、性能分析、内存分析等。v(1)功能确认与接口测试v(2)覆盖率分析v(3)性能分析v(4)内存分析第19页,此课件共50页哦2.3 人工测试与机器测试人工测试与机器测试v人工测试技术是指不依赖于具体的计算机,通过人工手段来进行测试的技术。而机器测试是指将大量的重复性工作由计算机完成,是一种依赖于计算机的软件测试技术,又称为机器测试技术。v机器测试是基于计算机完成的测试技术。包括边界值测试、分支覆盖测试、原型和语法测试。其中语法测试是由语言编译器自动完成的。第20页,此课件共50页哦2.3 人工测试与机器测试人工测试与机器测试v软件审查软件审查的对象是各开发阶段的成果,如需求分析、概要设计、详
12、细设计等阶段的成果以及编码、测试计划和测试用例等。软件审查通常有以下几个步骤:制定计划、预审、准备、审查会、返工、终审。第21页,此课件共50页哦2.3 人工测试与机器测试人工测试与机器测试v人工测试与机器测试的比较人工测试不能保证测试的科学性与严密性,这是因为:测试人员要负责大量文档、报表的制订和整理工作,工作繁琐;受软件分发日期、开发成本及测试人员、资源等多方面因素的限制,难以进行全面的测试;如果修正缺陷所花费的时间相当长,回归测试将变得更为困难;对测试过程中发现的大量缺陷缺乏科学、有效的管理手段,责任含混不清,没有人能向决策层提供精确的数据以度量当前的工作进度及工作效率;反复测试带来的倦
13、怠情绪及其他人为因素使得测试标准前后不一,测试花费的时间越长,测试的严格性也就越低;难以对不可视对象或对象的不可视属性进行测试。第22页,此课件共50页哦2.4 黑盒测试黑盒测试v黑盒测试是对软件的功能和界面的测试,其目的是发现软件需求或者设计规格说明中的错误,所以又称功能测试,是一种基于用户观点出发的测试。在测试期间,把被测程序看做一个黑盒子,测试人员并不清楚被测程序的源代码或者该程序的具体结构,不需要对软件的结构有深层的了解,而是只知道该程序输入和输出之间的关系,依靠能够反映这一关系的功能规格说明书,来确定测试用例和推断测试结果的正确性。黑盒测试仅在程序接口处进行测试,只检查被测程序功能是
14、否符合规格说明书的要求,程序是否能适当的接受输入数据并产生正确的输出信息。第23页,此课件共50页哦2.4 黑盒测试黑盒测试v黑盒测试的主要内容v(1)可接受性测试/验收测试v(2)Alpha/Beta 测试(3)菜单/帮助测试(4)发行测试(5)回归测试(6)RTM测试第24页,此课件共50页哦2.4 黑盒测试黑盒测试v黑盒测试方法黑盒测试方法v等价类划分v边界值分析v因果图v错误推测v状态测试v在黑盒测试方法中,等价类划分和边界值分析是最常使用的测试方法,也是软件测试最基本的方法。第25页,此课件共50页哦2.4 黑盒测试黑盒测试等价类划分等价类划分v等价类划分v1问题的提出问题的提出v2
15、等价类划分概念等价类划分概念v3.等价类划分方法的测试用例设计等价类划分方法的测试用例设计v4.使用等价类划分设计测试用例使用等价类划分设计测试用例第26页,此课件共50页哦2.4 黑盒测试黑盒测试等价类划分等价类划分v使用等价类划分设计测试用例使用等价类划分设计测试用例(1)弱等价类测试(2)强等价类测试(3)弱健壮等价类测试(4)强健壮等价类测试第27页,此课件共50页哦2.4 黑盒测试黑盒测试边界值分析边界值分析v边界值分析的必要性边界值分析的必要性软件测试常用的一个方法是把测试工作按同样的形式划分。对数据进行软件测试,就是检查用户输入的信息、返回结果以及中间计算结果是否正确。实践表明,
16、输入域的边界值比中间的值更加容易发现错误。实践证明,大量的错误发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。为此,边界值分析可作为一种测试技术。第28页,此课件共50页哦2.4 黑盒测试黑盒测试边界值分析边界值分析v边界值分析边界值分析边界值分析也是一种黑盒测试方法,是一种补充等价划分的测试用例设计技术,它选择一组测试用例检查边界值。它不是选择等价类的任意元素,而是选择等价类边界的测试用例。在设计测试用例时,对边界处理必须给予足够的重视,为检验边界的处理而专门设计测试用例,常常可以取得良好的测试效果。提出边界条件时,一定要测试临近边
17、界的合法数据,即测试刚好处于边界上的合法数据以及刚超过边界的非法数据。边界值分析的基本思想是使用最小值、略高于最小值、正常值、略低于最大值和最大值作为输入变量值。第29页,此课件共50页哦2.4 黑盒测试黑盒测试边界值分析边界值分析v利用边界值分析选择测试用例的原则:利用边界值分析选择测试用例的原则:(1)如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据;(2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1个、比最小个数少1个的数作为测试数据;(3)根据规格说明的每一个输出条件,使用规则(1);(4)根据规格说明的每一
18、个输出条件,使用规则(2);(5)如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试用例;(6)如果程序用了一个内部数据结构,应该选取这个内部数据结构的边界上的值作为测试用例;(7)分析规格说明,找出其他可能的边界条件。第30页,此课件共50页哦2.4 黑盒测试黑盒测试错误推测错误推测v使用边界分析法和等价划分技术,可以帮助开发人员设计具有代表性的、容易暴露程序错误的测试用例。但是,不同类型不同特点的程序通常有一些特殊的容易出错的情况。此外,有时分别使用每组测试数据时程序都能正常工作,这些输入数据的组合却可能检测出程序的错误。一
19、般说来,即使是一个比较小的程序,可能的输入组合数也往往十分巨大,因此必须依靠测试人员的经验和直觉,从各种可能的测试用例中选出一些最可能引起程序出错的方案。对于程序中可能存在哪类错误的推测,是挑选测试用例时的一个重要因素。第31页,此课件共50页哦2.4 黑盒测试黑盒测试因果图因果图等价类划分和边界值分析这两种方法并没有考虑到输入情况的各种组合,也没有考虑到各个输入情况之间的依赖关系。输入条件之间的相互组合,可能会产生一些新的情况。用前面两种测试方法时可以检测到各个输入条件可能出错的情况,但却忽略了多个条件组合起来时出错的情况。但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等
20、价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图。因果图考虑了多个输入之间的相互组合与相互制约关系,按一定步骤,高效率地选择测试用例,同时还能指出程序规格说明中存在的问题。第32页,此课件共50页哦2.4 黑盒测试黑盒测试因果图因果图v利用因果图生成测试用例的步骤利用因果图生成测试用例的步骤(1)分析软件规格说明中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明中的语义。找出原因与结果之间,原因与原因之间对应的关系。根据
21、这些关系,画出因果图。(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为判定表。(5)以判定表的每一列为依据来设计测试用例。第33页,此课件共50页哦2.4 黑盒测试黑盒测试因果图因果图v因果图中的基本符号因果图中的基本符号第34页,此课件共50页哦2.4 黑盒测试黑盒测试因果图因果图v输入的约束条件输入的约束条件第35页,此课件共50页哦2.4 黑盒测试黑盒测试因果图因果图v因果图类型划分因果图类型划分v(1)形象因果图v(2)数据因果图第36页,此课件共50页哦2.4 黑盒测试黑
22、盒测试因果图因果图v应注意的几个问题应注意的几个问题(1)从作图的意图考虑,可以分为问题因果图和目标因果图。问题因果图是寻找问题的起因,回答“为什么”的问题。目标因果图是用来寻找解决某问题的方法或达到某个目标的途径,回答了“如何做”的问题。(2)依照软件产品的特性不同,应选择不同的因素来进行分析。选择因素时要充分考虑问题所处的环境特点和影响等因素,不可以不经考虑随便套用,否则弄巧成拙,致使简单的问题更为复杂化。第37页,此课件共50页哦2.5白盒测试白盒测试v白盒测试要求测试人员清楚盒子内部的内容以及内部如何运作,也就是说白盒测试法是通过分析程序内部的逻辑与程序执行路线来设计测试用例的测试方法
23、,因此白盒测试也被称为逻辑驱动测试,以测试的深度为主。由于这种方法按照程序内部的逻辑进行测试,检验程序中的每条通路是否都能按预定要求正确工作,所以白盒测试又称为结构测试。第38页,此课件共50页哦2.5白盒测试白盒测试v白盒测试的作用由于软件可能存在缺陷,所以要花费时间和精力来测试逻辑细节,软件存在的缺陷主要包括:1.逻辑错误和不正确的假设。当设计和实现主流之外的功能、条件、或控制时,往往出现错误。2.主观相信不可能执行某条逻辑路径,但在正常的情况下可能被执行。同时控制流和数据流的一些无意识的假设可能导致设计的错误,只有通过路径测试才能发现这些错误。3.随机的错误。当一个程序被翻译成程序设计语
24、言的源代码时,有可能产生某些错误,多数可被语法检查机制发现,但是还有些只有在进行白盒测试时才可被发现。第39页,此课件共50页哦2.5白盒测试白盒测试v程序结构分析控制流分析第40页,此课件共50页哦2.5白盒测试白盒测试v程序结构分析数据流分析可以利用数据流分析查找使用了未定义的变量错误,或定义的变量从未使用过等情况,这些都是程序错误的表现形式,如变量名混淆、拼错变量名字、丢失语句等等。如果程序中的某一语句执行时能改变程序中变量V的值,则称变量V被该语句定义。如果某一语句的执行引用了程序中变量V的值,则称该语句引用了变量V。第41页,此课件共50页哦2.5白盒测试白盒测试逻辑覆盖逻辑覆盖v逻
25、辑覆盖分类逻辑覆盖分类(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖(6)路径覆盖第42页,此课件共50页哦2.5白盒测试白盒测试逻辑覆盖逻辑覆盖v逻辑覆盖准则逻辑覆盖准则(1)ESTCA(Error Sensitive Test Cases Analysis)覆盖规则规则1 对于A rel B(rel可以是、)型的分支谓词,应适当地选择A与B的值,使得测试执行到该分支语句时,AB的情况分别出现一次。规则规则2 对于A rel1 C(rel1可以是或,A是变量,C是常量)型的分支谓词,当rel1为时,应适当地选择A,使:ACM规则规则3 对输入的变量赋值,使其
26、在每一测试用例中均有不同的值与符号,并与同一组测试用例中其他变量的值与符号不一致。第43页,此课件共50页哦2.5白盒测试白盒测试逻辑覆盖逻辑覆盖v逻辑覆盖准则逻辑覆盖准则(2)LCSAJ覆盖第一层:语句覆盖第二层:分支覆盖第三层:LCSAJ覆盖。即程序中的每一个LCSAJ都至少在测试中经历过一次。第四层:两两LCSAJ覆盖。即程序中每两个首尾相连的LCSAJ组合起来在测试中都要经历一次。第n+2层:每n个首尾相连的LCSAJ组合在测试中都要经历一次。第44页,此课件共50页哦2.5白盒测试白盒测试v程序插装程序插装是一种基本的测试手段,是借助向被测程序中插入操作(语句)来达到测试的目的。那些
27、被插入的语句称为“探测器”或“探针”。在程序特定部位插入“探针”的目的是为了把程序执行过程中发生的一些重要事件记录下来,如语句执行次数、变量值的变化情况、指针的改变等。第45页,此课件共50页哦2.5白盒测试白盒测试v符号测试符号测试的基本思想是允许程序的输入不仅可以是数值数据,也可以包括符号值。符号可以是符号变量,也可以是包含这些符号变量的一个表达式。这样,在执行被测程序的过程中符号的计算就代替了普通测试执行中对测试用例的数值计算,所得的结果是符号公式或符号谓词。第46页,此课件共50页哦2.5白盒测试白盒测试v符号测试是程序测试与程序验证的一个折衷方法。一方面,它沿用了传统的程序测试方法,
28、通过运行被测试程序来检验它的可靠性。另一方面,由于一次符号测试的结果代表了一大类普通测试的结果,证明了程序接受此类输入后,所得的输出结果是否正确。理想的情况是程序中仅有有限的几条可执行路径,若对这几条路径都完成了符号测试,确认程序正确性的可能就更大。v符号测试方法的优点是:可以很容易地确定所给的一组测试用例是否覆盖了程序的各条路径。对于任何一组测试用例,可以首先确定它所经历的测试路径,然后,再给出输入变量的符号值,进而得到路径条件。第47页,此课件共50页哦2.5白盒测试白盒测试v程序变异程序变异方法是一种错误驱动测试,错误驱动测试分为程序强变异和程序弱变异。v1程序强变异v2程序弱变异第48
29、页,此课件共50页哦2.6白盒测试和黑盒测试的比较白盒测试和黑盒测试的比较v白盒测试考虑了黑盒测试不考虑的方面。同样地,黑盒测试也考虑了白盒测试不考虑的方面。白盒测试只考虑测试软件产品,它不保证完整的需求规格是否被满足。而黑盒测试只考虑测试需求规格,它不保证实现的所有部分是否被测试到。黑盒测试会发现遗漏的缺陷,指出规格的哪些部分没有被完成。而白盒测试会发现逻辑方面的缺陷,指出哪些实现部分是错误的。v白盒测试比黑盒测试成本高。白盒测试需要在测试计划前产生源代码,并且在确定合适的数据和软件是否正确方面需要花费更多的工作量。尽可能使用可获得的规格从黑盒测试方法开始测试计划。白盒测试计划应当在黑盒测试计划成功通过之前就开始,使用已经产生的流程图和路径的判定。路径应当根据黑盒测试计划进行检查并且决定和使用额外需要的测试。第49页,此课件共50页哦2.6白盒测试和黑盒测试的比较白盒测试和黑盒测试的比较v白盒测试的特点1白盒测试的优点v 能仔细考虑软件的实现;v 可以检测代码中的每条分支和路径;v 揭示隐藏在代码中的错误;v 对代码的测试比较彻底。2白盒测试的缺点v 昂贵;v 无法检测代码中遗漏的路径和数据敏感性错误;v 不验证规格的正确性。第50页,此课件共50页哦