《软件的质量与测试.pptx》由会员分享,可在线阅读,更多相关《软件的质量与测试.pptx(193页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、18.1 8.1 软件的质量软件的质量 8.1.1 8.1.1 软件的质量观软件的质量观uJuran Juran 的质量观的质量观:产品在使用时,能适合产品在使用时,能适合用户需要用户需要的目的目 标程度。标程度。uISOISO的质量观的质量观:“一个一个产品产品或服务是否能够满足其指或服务是否能够满足其指定定 的或蕴含的的或蕴含的需求有关的性质需求有关的性质与与特征总和特征总和”.第1页/共193页2 产品质量的特性产品质量的特性 质量由多种因素组成质量由多种因素组成,但互不独立但互不独立,可能是冲突的可能是冲突的,也不一定同等重要也不一定同等重要;在一定前提下来衡量质量在一定前提下来衡量质
2、量,不能脱离不能脱离 代价来衡量产品的质量代价来衡量产品的质量.第2页/共193页3 8.1.2 8.1.2 软件质量因素软件质量因素 McCallMcCall软件质量模型软件质量模型 (1977):(1977):产产品品修修改改产品操作产品操作产产品品改改型型易使用性易使用性高效性高效性正确性正确性可靠性可靠性完整性完整性易维护性易维护性灵活性灵活性易测试性易测试性易移植性易移植性易复用性易复用性互用性互用性 图图8-1 McCall 8-1 McCall 软件质量模型软件质量模型第3页/共193页4每个要素包含系列衡量标准每个要素包含系列衡量标准正确性易追溯性易追溯性一致性一致性完备性完备
3、性从需求中找到实现能力实现了所有的功能一致的术语和技术高效性 运行效率运行效率存储效率存储效率使用最少的处理时间使用最小的内存空间第4页/共193页5易使用性输入、输出量输入、输出速度易交流培训易操作可靠性简洁性准确性一致性容错性:异常,仍能操作第5页/共193页6易维护性 一致性模块性简洁性:易理解简明性:代码少自我描述性:有解释灵活性 易扩展性模块性一致性自我描述性第6页/共193页7易测试性简洁性模块性检视:测量、识别错误能力自我描述性易移植性硬件独立性软件独立性自我描述性模块性第7页/共193页8易复用性硬件独立性模块性通用性软件独立性自我描述性互用性数据共同性通讯共同性模块性第8页/
4、共193页9BoehmBoehm模型模型 (1978)(1978)在该模型中,软件质量的全体称为总体效用在该模型中,软件质量的全体称为总体效用分为现存效用、易维护性分为现存效用、易维护性指不涉及软件的修改质量因素第9页/共193页10总体效用总体效用易维护性易维护性现存效用现存效用易易修修改改性性易易理理解解性性易易测测试试性性效效率率人人机机界界面面可可靠靠性性易易移移植植性性易易更更改改性性 可可认认性性 简简明明性性结结构构性性自自我我描描述述性性易易交交流流性性易易存存取取性性设设备备效效率率可可依依靠靠性性一一致致性性完完整整性性准准确确性性自自我我包包含含性性硬硬件件独独立立性性图
5、图 8-2 Boehm8-2 Boehm模型模型第10页/共193页11McCallMcCall和和BoehmBoehm模型模型从用户出发的质量观为基础提出的从用户出发的质量观为基础提出的.模型都是层次结构模型模型都是层次结构模型.使用模型时需根据具体情况决定质使用模型时需根据具体情况决定质量要素的相对重要性量要素的相对重要性.第11页/共193页12软件质量要素之间的关系软件质量要素之间的关系正确性正确性可靠性可靠性效率效率完整性完整性易使用性易使用性易维护性易维护性易测试性易测试性灵活性灵活性易移植性易移植性易复用性易复用性互用性互用性正确性正确性可靠性可靠性效率效率完整性完整性易使用性易
6、使用性易维护性易维护性易测试性易测试性灵灵活性易移植性易移植性易复用性易复用性互用性互用性直接相关直接相关反向相关反向相关无关无关图图 8-3 Perry 8-3 Perry 的质量要素之间关系的质量要素之间关系第12页/共193页138.2 8.2 软件测试软件测试 软件测试 它既令人兴奋,也令人烦脑;既令人羡慕不己,也令人望而却步;要想在预算内按时交付高质量的软件,测试是必不可少的。第13页/共193页148.2 8.2 软件测试软件测试1 软件测试概述软件测试概述1 程序错误分类程序错误分类1 软件测试的软件测试的V V模型模型1 软件测试的方法软件测试的方法1 软件的调试软件的调试 第
7、14页/共193页158.2.1 8.2.1 软件测试概述软件测试概述(1)(1)什么是软件测试?什么是软件测试?和测试接近的词和测试接近的词:过失过失 (Mistake):(Mistake):人为产生的不正确结果人为产生的不正确结果.故障故障 (Fault):(Fault):过失发展结果过失发展结果,可能导致失效可能导致失效.失效失效 (Failure):(Failure):故障引起的结果故障引起的结果.错误错误 (Error)(Error)、过错过错(MistakeMistake)称)称bugbug 不正确结果的全部不正确结果的全部.缺陷缺陷 (Defect):(Defect):错误的表现
8、结果错误的表现结果.事故事故 (Incident):(Incident):失效时可能呈现给用户失效时可能呈现给用户.测试测试(Test):(Test):测试要处理错误、缺陷、失效和事故测试要处理错误、缺陷、失效和事故.测试是采用测试是采用测试用例测试用例执行的软件活动执行的软件活动.第15页/共193页16(2)(2)软件测试的目的软件测试的目的 软件测试是对软件质量的度量,并代表了规约、软件测试是对软件质量的度量,并代表了规约、设计和编码的最终评审设计和编码的最终评审.为找出错误而运行程序或系统的过程为找出错误而运行程序或系统的过程.(Myers (Myers,19791979).测试是证明
9、错误的存在测试是证明错误的存在,而不是证明错误的不存而不是证明错误的不存在在 (Dijstra)Dijstra)确信程序做了它应该做的事确信程序做了它应该做的事 (Hetzel,1973).(Hetzel,1973).确认确认程序正确地实现了所要求的功能程序正确地实现了所要求的功能.软件测试概述软件测试概述第16页/共193页17(3)(3)软件测试的准则软件测试的准则#尽早地和不断地进行软件测试尽早地和不断地进行软件测试.#所有的测试应能追溯到用户需求所有的测试应能追溯到用户需求#测试用例测试用例:由输入数据和与之对应的预期输出由输入数据和与之对应的预期输出 结果组成结果组成;包括合理的输入
10、和不合理的输入条件包括合理的输入和不合理的输入条件.#测试从小规模开始测试从小规模开始,逐渐扩到大规模逐渐扩到大规模,#穷举测试不可能穷举测试不可能.#测试人员测试人员 ,Who Performs the Test?,Who Performs the Test?#独立测试组或独立测试组或 Software Test Engineer Software Test Engineer#使用或开发测试工具使用或开发测试工具.#需求确定后需求确定后,制定测试计划制定测试计划,并执行测试计划并执行测试计划.#测试中发现测试中发现8o%8o%错误错误,可能由程序的可能由程序的20%20%的组件的组件 造成的
11、造成的(Pareto(Pareto 原理原理 )软件测试概述软件测试概述第17页/共193页18(4)(4)软件的可测试性软件的可测试性u 程序被测试的难易程度程序被测试的难易程度u 一个特定测试集覆盖产品的充分程度一个特定测试集覆盖产品的充分程度 u 软件可测试性的软件可测试性的度量特征度量特征:a.a.可操作性可操作性 b.b.可观察性可观察性 c.c.可控制性可控制性 d d 可分解性可分解性 e.e.简单性简单性 f.f.稳定性稳定性 g.g.可理解性可理解性 软件测试概述软件测试概述第18页/共193页19(5)(5)软件测试的对象软件测试的对象 软件测试并不等于程序测试,应软件测试
12、并不等于程序测试,应 贯穿于软件定义与开发的各个阶段。贯穿于软件定义与开发的各个阶段。测试包括:测试包括:u 需求规格说明需求规格说明u 概要设计规格说明概要设计规格说明u 详细设计规格说明详细设计规格说明u 源程序源程序第19页/共193页20软件测试对象之间关系软件测试对象之间关系软件需求用户:要什么需求说明书分析员:可以提供什么设计说明书设计员:让软件怎么做源程序程序员:让计算机做什么运行结果计算机:程序运行得到的结果理解正确性理解正确性表达正确性表达正确性理解正确性理解正确性设计正确性设计正确性表达正确性表达正确性理解正确性理解正确性编码正确性编码正确性输入正确性输入正确性运行正确性运
13、行正确性相符吗相符吗?图图 8-48-4软件测试对象之间关系软件测试对象之间关系第20页/共193页218.2.2 8.2.2 软件错误分类软件错误分类 Beizer Beizer 给出的软件错误给出的软件错误:抽样大小抽样大小68770006877000条语句条语句(含注释)含注释)总错误数总错误数16209 16209 个错个错 每千条语句错误数每千条语句错误数2.362.36个错个错第21页/共193页22错误分类错误分类错误分类错误分类错误数错误数错误数错误数百分比(百分比(百分比(百分比(%)需求错误需求错误需求错误需求错误131713178.18.1需求不正确需求不正确需求不正确需
14、求不正确6496494.04.0需求逻辑错需求逻辑错需求逻辑错需求逻辑错1531530.90.9需求不完备需求不完备需求不完备需求不完备2242241.41.4需求文档描述错需求文档描述错需求文档描述错需求文档描述错 13130.10.1需求变更需求变更需求变更需求变更2782781.71.7表 8-1 需求错误错误分类第22页/共193页23错误分类错误分类错误分类错误分类错误数错误数错误数错误数百分比(百分比(百分比(百分比(%)功能和性能错误功能和性能错误功能和性能错误功能和性能错误2624262416.216.2功能和性能不正确功能和性能不正确功能和性能不正确功能和性能不正确45645
15、62.82.8性能不完整性能不完整性能不完整性能不完整2312311.41.4功能不完整功能不完整功能不完整功能不完整1931931.21.2适用范围错适用范围错适用范围错适用范围错7787784.84.8用户信息和诊断信息错用户信息和诊断信息错用户信息和诊断信息错用户信息和诊断信息错8578575.35.3异常处理错异常处理错异常处理错异常处理错79790.50.5其他功能错其他功能错其他功能错其他功能错30300.20.2表 8-2 功能和性能错误错误分类第23页/共193页24错误分类错误分类错误分类错误分类错误数错误数错误数错误数百分比(百分比(百分比(百分比(%)程序结构错误程序结构
16、错误程序结构错误程序结构错误4082408225.225.2控制流和控制顺序错误、控制流和控制顺序错误、控制流和控制顺序错误、控制流和控制顺序错误、变量、分支、循环等问题变量、分支、循环等问题变量、分支、循环等问题变量、分支、循环等问题2078207812.812.8处理器错处理器错处理器错处理器错2004200412.412.4表 8-3 程序结构错误错误分类第24页/共193页25错误分类错误分类错误分类错误分类错误数错误数错误数错误数百分比(百分比(百分比(百分比(%)数据错误数据错误数据错误数据错误3638363822.422.4数据类型定义数据类型定义数据类型定义数据类型定义,引用引
17、用引用引用及结构错及结构错及结构错及结构错1805180511.111.1数据存取及处理错数据存取及处理错数据存取及处理错数据存取及处理错1831183111.311.3其他数据错其他数据错其他数据错其他数据错(比较、比较、比较、比较、计算计算计算计算 、精度、零为、精度、零为、精度、零为、精度、零为除数除数除数除数)2 2表 8-4 数据错误错误分类第25页/共193页26错误分类错误分类错误分类错误分类错误数错误数错误数错误数百分比(百分比(百分比(百分比(%)编码与实现错误编码与实现错误编码与实现错误编码与实现错误 160116019.99.9编码与程序输入编码与程序输入编码与程序输入编
18、码与程序输入错误错误错误错误3323322.02.0违反编程标准或违反编程标准或违反编程标准或违反编程标准或风格风格风格风格3183182.02.0文档错文档错文档错文档错9609605.95.9其他实现错其他实现错其他实现错其他实现错1 10.00.0表 8-5 编码与实现错误错误分类错误分类第26页/共193页27错误分类错误分类错误分类错误分类错误数错误数错误数错误数百分比(百分比(百分比(百分比(%)软件集成错误软件集成错误软件集成错误软件集成错误145514559.09.0内部接口错内部接口错内部接口错内部接口错8598595.35.3外部接口,时间吞吐外部接口,时间吞吐外部接口,时
19、间吞吐外部接口,时间吞吐量不匹配量不匹配量不匹配量不匹配5185183.23.2其他集成错其他集成错其他集成错其他集成错78780.50.5系统及软件结构错系统及软件结构错系统及软件结构错系统及软件结构错2822821.71.7表 8-6 软件集成错误错误分类第27页/共193页28错误分类错误分类错误分类错误分类错误数错误数错误数错误数百分比(百分比(百分比(百分比(%)测试定义和执行错误测试定义和执行错误测试定义和执行错误测试定义和执行错误4474472.82.8测试设计错测试设计错测试设计错测试设计错11110.10.1测试执行错测试执行错测试执行错测试执行错3553552.22.2测试
20、文档错测试文档错测试文档错测试文档错11110.10.1测试用例不充分测试用例不充分测试用例不充分测试用例不充分64640.40.4其他测试错误其他测试错误其他测试错误其他测试错误6 60.00.0其他错误其他错误其他错误其他错误 (定时和协调定时和协调定时和协调定时和协调,性能性能性能性能,故障恢复故障恢复故障恢复故障恢复,不付合标准不付合标准不付合标准不付合标准)7637634.74.7表 8-7 测试定义和执行错误错误分类第28页/共193页298.2.3 8.2.3 软件测试的软件测试的V V模型模型模块规约模块规约系统结构与系统结构与子系统规约子系统规约用户用户需求分析规约确定系统设
21、计详细设计模块实现规约规约用户需求用户需求用户要求用户要求用户用户接受测试系统测试系统集成子系统集成与测试模块测试模块代码模块代码测试后的模块测试后的模块测试后子系统测试后子系统集成的系统集成的系统检验过的系统检验过的系统交付的系统交付的系统图图 8-5 8-5 软件软件测试的测试的V V模型模型第29页/共193页308.2.4 8.2.4 软件测试的分类软件测试的分类 (1)(1)按实施步骤分:按实施步骤分:(2)(2)按测试对象分:按测试对象分:单元测试单元测试 -软件单元测试软件单元测试 组装测试组装测试 -软件部件测试软件部件测试 确认测试确认测试 -软件配置项测试软件配置项测试 系
22、统测试系统测试 -系统测试系统测试(3)(3)按使用的测试技术分:按使用的测试技术分:静态测试:静态测试:动态测试:白盒测试、黑盒测试动态测试:白盒测试、黑盒测试第30页/共193页31软件测试的分类软件测试的分类 (4)按软件组装策略分按软件组装策略分:(5)按测试的完整性分:按测试的完整性分:-增量测试增量测试 -完全性和连续性测试完全性和连续性测试 自顶向下自顶向下 -图路径测试图路径测试 自底向上自底向上 -程序路径测试程序路径测试 三明治三明治 -穷举测试穷举测试 -非增量测试非增量测试第31页/共193页32软件测试的分类软件测试的分类 (6)(6)按项目测试条目分:按项目测试条目
23、分:-功能测试功能测试 -恢复性测试恢复性测试 -性能测试性能测试 -敏感性测试敏感性测试 -接口测试接口测试 -安装性测试安装性测试 -强度测试强度测试 -协调性测试协调性测试 -安全性测试安全性测试 -人机界面测人机界面测试试 -可靠性测试可靠性测试 第32页/共193页338.2.5 软件测试技术软件测试技术静态测试动态测试黑盒测试 白盒测试功能测试结构测试图图 8-6 8-6 软件测试软件测试技术分类技术分类第33页/共193页34静态测试静态测试(代码会审代码会审/走查走查/办公桌办公桌)数据引用错数据引用错(使用未赋值的变量使用未赋值的变量)数据说明错数据说明错(类型不符错类型不符
24、错)数据计算错数据计算错(混合类型混合类型,零为除数零为除数)数据比较错数据比较错(运算符、逻辑符不符运算符、逻辑符不符)控制流错控制流错(循环初值、次数不对循环初值、次数不对)接口错接口错 输入输出错输入输出错 文件错文件错检查:第34页/共193页35表 8-8 黑盒测试与白盒测试 黑盒黑盒(功能功能)测试测试白盒白盒(结构结构)测试测试 只利用规格说明标识只利用规格说明标识只利用规格说明标识只利用规格说明标识 测试用例测试用例测试用例测试用例 只利用程序源代码只利用程序源代码只利用程序源代码只利用程序源代码 标识测试用例标识测试用例标识测试用例标识测试用例 如果程序实现了未描如果程序实现
25、了未描如果程序实现了未描如果程序实现了未描 述的行为,功能测试无述的行为,功能测试无述的行为,功能测试无述的行为,功能测试无 法意识到。法意识到。法意识到。法意识到。如果已描述的行为如果已描述的行为如果已描述的行为如果已描述的行为未能实现,结构性测未能实现,结构性测未能实现,结构性测未能实现,结构性测试无法意识到试无法意识到试无法意识到试无法意识到 冗余度大,可能会有漏洞冗余度大,可能会有漏洞冗余度大,可能会有漏洞冗余度大,可能会有漏洞 具有覆盖率指标具有覆盖率指标具有覆盖率指标具有覆盖率指标动态测试第35页/共193页36 任何程序都可以看作是将输入定义域取任何程序都可以看作是将输入定义域取
26、值映射到输出值域的函数。将系统看成值映射到输出值域的函数。将系统看成“黑盒黑盒”。也称黑盒测试。也称黑盒测试软件InputOutput1)功能测试(Function Testing)图图 8-7 8-7 黑盒测试黑盒测试第36页/共193页37 证实每个实现了的功能是否符合证实每个实现了的功能是否符合需求规格说明书的要求。需求规格说明书的要求。黑盒测试要在软件的接口处进行.目的:第37页/共193页38黑盒测试可以发现如下错误黑盒测试可以发现如下错误:是否有不正确或遗漏的功能?是否有不正确或遗漏的功能?在接口上,输入能否被正确地接受?在接口上,输入能否被正确地接受?能否输出正确的结果?能否输出
27、正确的结果?是否有数据结构错误或外部信息是否有数据结构错误或外部信息 (例如数据文件例如数据文件)访问错误?访问错误?性能上是否能够满足要求?性能上是否能够满足要求?是否有初始化或终止性错误是否有初始化或终止性错误?第38页/共193页39 功能测试的方法:功能测试的方法:等价类分析等价类分析 边界值分析边界值分析 错误推测法错误推测法 因果图法因果图法 随机测试随机测试 基于决策树的测试基于决策树的测试第39页/共193页40(1 1)等价类)等价类(Equivalence(Equivalence partitioning)partitioning)把把输入的数据输入的数据按按有效有效的和的
28、和无效无效的的 划分为若干个等价类划分为若干个等价类.不考虑程序的内部结构,只依据不考虑程序的内部结构,只依据 程序的规格说明来设计测试用程序的规格说明来设计测试用例例.第40页/共193页41 等价类概念等价类概念等价类等价类:等价类是指某个输入域的子集合。等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露在该子集合中,各个输入数据对于揭露 程序中的错误都是等效的程序中的错误都是等效的.有效等价类:有效等价类:对于程序规格说明对于程序规格说明,是合理的是合理的,有意义的有意义的 输入数据构成的集合。输入数据构成的集合。无效等价类:无效等价类:是指对于程序规格说明是指对于程序规格
29、说明,是不合理的是不合理的,无无 意义的输入数据构成的集合意义的输入数据构成的集合.功功能能测测试试第41页/共193页42等价类划分的原则等价类划分的原则:按区间划分按区间划分 按数值划分按数值划分 按数值集合划分按数值集合划分 按限制条件或规则划分按限制条件或规则划分 功功能能测测试试第42页/共193页43 测试用例测试用例 =测试数据十期望结果测试数据十期望结果 测试结果测试结果 =测试数据十期望结果十实际结果测试数据十期望结果十实际结果 在确立了等价类之后,建立等价类表,在确立了等价类之后,建立等价类表,列出所有划分出的列出所有划分出的等价类数据十期望结果等价类数据十期望结果确立测试
30、用例功能测试等价类划分 .无效等价类无效等价类 有效等价类有效等价类 输入条件输入条件表 8-9 划分出的等价类第43页/共193页44 输入条件输入条件输入条件输入条件 有效等价类有效等价类有效等价类有效等价类 无效等价类无效等价类无效等价类无效等价类标识符个数标识符个数标识符个数标识符个数 1 1个个个个(1)(1)多个多个多个多个(2)(2)0 0个个个个 (3)(3)标识符字符数标识符字符数标识符字符数标识符字符数 1 18 8个个个个 (4)(4)0 0个个个个 ,88个个个个 ,8080个个个个 (5)(5)(6)(7)(6)(7)标识符组成标识符组成标识符组成标识符组成 字母字母
31、字母字母 (8)(8)数字数字数字数字 (9)(9)非字母数字非字母数字非字母数字非字母数字 字符字符字符字符 (10)(10)保留字保留字保留字保留字(11)(11)第一个标识符第一个标识符第一个标识符第一个标识符 字母字母字母字母 (12)(12)非字母非字母非字母非字母 (13)(13)标识符使用标识符使用标识符使用标识符使用先说明后使用先说明后使用先说明后使用先说明后使用 (14)(14)未说明已使用未说明已使用未说明已使用未说明已使用 (15)(15)表 8-10 标识符的等价类划分例 1 为标识符划分等价类第44页/共193页45测试用例:VAR X,T1234567:REAL;(
32、1,2,4,8,9,12,14)X=3.414;T1234567:=2.73 VAR :REAL;(3)VAR X,:REAL;(5)VAR T12345678:REAL;(6)VAR T123456789.:REAL(7)80 VAR T$:CHAR;(10)VAR GOTO:INTEGER;(11)VAR 2T:REAL;(13)VAR PAR:REAL;(15)第45页/共193页46 三角形问题的等价类测试用三角形问题的等价类测试用例例 对于三角形问题,可能由四种输出:对于三角形问题,可能由四种输出:三角形三角形 不等边三角形不等边三角形 等腰三角形等腰三角形 等边三角形等边三角形 根
33、据四种输出标识输出(值域)等价类。根据四种输出标识输出(值域)等价类。例 2第46页/共193页47表表8-11 8-11 三角形问题的等价类测试用例三角形问题的等价类测试用例测试用例ABC预期输出WN1555等边三角形WN2223等腰三角形WN3345不等边三角形WN4412不构成三角形第47页/共193页48 表表8-12 8-12 三角形问题的等价类测试用例三角形问题的等价类测试用例b 取值不在所允许的范围内abc取值不在所允许的范围内测试用例abc预期输出SR1a 取值不在所允许的范围内5c 取值不在所允许的范围内a b 取值不在所允许的范围内 b c 取值不在所允许的范围内a c 取
34、值不在所允许的范围内 SR2SR3SR4SR5SR6SR75-15-1-15-1-1-1-1-155555-1-1-1-1-1第48页/共193页49 NextDateNextDate函数等价类测试函数等价类测试 NextDate NextDate是一个三个变量函数:是一个三个变量函数:月、日、年月、日、年 这些变量的有效区间:这些变量的有效区间:M1=M1=月份:月份:1 1 月份月份 1212D1=D1=日期:日期:1 1 日期日期 3131Y1=Y1=年:年:18121812 年年 20122012例 3第49页/共193页50NextDate函数等价类测试函数等价类测试 无效等价类无效
35、等价类M1=M1=月份:月份:月份月份11212D1=D1=日期:日期日期:日期13131Y1=Y1=年:年年:年181220122012第50页/共193页51表 8-13 NextDate函数等价类测试表用例ID月份 日期年预期输出SR1-1 151912月份,日期不在有效值域SR26-11912日期不在有效值域1.31中SR36151811年,日期不在有效值域中SR4-1-11912月份,日期不在有效值域中SR56-11811年,日期不在有效值域中SR6-1151811年,月份,日期不在有效值域SR7-1-11811年,月份,日期不在有效值域第51页/共193页52确定等价类的原则小结(
36、确定等价类的原则小结(1 1)如果输入条件规定了取值范围,或者值的个数,如果输入条件规定了取值范围,或者值的个数,则可以确定一个有效等价类和两个无效等价类;则可以确定一个有效等价类和两个无效等价类;如果输入条件规定了输入值的集合,或者是规如果输入条件规定了输入值的集合,或者是规 定了定了“必须如何必须如何”的条件,则可以确立一个有的条件,则可以确立一个有 效等价类和一个无效等价类;效等价类和一个无效等价类;如果输入条件是一个布尔量,则可以确立一个如果输入条件是一个布尔量,则可以确立一个 有效等价类和一个无效等价类;有效等价类和一个无效等价类;第52页/共193页53确定等价类的原则小结(确定等
37、价类的原则小结(2 2)如果规定了输入数据必须遵守的规则,则可如果规定了输入数据必须遵守的规则,则可 以确立一个有效等价类(即遵守规则的数据)以确立一个有效等价类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的和若干无效等价类(从不同角度违反规则的 数据);数据);如果确知以划分的等价类中的各元素在程序如果确知以划分的等价类中的各元素在程序 中的处理方式不同,则应进一步划分成更小中的处理方式不同,则应进一步划分成更小 的等价类的等价类 第53页/共193页54选择测试用例的原则选择测试用例的原则:设计尽可能少的测试用例,覆盖设计尽可能少的测试用例,覆盖 所有的有效等价类所有的有效等价
38、类.针对每一个无效等价类,设计一针对每一个无效等价类,设计一 个测试用例来覆盖它个测试用例来覆盖它.等价类划分等价类划分第54页/共193页55(2)(2)边界值法边界值法(Boundary Value Analysis)(Boundary Value Analysis)把测试值选在等价类的边界上把测试值选在等价类的边界上.abcd错误可能出现在输入变量的极值附近。功功能能测测试试图图 8-8 8-8 边界值边界值测试测试法法第55页/共193页56边界值测试边界值测试abcd5 5个元素情况个元素情况:最小值最小值 略高于最小值略高于最小值 正常值正常值 略低于最大值略低于最大值 最大值最大
39、值 n n个变量个变量,有有4n+14n+1个测试用例个测试用例 图图 8-9 8-9 边界值测试法边界值测试法第56页/共193页57边界值健壮性测试边界值健壮性测试 对例外情况的测试对例外情况的测试abcd在在5 5个元素基础个元素基础上增如上增如:略高于最大值略高于最大值略低于最小值略低于最小值图图 8-10 8-10 边界值测试法边界值测试法第57页/共193页58例例 三角形问题三角形问题 输入输入:三角形的三条边三角形的三条边 a a、b b、c c 三个整数三个整数 输出输出:由这三条边确定的三角形类型:由这三条边确定的三角形类型:等边三角形、等腰三角形、等边三角形、等腰三角形、
40、不等边三角形或非三角形不等边三角形或非三角形.整数整数a a、b b、c c必须满足以下条件:必须满足以下条件:c1:1 a 200 ;c2:1 b 200 c3:1 c 200 ;c4:a b+c c5:b a+c ;c6:c a+b第58页/共193页59 如果输入值没有满足上述条件中的一个,如果输入值没有满足上述条件中的一个,则程序应该输出故障信息则程序应该输出故障信息 如果如果a a、b b、c c满足满足c1c1、c2c2、c3c3则给出以下则给出以下 四种相互排斥输出中的一个:四种相互排斥输出中的一个:如果三边相等,则程序输出是等边三角形;如果三边相等,则程序输出是等边三角形;如果
41、恰好由两边相等,则程序输出是等腰三角形;如果恰好由两边相等,则程序输出是等腰三角形;如果没有两边相等,则程序输出不等边三角形;如果没有两边相等,则程序输出不等边三角形;如果如果c4c4、c5c5、c6c6有一个条件不满足,则程序的有一个条件不满足,则程序的 输出是非三角形;输出是非三角形;第59页/共193页60三角形程序的具体实现(三角形程序的具体实现(1 1)Program triangle Structured programming version of simpler specificationDim a,b,c As IntegerDim IsATriangle As Boolea
42、nStep1:Get InputOutput(“Enter 3 integer which are side of a triangle”)Input(a,b,c)Output(“Side A is“,a)Output(“Side B is“,b)Output(“Side C is“,c)第60页/共193页61Step 2:Is A triangleIf(ab+c)AND(ba+c)AND(ca+b)Then IsATriangle=TRUEElse IsATriangle=FALESEndIf第61页/共193页62Step 3:Determine Triangle TypeIf IsAT
43、riangle Then If(a=b)AND(b=c)Then Output(“Equilateral”)Else If(a b)AND(b c)Then Output(“Scalene”)Else Output(“Isosceles”)EndIfEndIfElse output(“Not a Triangle”)EndIfEnd triangle第62页/共193页63三角形程序的具体实现(三角形程序的具体实现(2 2)Program triangle2 Structured programming version of improved specificationDim a,b,c As
44、 IntegerDim IsATriangle As BooleanStep1:Get InputDoOutput(“Enter 3 integer which are side of a triangle”)Input(a,b,c)c1=(1=a)AND(a=200)c2=(1=b)AND(b=200)c3=(1=c)AND(c=200)第63页/共193页64If NOT(c1)Then Output(“Value of a is not in the range of permitted values”)EndIfIf NOT(c2)Then Output(“Value of b is
45、not in the range of permitted values”)EndIfIf NOT(c3)Then Output(“Value of c is not in the range of permitted values”)EndIfUntil c1 AND c2 AND c3Output(“Side A is“,a)Output(“Side B is“,b)Output(“Side C is“,c)第64页/共193页65Step 2:Is A triangleIf(ab+c)AND(ba+c)AND(c1)and(b=0)then S1 else s2end例逻辑覆盖第83页/
46、共193页84(a1)(b=0)S1FTStartS2End图图 8-15 8-15 程序流程图程序流程图语句覆盖是最弱的覆盖。第84页/共193页85 (2)判定覆盖 被测程序中每一个分支至少被执行一次.(3)条件覆盖 被测程序判定语句中的每一个条件均按 “真”、“假”两种取值,至少被执行一次.(4)条件组合覆盖 判定和条件组合(对于每一个判定,要求 所有可能的条件取值的组合都必须取到).第85页/共193页86 覆盖覆盖覆盖覆盖 种类种类种类种类 满足条件满足条件满足条件满足条件 测试数据测试数据测试数据测试数据 期望结果期望结果期望结果期望结果 判定判定判定判定 覆盖覆盖覆盖覆盖n n
47、A1 A1,B=0B=0n n A1,B0 A1,B0或或或或 A1,B=0A1,B=0或或或或 A1,B0A1,B0n n A=2,B=0 A=2,B=0n n A=2,B=1 A=2,B=1或或或或 A=1,B=0A=1,B=0或或或或 A=1,B=1A=1,B=1n n 执行执行执行执行S1S1n n 执行执行执行执行S2S2 条件条件条件条件 覆盖覆盖覆盖覆盖n n A1 A1或或或或B=0B=0或或或或 A1A1或或或或B0B0n n A=2,B=0 A=2,B=0 A=1,B=1 A=1,B=1n n 执行执行执行执行S2S2条件组条件组条件组条件组合覆盖合覆盖合覆盖合覆盖n n
48、A1,B=0 A1,B=0n n A1,B0 A1,B0n n A1,B=0 A1,B=0n n A1,B0 A1,B0n n A=2,B=0 A=2,B=0n n A=2,B=1 A=2,B=1n n A=1,B=0 A=1,B=0n n A=1,B=1 A=1,B=1n n 执行执行执行执行S1S1n n 执行执行执行执行S2S2n n 执行执行执行执行S2S2n n 执行执行执行执行S2S2第86页/共193页87例例 流程图流程图L1L1(a ac ce e)L2L2(a ab bd d)L3L3(a ab be e)L4L4(a ac cd d)Start(a1)(b=0)X=X/a
49、FTabc(a=2)(X1)X=X+1FTdeEnd选择选择L1L1设计设计测试用例测试用例aa,b b,XX:22,0 0,44,22,0 0,3 3 图图 8-16 8-16 程序流程图程序流程图第87页/共193页88 判定覆盖判定覆盖 如果选择路径如果选择路径L L1 1和和L L2 2(或(或L L3 3和和L L4 4)可实现可实现 判定覆盖判定覆盖,测试用例为:测试用例为:a,b,X:2,0,4,2,0,3 a,b,X:2,0,4,2,0,3 覆盖覆盖L L1 1 a,b,X:1,1,1,1,1,1 a,b,X:1,1,1,1,1,1 覆盖覆盖L L2 2 a,b,X:2,1,1
50、,2,1,2 a,b,X:2,1,1,2,1,2 覆盖覆盖L L3 3 a,b,X:3,0,3,3,1,1 a,b,X:3,0,3,3,1,1 覆盖覆盖L L4 4第88页/共193页89条件覆盖条件覆盖表 8-14 条件覆盖表第89页/共193页90表 8-15 条件组合覆盖第90页/共193页91 (5)(5)路径覆盖测试路径覆盖测试 (Tom McCabe(Tom McCabe提出提出)设计足够的测试用例设计足够的测试用例,覆盖程序中所有可覆盖程序中所有可能的路径能的路径.表8-16 路径覆盖控制结构的测试第91页/共193页92 程序程序图符号图符号顺序语句顺序语句If If 语句语句