软件工程-第9章修改学习教案.pptx
会计学1软件工程软件工程(run jin n chn)-第第9章章修改修改第一页,共41页。第1页/共41页第二页,共41页。软件测试的目标是:软件测试的目标是:(1 1)测试是一个以查找程序错误为目的的程序执行过程)测试是一个以查找程序错误为目的的程序执行过程(2 2)一个好的测试用例能最大限度的找到尚未发现的错误)一个好的测试用例能最大限度的找到尚未发现的错误(3 3)一个成功的测试能找到那些)一个成功的测试能找到那些(nxi)(nxi)尚未发现的错误尚未发现的错误 测试的目标是发现错误,且好的测试发现错误的可测试的目标是发现错误,且好的测试发现错误的可能性较大。能性较大。第2页/共41页第三页,共41页。 任何工程化的产品都可以采用以下两种方式之一进行任何工程化的产品都可以采用以下两种方式之一进行测试:测试:(1)黑盒测试:了解已设计的产品所完成的指定功能,)黑盒测试:了解已设计的产品所完成的指定功能,可以执行测试以显示每个功能是可操作的,同时查找在可以执行测试以显示每个功能是可操作的,同时查找在每个功能中的错误;每个功能中的错误;(2)白盒测试:了解产品的内部运行)白盒测试:了解产品的内部运行(ynxng)情况,情况,可以执行测试以确保可以执行测试以确保“所有齿轮吻合所有齿轮吻合”即内部操作依即内部操作依据规格说明执行,而且对所有的内部构件进行了充分测据规格说明执行,而且对所有的内部构件进行了充分测试。试。第3页/共41页第四页,共41页。 软件的白盒测试是基于过程细节的封闭检查。通过提供检查软件的白盒测试是基于过程细节的封闭检查。通过提供检查特定条件集合和循环的测试用例,测试贯穿软件的逻辑路径和特定条件集合和循环的测试用例,测试贯穿软件的逻辑路径和构件间的协作。利用白盒测试方法,软件工程师设计的测试用构件间的协作。利用白盒测试方法,软件工程师设计的测试用例可以:例可以: (1 1)保证)保证(bozhng)(bozhng)一个模块中的所有独立路径至少被执一个模块中的所有独立路径至少被执行一次行一次 (2 2)对所有的逻辑值均需检测真和假)对所有的逻辑值均需检测真和假 (3 3)在上下边界及可操作的范围内执行所有的循环)在上下边界及可操作的范围内执行所有的循环 (4 4)检验内部数据结构以确保其有效性)检验内部数据结构以确保其有效性第4页/共41页第五页,共41页。 基本路径测试是一种白盒测试技术,使测试用例设计者产基本路径测试是一种白盒测试技术,使测试用例设计者产生一种过程设计的逻辑复杂性侧度,这种测度为执行路径的生一种过程设计的逻辑复杂性侧度,这种测度为执行路径的基本集的定义提供基本集的定义提供(tgng)(tgng)指导。执行该基本集所生成的指导。执行该基本集所生成的测试用例保证程序中的每一条语句至少执行一次。测试用例保证程序中的每一条语句至少执行一次。(1 1)流图表示:每种结构化的结构有相应的流图符号)流图表示:每种结构化的结构有相应的流图符号 SequenceIfWhileUntilCase图中,每个圆圈称为图中,每个圆圈称为(chn wi)一个流图结点,表示一个或多个无分支的一个流图结点,表示一个或多个无分支的PDL语句或源代码语句语句或源代码语句第5页/共41页第六页,共41页。 注意:注意:处理框序列和一个菱形判定框可以映射为单个结点。处理框序列和一个菱形判定框可以映射为单个结点。流图中的箭头流图中的箭头(jintu)(jintu)称为边或连接,表示控制流,类似于流程称为边或连接,表示控制流,类似于流程图中的箭头图中的箭头(jintu)(jintu)。一条边必须终止于一个结点(用圆圈表示)。一条边必须终止于一个结点(用圆圈表示)。由边和结点限定的区域称为域。当计算域时,将图形的外部作为由边和结点限定的区域称为域。当计算域时,将图形的外部作为一个域。一个域。有有2 2条或条或2 2条以上出边的结点为判定结点。条以上出边的结点为判定结点。若一个条件语句中存在一个或多个布尔运算符时,复合条件出现若一个条件语句中存在一个或多个布尔运算符时,复合条件出现,此时需要为复合条件中的每个条件创建不同的结点。,此时需要为复合条件中的每个条件创建不同的结点。第6页/共41页第七页,共41页。 例:流程图例:流程图第7页/共41页第八页,共41页。 例:对应例:对应(duyng)(duyng)的流图的流图第8页/共41页第九页,共41页。(2 2)独立程序路径)独立程序路径 独立路径是任何贯穿程序的、至少引入一组新的处理独立路径是任何贯穿程序的、至少引入一组新的处理语句或一个新的条件的路径。当按照流图进行描述时,独语句或一个新的条件的路径。当按照流图进行描述时,独立路径必须沿着至少一条边移动,这条边在定义该路径之立路径必须沿着至少一条边移动,这条边在定义该路径之前未被遍历。前未被遍历。 当用在基本路径测试方法的环境当用在基本路径测试方法的环境(hunjng)(hunjng)下,环下,环复杂性的值是用基本集合定义程序的独立路径数,它提供复杂性的值是用基本集合定义程序的独立路径数,它提供了保证所有语句被执行一次所需测试数量的上限。了保证所有语句被执行一次所需测试数量的上限。第9页/共41页第十页,共41页。(3 3)环复杂性的计算方法)环复杂性的计算方法 可以通过以下三种方式来计算:可以通过以下三种方式来计算: 环复杂性环复杂性 = = 域的数量域的数量 = = 内部内部(nib)(nib)区域区域 + + 外部区域外部区域 环复杂性环复杂性 = E = E N + 2 N + 2,其中,其中E E为流图的边为流图的边 数,数,NN为流图的结点数为流图的结点数 环复杂性环复杂性 = P + 1 = P + 1,其中,其中P P为包含在流图为包含在流图G G中中 的判定结点数的判定结点数 第10页/共41页第十一页,共41页。(4 4)导出测试用例)导出测试用例下列步骤可用于生成基本测试用例集:下列步骤可用于生成基本测试用例集: 以设计或源代码为基础以设计或源代码为基础(jch)(jch),画出相应的流程图,画出相应的流程图 根据流程图,画出相应的流图根据流程图,画出相应的流图 确定所得流图的环复杂性确定所得流图的环复杂性 确定独立路径的基本集合确定独立路径的基本集合 准备测试用例,强制执行基本集合中每条路径准备测试用例,强制执行基本集合中每条路径 第11页/共41页第十二页,共41页。第12页/共41页第十三页,共41页。 1 2 3 6 7 8 4 5 11 9 10 模块流程图模块流程图 第13页/共41页第十四页,共41页。 1 2 3 6 7 8 4 5 11 9 10 模块流程图模块流程图 2,3 6 7 8 9 10 4,5 11 程序流图程序流图 第14页/共41页第十五页,共41页。V(G) = 区域(qy)数 = 3 + 1 = 4V(G) = E - N + 2 = 11 9 + 2 = 4V(G) = P + 1 = 3 + 1 = 4 2,3 6 7 8 9 10 4,5 11 程序流图程序流图 第15页/共41页第十六页,共41页。第16页/共41页第十七页,共41页。第17页/共41页第十八页,共41页。第18页/共41页第十九页,共41页。1)画出与程序流程图对应的流图。画出与程序流程图对应的流图。2)根据所绘流图的区域的数量计算环形复杂度根据所绘流图的区域的数量计算环形复杂度。3)根据所绘流图的判定节点数计算环形复杂度根据所绘流图的判定节点数计算环形复杂度。4)确定基本确定基本(jbn)测试路径的个数及路径描述测试路径的个数及路径描述,并给出测试用例。,并给出测试用例。第19页/共41页第二十页,共41页。第20页/共41页第二十一页,共41页。1234567812345678第21页/共41页第二十二页,共41页。 软件的黑盒测试侧重于软件的功能需求。黑盒测试法与软件的黑盒测试侧重于软件的功能需求。黑盒测试法与白盒测试法不能互相替代白盒测试法不能互相替代, ,相反两者应互为补充相反两者应互为补充, ,在测试的不在测试的不同阶段为发现不同类型的错误而灵活选用。黑盒测试试图发同阶段为发现不同类型的错误而灵活选用。黑盒测试试图发现以下类型的错误:现以下类型的错误: (1 1)功能不正确或遗漏;)功能不正确或遗漏; (2 2)接口)接口(ji ku)(ji ku)错误;错误; (3 3)数据结构或外部数据库访问错误;)数据结构或外部数据库访问错误; (4 4)行为或性能错误;)行为或性能错误; (5 5)初始化和终止错误。)初始化和终止错误。第22页/共41页第二十三页,共41页。 等价划分是一种黑盒测试方法,它将程序的输入划分为若等价划分是一种黑盒测试方法,它将程序的输入划分为若干个数据类,从中生成测试用例。等价分类法的主要干个数据类,从中生成测试用例。等价分类法的主要(zhyo)(zhyo)思想是把程序的输入数据集合按输入条件划分为若思想是把程序的输入数据集合按输入条件划分为若干个等价类干个等价类, ,每一等价类相对于输入条件表示为一组有效或无每一等价类相对于输入条件表示为一组有效或无效的输入效的输入, ,然后为每一等价类设计一个测试用例然后为每一等价类设计一个测试用例, ,这样即可大大这样即可大大减小测试的次数又不丢失发现错误的机会。减小测试的次数又不丢失发现错误的机会。 通常情况下,输入条件可能为一个特定值、或一个数据域通常情况下,输入条件可能为一个特定值、或一个数据域、或一组相关的值或一个布尔条件,可以根据下述指导原则、或一组相关的值或一个布尔条件,可以根据下述指导原则定义等价类:定义等价类: 第23页/共41页第二十四页,共41页。(1 1)若输入条件指定一个)若输入条件指定一个(y )(y )范围,则可定义一个范围,则可定义一个(y )(y )有效(输入值落在此范围内)和两个无效的等价类有效(输入值落在此范围内)和两个无效的等价类(大于最大值的输入和小于最小值的输入);(大于最大值的输入和小于最小值的输入);(2 2)若输入条件需要特定的值,则可定义一个)若输入条件需要特定的值,则可定义一个(y )(y )有有效和两个无效的等价类;效和两个无效的等价类;(3 3)如果能为输入条件指定一个)如果能为输入条件指定一个(y )(y )集合集合, ,则可划分出则可划分出一个一个(y )(y )有效等价类有效等价类( (此集合此集合) )和一个和一个(y )(y )无效等无效等价类价类( (此集合的补集此集合的补集); ); (4 4)如果能为输入条件指定一个)如果能为输入条件指定一个(y )(y )布尔量布尔量, ,则可划分则可划分出一个出一个(y )(y )有效等价类有效等价类( (此布尔量此布尔量) )和一个和一个(y )(y )无无效布尔量效布尔量( (此布尔量之非此布尔量之非) )。 第24页/共41页第二十五页,共41页。 大多数错误都发生在输入的边界值上。为此大多数错误都发生在输入的边界值上。为此,专门引入边界值分析专门引入边界值分析(Boundary Value Analysis)技术技术,旨在选择测试用例旨在选择测试用例,强迫程序在边界值强迫程序在边界值上执行。上执行。 BVA技术是对等价分类技术的补充技术是对等价分类技术的补充(bchng),即在一个等价类即在一个等价类中不是任选一个元素作为此等价类的代表进行测试中不是任选一个元素作为此等价类的代表进行测试,而是选择此等价类边而是选择此等价类边界上的值。采用界上的值。采用BVA技术设计测试用例与等价分类法有许多相似之处技术设计测试用例与等价分类法有许多相似之处: 第25页/共41页第二十六页,共41页。(1 1)如果输入条件指定为)如果输入条件指定为aa,b,b,那么那么(n me)(n me)值值a a、值、值b b、略、略大于大于a a、略小于、略小于b b的值应分别作为测试用例的值应分别作为测试用例; ; (2 2)如果输入条件指定为一组值,则其中的最大值和最小)如果输入条件指定为一组值,则其中的最大值和最小值,以及略大于最小值和略小于最大值的值应分别作为测试值,以及略大于最小值和略小于最大值的值应分别作为测试用例;用例;(3 3)应用规则()应用规则(1 1)、()、(2 2)于输出条件;)于输出条件;(4 4)如果内部数据结构是有界的)如果内部数据结构是有界的( (例如例如, ,某数组有某数组有100100个元素个元素), ),那么那么(n me)(n me)应设计测试数据,使之能检查该数据结构的边应设计测试数据,使之能检查该数据结构的边界。界。第26页/共41页第二十七页,共41页。9.3.3软件测试步骤(bzhu)第27页/共41页第二十八页,共41页。软件测试的步骤软件测试的步骤(bzhu)(bzhu): 单元测试单元测试集成测试集成测试确认测试确认测试系统测试系统测试第28页/共41页第二十九页,共41页。(1 1) 单元测试的内容单元测试的内容(nirng)(nirng) 模块接口模块接口 局部数据结构局部数据结构 重要的执行路径重要的执行路径 边界条件边界条件 错误处理路径错误处理路径 单元测试侧重于软件单元测试侧重于软件(run jin)设设计的计的最小单元即软件最小单元即软件(run jin)构件或模构件或模块的验块的验证工作。证工作。第29页/共41页第三十页,共41页。第30页/共41页第三十一页,共41页。接口接口局部数据结构局部数据结构边界条件边界条件独立路径独立路径错误处理路径错误处理路径第31页/共41页第三十二页,共41页。 一旦完成所有模块的单元测试后,要进行集成测试。一旦完成所有模块的单元测试后,要进行集成测试。集成测试是构造软件体系结构的系统化技术,其目标是集成测试是构造软件体系结构的系统化技术,其目标是利用已通过单元测试的构件建立设计中描述的程序结构。利用已通过单元测试的构件建立设计中描述的程序结构。此时此时(c sh)(c sh),需要考虑一些问题,如:,需要考虑一些问题,如: 一个模块的功能是否影响另一个模块?一个模块的功能是否影响另一个模块? 各个子功能组合起来后是否达到预期要求的父功能?各个子功能组合起来后是否达到预期要求的父功能? 全局数据结构时候有问题?全局数据结构时候有问题? 单个模块的误差累计起来是否会达到不能接受的程度?单个模块的误差累计起来是否会达到不能接受的程度? 第32页/共41页第三十三页,共41页。第33页/共41页第三十四页,共41页。第34页/共41页第三十五页,共41页。第35页/共41页第三十六页,共41页。 确认测试始于集成测试的结束。测试集中于用户可见的动作和用户可识别的系统输出。要完成的任务如下:(1) 确认测试: 验证软件的功能、性能及其他特性符合(fh)软件需求规格说明(2) 配置评审:确保软件配置元素已正确开发、编目,且具有支持软件生命周期支持阶段的必要细节(3)Alpha测试和Beta测试第36页/共41页第三十七页,共41页。 软件只是基于计算机的大系统的一部分。最终,软件要与其它(qt)系统成分相结合,并执行一系列的集成测试和确认测试。 (1)恢复测试 (2)安全测试 (3)压力测试 (4)性能测试第37页/共41页第三十八页,共41页。 测试的任务是发现错误,而调试的任务是诊断(zhndun)和改正程序中的错误。下图表示测试和调试的交互过程:第38页/共41页第三十九页,共41页。1.测试文档测试文档是对将要进行的软件测试及测试结果的描述。测试文档实际上是贯彻于整个软件开发的过程中。测试文档的编制必须(bx)保证一定的质量和规范。第39页/共41页第四十页,共41页。2.测试文档的类型根据测试文件所起的作用不同分为两类:测试计划和测试分析报告。(1)测试计划:详细规定了测试的要求和内容,它的编写一般从需求分析阶段开始,到软件设计阶段结束时完成,涉及到软件的需求和软件的设计。(2)测试分析报告:经过测试证实了软件具有(jyu)的功能以及它的缺陷和限制,并给出评价的结论性意见。第40页/共41页第四十一页,共41页。