软件测试技术第二章白盒测试课件

上传人:文**** 文档编号:230731434 上传时间:2023-08-27 格式:PPTX 页数:115 大小:1.26MB
收藏 版权申诉 举报 下载
软件测试技术第二章白盒测试课件_第1页
第1页 / 共115页
软件测试技术第二章白盒测试课件_第2页
第2页 / 共115页
软件测试技术第二章白盒测试课件_第3页
第3页 / 共115页
资源描述:

《软件测试技术第二章白盒测试课件》由会员分享,可在线阅读,更多相关《软件测试技术第二章白盒测试课件(115页珍藏版)》请在装配图网上搜索。

1、软件测试技术软件测试技术 第第2 2章章白盒测试白盒测试1/116静态白盒测试主要包括静态白盒测试主要包括代码检查代码检查和和静态结构分析静态结构分析两种方两种方法法。动态动态白盒测试主要包括程序插桩、逻辑覆盖测试、基本白盒测试主要包括程序插桩、逻辑覆盖测试、基本路径测试、循环结构测试等路径测试、循环结构测试等。动态白盒测试方法动态白盒测试方法是白是白盒盒测试中发现软件缺陷的主要手段。其中,逻辑覆盖测试测试中发现软件缺陷的主要手段。其中,逻辑覆盖测试和基本路径测试方法是实际工作中最常用到的两种动态和基本路径测试方法是实际工作中最常用到的两种动态白盒测试技术,白盒测试技术,2.2.对于白盒测试的

2、基本认识对于白盒测试的基本认识2/116白盒测试简介白盒测试简介白盒测试一般用来分析程序的内部结构,因此有时也被称为基白盒测试一般用来分析程序的内部结构,因此有时也被称为基于程序的测试。白盒测试的前提条件是已知程序的内部工作过于程序的测试。白盒测试的前提条件是已知程序的内部工作过程,清楚其语句、变量状态、逻辑结构和执行路径等关键信息,程,清楚其语句、变量状态、逻辑结构和执行路径等关键信息,因此也被称为玻璃盒测试因此也被称为玻璃盒测试。白盒测试主要是根据程序内部的逻白盒测试主要是根据程序内部的逻辑结构和相关信息,检验程序中的各条通路是否都能够按设计辑结构和相关信息,检验程序中的各条通路是否都能够

3、按设计要求正确工作,从这一意义上来讲,白盒测试又常被称为结构要求正确工作,从这一意义上来讲,白盒测试又常被称为结构测试或逻辑驱动测试。测试或逻辑驱动测试。白盒测试针对的是程序的内部结构和运行白盒测试针对的是程序的内部结构和运行过过程。程。白盒测试重视测试覆盖率的度量,被看白盒测试重视测试覆盖率的度量,被看做是做是“基于覆盖的测试基于覆盖的测试”,要求对被测程序,要求对被测程序的结构能够做到一定程度的覆盖,通过不同的结构能够做到一定程度的覆盖,通过不同类型的覆盖准则来判断测试执行的充分性。类型的覆盖准则来判断测试执行的充分性。3/116白白盒测试的基本原则盒测试的基本原则保证程序模块中的所有独立

4、路径都至少被使用一次;保证程序模块中的所有独立路径都至少被使用一次;保证程序中的所有逻辑值都能测试保证程序中的所有逻辑值都能测试TrueTrue和和FalseFalse两种两种情况;情况;在循环的边界和运行的界限内执行循环体;在循环的边界和运行的界限内执行循环体;测试程序内部数据结构的有效性以及完成边界数据取测试程序内部数据结构的有效性以及完成边界数据取值情况下的测试。值情况下的测试。4/116穷举路径测试示例穷举路径测试示例5/116白盒测试的缺点白盒测试的缺点白盒测试方法试图穷举所有程序路径进行测试,这往往是不白盒测试方法试图穷举所有程序路径进行测试,这往往是不可能的可能的。穷举穷举路径测

5、试查不出违反设计规范的错误,路径测试查不出违反设计规范的错误,不能发现程序中不能发现程序中已实现但不是用户所需要的功能已实现但不是用户所需要的功能,不可能查出程序中因遗漏不可能查出程序中因遗漏路径而产生的错误路径而产生的错误,可能发现不了一些与数据相关的异常错可能发现不了一些与数据相关的异常错误误。尽管尽管白盒测试方法深入程序内部,针对程序细节的逻辑结构白盒测试方法深入程序内部,针对程序细节的逻辑结构进行测试,对代码的测试比较彻底,但仍然存在着一定的局进行测试,对代码的测试比较彻底,但仍然存在着一定的局限性限性。6/1162.2静态测试静态测试根据测试时是否运行源程序,白盒测试可以分为根据测试

6、时是否运行源程序,白盒测试可以分为静静态测试态测试和和动态测试动态测试。静态静态测试方法又主要分为代码检查和静态结构分析测试方法又主要分为代码检查和静态结构分析等等。静态静态测试就是不实际运行被测试的软件,而只是静测试就是不实际运行被测试的软件,而只是静态地检查程序代码、界面或文档中可能存在的错误态地检查程序代码、界面或文档中可能存在的错误的过程。的过程。7/1162.2.1代码检查法代码检查法代码检查法主要包括代码检查法主要包括桌面检查桌面检查、走查走查和和代码审查代码审查。主主要要检检查查代代码码的的规规范范性性、可可读读性性、结结构构的的合合理理性性、逻逻辑辑表表达的正确性达的正确性等内

7、容等内容。代代码码检检查查比比动动态态测测试试更更为为有有效效,能能快快速速发发现现30%70%的的逻逻辑设计和编码缺陷,应当辑设计和编码缺陷,应当在程序编译和动态测试之前进行在程序编译和动态测试之前进行。最不正式的最不正式的最正式的最正式的临时评审临时评审轮查轮查 走查走查互为评审互为评审同行评审同行评审 审查审查Random review,Pass-round,Walkthrough,Peer review,InspectionRandom review,Pass-round,Walkthrough,Peer review,Inspection8/116表表2-1桌面检查、走查和代码审查的

8、对比桌面检查、走查和代码审查的对比项目项目桌面检查桌面检查走查走查代码审查代码审查准备准备程序的规格说明、编码规范、错误列表、源代码参加人员事先阅读设计和源代码,准备代表性测试用例需求与设计文档、源代码、编码规范、缺陷检测表、会议计划和流程形式形式无非正式会议正式会议参加人参加人员员程序编写者本人开发组内部人员开发、测试和相关人员主要技主要技术方法术方法无逻辑运行测试用例缺陷检测表9/116表表2-1桌面检查、走查和代码审查的对比(续表)桌面检查、走查和代码审查的对比(续表)项目项目桌面检查桌面检查走查走查代码审查代码审查注意事项注意事项注释与编码规范限时、不当场修改代码限时、不当场修改代码生

9、成文档生成文档无静态分析错误报告结果报告目标目标无代码标准规范、无逻辑错误代码标准规范、无逻辑错误优点优点省时便于项目组成员交流,共同理解软件产品有计划的对软件产品进行编码质量控制缺点缺点不正式、依赖个人能力、效率低耗时耗时10/1161 1)桌面检查)桌面检查桌面检查是最不正式,也是最省时的静态测试桌面检查是最不正式,也是最省时的静态测试技术技术。桌面检查桌面检查就是程序员对自己的代码进行一次自就是程序员对自己的代码进行一次自我检查,对编码成果进行自我完善我检查,对编码成果进行自我完善。由于由于桌面检查没有任何约束,依赖程序员个人桌面检查没有任何约束,依赖程序员个人的经验和技术能力,因此对于

10、大多数人而言,的经验和技术能力,因此对于大多数人而言,检查效率很低。由编程者本人完成的桌面检查检查效率很低。由编程者本人完成的桌面检查明显违背了软件测试的独立性明显违背了软件测试的独立性原则原则。效果远远效果远远逊色于代码走查和代码审查。逊色于代码走查和代码审查。11/116桌面检查的主要内容:桌面检查的主要内容:变量和标号的交叉引用表检查。检查变量的定义变量和标号的交叉引用表检查。检查变量的定义和使用以及转向特定位置的标号。和使用以及转向特定位置的标号。子程序、宏、函数检查。子程序、宏、函数检查。等价性检查。检查全部等价变量类型的一致性。等价性检查。检查全部等价变量类型的一致性。常量检查。常

11、量检查。设计标准检查。检查程序是否违反设计标准。设计标准检查。检查程序是否违反设计标准。风格检查。风格检查。12/116控制流检查。控制流检查。选择、激活路径检查。检查每条控制流路径是选择、激活路径检查。检查每条控制流路径是否都能被程序激活,达到语句覆盖。否都能被程序激活,达到语句覆盖。规格符合性检查。是否符合程序规格说明以及规格符合性检查。是否符合程序规格说明以及编码规范。编码规范。补充文档检查。补充文档检查。13/1162 2)走查)走查代码走查的过程是非正式的,一般是在开发代码走查的过程是非正式的,一般是在开发组内部进行,通过一个代码走查小组,组内部进行,通过一个代码走查小组,以以会会议

12、的方式来检查代码议的方式来检查代码。代代码码走查有利于项目组人员共同理解项目所走查有利于项目组人员共同理解项目所涉及的业务信息和具体代码实现过程,交换涉及的业务信息和具体代码实现过程,交换代码编写思路,帮助开发人员找出程序错误代码编写思路,帮助开发人员找出程序错误和解决方法。和解决方法。14/116代代码码审审查查是是一一种种正正式式的的评评审审活活动动,通通过过正正式式会会议议的的方方式式进进行行,事事先先一一般般具具有有制制定定好好的的会会议议计计划划和和流流程程,会会议议中中应应用用预预先先定定义义好好的的标标准准和和检检查查技技术术检检查查程程序序和和文文档档,发发现现软软件件缺缺陷陷

13、,会会后后形形成成正正式式的的审审查查结结果果报告。报告。3)代码审查)代码审查主持人主持人作者记录员列席人员内审员内审员技术专业人员用户代表15/116代码审查是一个软件开发过程代码审查是一个软件开发过程中必不可少的环节。谷歌前资中必不可少的环节。谷歌前资深软件开发工程师深软件开发工程师MarkChu-Carroll博士认为,之所以让博士认为,之所以让Google的程序如此优秀的一的程序如此优秀的一个重要原因看起来很简单:代个重要原因看起来很简单:代码审查。在码审查。在Google,没有任,没有任何项目的程序源代码可以在没何项目的程序源代码可以在没有经过有效的代码审查前就提有经过有效的代码审

14、查前就提交到代码库中。交到代码库中。MarkChu-Carroll16/116代码审查的作用和注意事项:代码审查的作用和注意事项:因知道存在代码审查,编码者编写代码更为规范;因知道存在代码审查,编码者编写代码更为规范;代码审查能传播知识,使模块编写者之外的审查者代码审查能传播知识,使模块编写者之外的审查者也能熟悉程序的设计和架构;也能熟悉程序的设计和架构;确保程序作者自己写出的代码是正确的;确保程序作者自己写出的代码是正确的;不应过于匆忙的完成代码审查;不应过于匆忙的完成代码审查;需要遵循严格的编码规范。需要遵循严格的编码规范。17/1162.2.2 2.2.2 静态结构分析法静态结构分析法静

15、态结构分析法实际上是通过白盒测试工具辅助进行程序检查静态结构分析法实际上是通过白盒测试工具辅助进行程序检查的一种方法的一种方法。在在静静态态结结构构分分析析中中,测测试试人人员员通通过过测测试试工工具具分分析析程程序序的的系系统统结结构构、数数据据结结构构、数数据据接接口口、控控制制逻逻辑辑等等内内部部结结构构,生生成成函函数数调调用用关关系系图图、程程序序控控制制流流图图、内内部部文文件件调调用用关关系系图图、子子程程序序表表、宏宏和和函函数数参参数数表表等等各各类类图图表表,可可以以清清晰晰地地呈呈现现整整个个系系统统的的组组成成结结构构,方方便便阅阅读读和和理理解解。通通过过分分析析这这

16、些些图图表表,测测试试人人员员可可以以快快速和有效地发现程序中潜在的错误。速和有效地发现程序中潜在的错误。18/116表表2-2静态结构分析图表及其作用静态结构分析图表及其作用分类分类名称名称内容与作用内容与作用图图函数调用关系图列出所有函数,用连线表示调用关系,展示系统的结构;发现系统是否存在结构缺陷、区分函数的重要程度、确定测试覆盖级别;检查函数的调用关系是否正确;是否存在递归调用;函数的调用层次是否过深;检查是否存在孤立而未被调用的函数;确定函数调用频度,重点检查被频繁调用的函数。模块控制流图由结点和边组成,每个结点代表一条或多条语句,边表示控制流;能够直观地反映一个模块的内部逻辑结构。

17、19表表2-2静态结构分析图表及其静态结构分析图表及其作用(续表)作用(续表)分分类类名称名称内容与作用内容与作用表表标号交叉引用表列出所有模块中用到的标号;标号的属性,包括已说明、未说明、已使用、未使用;模块以外的全局标号、计算标号。变量交叉引用表展示所有变量的定义和引用情况;变量的属性,包括是否已说明、是否已使用、类型、是否属于公共变量、全局变量等。子程序(宏、函数)引用表列出所有子程序、宏和函数的属性,包括类型、是否已定义、是否已引用、引用次数、输入输出参数的数量、顺序和类型。等价表 列出在等价语句或等值语句中出现的全局变量和标号。常数表 列出所有数字和字符常数。20/116借助图表,可

18、以完成如下静态错误分析:数据类型和单位分析。数据类型和单位分析。引引用用分分析析。找找出出变变量量引引用用错错误误,例例如如:变变量量赋赋值值以以前被引用或赋值后未被引用。前被引用或赋值后未被引用。表表达达式式分分析析。发发现现表表达达式式中中不不正正确确地地使使用用括括号号、数数据下标越界等错误。据下标越界等错误。接接口口分分析析。检检查查模模块块之之间间接接口口的的一一致致性性和和模模块块与与外外部数据库之间接口的一致性。部数据库之间接口的一致性。212.3 2.3 程序插桩程序插桩定义定义:是在保证被测程序原有逻辑完整性的基础上在程序中插是在保证被测程序原有逻辑完整性的基础上在程序中插入

19、一些语句,这些语句被称为入一些语句,这些语句被称为“探针探针”、“探测器探测器”或或“探测探测点点”,其本质就是进行信息采集的代码段,其本质就是进行信息采集的代码段。测试人员常常借助程序插桩的方法来收集程序动态运行行为,测试人员常常借助程序插桩的方法来收集程序动态运行行为,一些与运行环境相关的程序行为只能通过程序插桩的方法来收一些与运行环境相关的程序行为只能通过程序插桩的方法来收集,静态程序分析无法完成这样的工作。通过程序插桩技术,集,静态程序分析无法完成这样的工作。通过程序插桩技术,能够获取各种程序信息,是对程序进行白盒测试的一种有效手能够获取各种程序信息,是对程序进行白盒测试的一种有效手段

20、。段。22图图2-3计算最大公约数函数的程序插桩过程计算最大公约数函数的程序插桩过程23图图2-3是一个计算两个整数的最大公约数函数的程序插桩示是一个计算两个整数的最大公约数函数的程序插桩示例,左边是函数源程序,右边是程序的流程图例,左边是函数源程序,右边是程序的流程图。虚线框代虚线框代表在源程序中插入的一些探针语句,用于记录语句执行的表在源程序中插入的一些探针语句,用于记录语句执行的次数,是一些计数器,可以用数组的方式实现次数,是一些计数器,可以用数组的方式实现。C(1)用于用于记录函数被调用的次数,记录函数被调用的次数,C(2)用于记录循环执行的次数,用于记录循环执行的次数,C(3)是函数

21、出口计数器,是函数出口计数器,C(4)C(5)是主要程序分支上的计是主要程序分支上的计数器。数器。24插插桩注意事项桩注意事项:(1)需要探测哪些)需要探测哪些信息信息:这需要根据具体的测试目标来决定需要根据具体的测试目标来决定。(2)在什么位置设置探测点)在什么位置设置探测点程序的第一个可执行语句之前,用于判断该程序是否被执行。程序的第一个可执行语句之前,用于判断该程序是否被执行。有标号的可执行语句之前。有标号的可执行语句之前。for、while、dountil等循环语句处。等循环语句处。if、then、else等条件分支语句处。等条件分支语句处。输入语句之后,用于检验输入数据的正确性。输入

22、语句之后,用于检验输入数据的正确性。输出语句之前,用于检验将要输出的数据是否正确。输出语句之前,用于检验将要输出的数据是否正确。25/116函数、过程等程序调用语句之后,用于判断调用结果是否函数、过程等程序调用语句之后,用于判断调用结果是否正确。正确。Return语句之前,判断程序是否正常返回。如果探针设置语句之前,判断程序是否正常返回。如果探针设置在在return语句之后,那么它将无法被执行。语句之后,那么它将无法被执行。(3)需要设置多少个探测点)需要设置多少个探测点一般情况下,在没有分支的程序段中只需要在首尾各设置一一般情况下,在没有分支的程序段中只需要在首尾各设置一个探测点,用于确定程

23、序执行时该段程序是否被覆盖个探测点,用于确定程序执行时该段程序是否被覆盖。如果。如果程序中有各种分支控制结构,如各种循环和条件判断分支结程序中有各种分支控制结构,如各种循环和条件判断分支结构,那么为了插入最少的探测点,需要针对程序的控制结构构,那么为了插入最少的探测点,需要针对程序的控制结构进行具体的分析。进行具体的分析。26/116(4)如何在程序的特定位置插入用于判断变量特性的)如何在程序的特定位置插入用于判断变量特性的语句语句程序插桩并不是一个独立的白盒测试方法,一般要和诸如覆程序插桩并不是一个独立的白盒测试方法,一般要和诸如覆盖测试等方法结合起来使用。在实现程序覆盖测试时,经常盖测试等

24、方法结合起来使用。在实现程序覆盖测试时,经常需要获得一些特定信息需要获得一些特定信息,要想获得这些信息,就需要在被测要想获得这些信息,就需要在被测程序中插入完成相应工作的代码,即运用代码插桩程序中插入完成相应工作的代码,即运用代码插桩技术技术。需要需要注意的是,代码插桩虽然不影响程序的逻辑结构和复杂注意的是,代码插桩虽然不影响程序的逻辑结构和复杂性,但是会破坏程序的时间特性性,但是会破坏程序的时间特性。因此,在用程序插桩辅助因此,在用程序插桩辅助完成一些性能监视测试工作时,有时需要考虑插桩代码对程完成一些性能监视测试工作时,有时需要考虑插桩代码对程序运行效率的影响。序运行效率的影响。27/11

25、6逻辑覆盖测试是一种常用的动态白盒测试方法,主要包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖。逻辑覆盖是基于程序的内部逻辑结构进行的测试,要求在设计测试用例时,对被测程序的逻辑结构有清晰的了解。2.4 2.4 逻辑覆盖测试逻辑覆盖测试28/116源程序源程序程序流程图程序流程图图图2-4逻辑覆盖测试被测程序及其流程图逻辑覆盖测试被测程序及其流程图29在逻辑覆盖测试中,决定程序分支走向的一个整体布尔型表在逻辑覆盖测试中,决定程序分支走向的一个整体布尔型表达式被称为一个判定,取值为达式被称为一个判定,取值为True或或False。一个判定不考虑。一个判定不考虑其内部是否

26、包含其内部是否包含“与与”或者或者“或或”等逻辑操作符。上述例程等逻辑操作符。上述例程中包含两个判定:中包含两个判定:“A1andB=0”,为方便表达记为,为方便表达记为P1;“A=2orX1”,记为,记为P2。上述例程中只有上述例程中只有3个变量,但是却包含个变量,但是却包含4个条件表达式:个条件表达式:“A1”,记为,记为C1;“B=0”,记为,记为C2;“A=2”,记为,记为C3;“X1”,记为,记为C4。302.4.1语句覆盖语句覆盖定义:定义:设计若干个测试用例,使被测程序中的每一条可执设计若干个测试用例,使被测程序中的每一条可执行语句行语句至少至少执行一次执行一次。注意注意事项:事

27、项:为了尽可能减少设计、实施和维护测试用例的成本,逻辑为了尽可能减少设计、实施和维护测试用例的成本,逻辑覆盖测试用例的数量应当越少越好,只要能够满足相应的覆盖测试用例的数量应当越少越好,只要能够满足相应的覆盖标准即可覆盖标准即可。语句覆盖是最弱的逻辑覆盖标准。运行测试用例(语句覆盖是最弱的逻辑覆盖标准。运行测试用例(A=2,B=0,X=3),虽然能够执行所有语句,但是不能覆盖所有),虽然能够执行所有语句,但是不能覆盖所有的判定分支的判定分支。因此,语句覆盖只针对程序中显式存在的语因此,语句覆盖只针对程序中显式存在的语句,而无法测试隐藏的条件和可能的逻辑分支。句,而无法测试隐藏的条件和可能的逻辑

28、分支。312.4.2判定覆盖判定覆盖判定覆盖又称为分支覆盖,是指设计若干个判定覆盖又称为分支覆盖,是指设计若干个测试用例,使被测程序中的每个判定的取真测试用例,使被测程序中的每个判定的取真分支和取假分支至少被执行一次,即每个判分支和取假分支至少被执行一次,即每个判定的真假值均被满足。定的真假值均被满足。32/116测试用例测试用例P1P2执行路径执行路径A=2,B=0,X=4TTa-c-b-e-dA=3,B=1,X=1FFa-b-d表表2-3判定覆盖判定覆盖测试用例测试用例对于上述被测程序,设计如表对于上述被测程序,设计如表2-3所示的判定覆盖测试用例,所示的判定覆盖测试用例,使程序执行路径使

29、程序执行路径“a-c-b-e-d”和和“a-b-d”。这样,判定。这样,判定P1和和P2的真假分支就都能被执行到。的真假分支就都能被执行到。33/116表表 2-4 判定覆盖测试用例判定覆盖测试用例测试用例测试用例P1P2执行路径执行路径A=3,B=0,X=1TFa-c-b-dA=2,B=1,X=3FTa-b-e-d设设计计如如表表2-4所所示示的的测测试试用用例例,使使程程序序执执行行路路径径“a-c-b-d”和和“a-b-e-d”。这这样样,判判定定P1和和P2的的真真假假分分支支也也同同样样都都能能被被执执行到。行到。34注意注意程序程序中包含两种类型的判定语句。一种是双值判定中包含两种

30、类型的判定语句。一种是双值判定语句,其取值或者是语句,其取值或者是True或者是或者是False。另。另一种是多值一种是多值判定判定语句。语句。因此,判定覆盖更一般的含义是设计测试用因此,判定覆盖更一般的含义是设计测试用例,使每一个分支例,使每一个分支获得获得每一种可能的结果每一种可能的结果。判定覆盖比语句覆盖具有更好的测试充分性判定覆盖比语句覆盖具有更好的测试充分性。由于可执由于可执行语句要不就在判定的真分支,要不就在假分支上。所行语句要不就在判定的真分支,要不就在假分支上。所以,只要满足了判定覆盖标准的测试用例就一定满足语以,只要满足了判定覆盖标准的测试用例就一定满足语句覆盖标准,反之则不

31、然句覆盖标准,反之则不然。判判定定覆覆盖盖的的测测试试充充分分性性仍仍然然很很弱弱,它它只只是是判判断断整整个个判判定定表表达达式式的的最最终终取取值值结结果果,而而不不考考虑虑表表达达式式中中每每个个条条件件的的取取值值情情况况,因因此此必必然然会会漏漏检检一一些些条条件件错错误误。判判定定表表达达式式往往往往由由多多个个条条件件组组合合而而成成,某某个个条条件件的的取取值值结结果果可可能能会会掩盖其它条件的取值结果情况。掩盖其它条件的取值结果情况。35/1162.4.3条件覆盖条件覆盖定定义义:条条件件覆覆盖盖是是指指,设设计计足足够够多多的的测测试试用用例例,使使每每个个判判定定中中的的

32、每每个个条条件件的的真真假假取取值值都都至至少少被被满满足足一一次次。上述程序中的4个条件C1C4中每一个都有真假两种取值可能,分别为:C1取真值(即A1)记为T1,取假值(即A1)记为F1;C2取真值(即B=0)记为T2,取假值(即B0)记为F2;C3取真值(即A=2)记为T3,取假值(即A2)记为F3;C4取真值(即X1)记为T4,取假值(即X1)记为F4。36/116表表2-5条件覆盖条件覆盖测试用例测试用例测试用例测试用例C1C2C3C4P1P2执行路径执行路径A=2,B=0,X=4T1T2T3T4TTa-c-b-e-dA=1,B=1,X=1F1F2F3F4FFa-b-d条条件件覆覆盖

33、盖一一般般比比判判定定覆覆盖盖要要强强,因因为为其其更更为为细细节节地地考考虑虑了了判判定定表表达达式式中中每每个个条条件件的的取取值值情情况况。需需要要注注意意的的是是,虽虽然然表表2-5的的测测试试用用例例也也同同时时满满足足了了判判定定覆覆盖盖标标准准,但但是是满满足足条条件件覆覆盖盖标标准准的的测测试试用用例例并并不不能能总总是是保保证证满满足足判判定定覆覆盖盖标标准准。这这是是由由于于,条条件件覆覆盖盖只只考考虑虑每每个个条条件件都都取取得得真真假假两两种种值值,而而不不考考虑虑所所有有的的判判定定结果取值情况。结果取值情况。37/116表表2-6条件覆盖条件覆盖测试用例测试用例测试

34、用例测试用例C1C2C3C4P1P2执行路径执行路径A=2,B=0,X=1T1T2T3F4TTa-c-b-e-dA=1,B=1,X=4F1F2F3T4FTa-b-e-d表表2-6的的测测试试用用例例满满足足了了条条件件覆覆盖盖标标准准,但但是是由由于于判判定定P2只只有有取取真真值值一一种种情情况况,其其False分分支支未未被被执执行行,因因此此不不满满足足判判定定覆覆盖标准盖标准。38/116定义:定义:由由判定覆盖和条件覆盖可知,条件覆盖不一定包含判定覆盖和条件覆盖可知,条件覆盖不一定包含判定覆盖,反之亦然。因此,就需要一种能将两者结合起判定覆盖,反之亦然。因此,就需要一种能将两者结合起

35、来的逻辑覆盖标准,这就是判定来的逻辑覆盖标准,这就是判定-条件覆盖,也称为分支条件覆盖,也称为分支-条件覆盖或条件判定组合覆盖条件覆盖或条件判定组合覆盖。基本思想:基本思想:设计足够多的测试用例,使被测程序中每个判设计足够多的测试用例,使被测程序中每个判定的每个条件的可能取值至少被执行一次,并且每个可能定的每个条件的可能取值至少被执行一次,并且每个可能的判定结果也至少被执行一次。的判定结果也至少被执行一次。2.4.4判定判定-条件条件覆盖覆盖39注意:注意:判定判定-条件覆盖条件覆盖并并不不一定一定能够查出逻辑表达式能够查出逻辑表达式中的所有错误中的所有错误。从测试充分性上来看,满足判定从测试

36、充分性上来看,满足判定-条条件覆盖就一定能够满足条件覆盖、判定覆盖和语句覆件覆盖就一定能够满足条件覆盖、判定覆盖和语句覆盖。盖。40定义:定义:条件组合覆盖是指,设计足够多的测试用例,使被条件组合覆盖是指,设计足够多的测试用例,使被测程序中每个判定的所有可能的条件取值组合至少被执行测程序中每个判定的所有可能的条件取值组合至少被执行一次一次。条件组合覆盖与条件覆盖的条件组合覆盖与条件覆盖的区别区别是是:仅仅要求每个条件都能要求每个条件都能有真假两种取值结果,而且要求这些结果的所有可能组合有真假两种取值结果,而且要求这些结果的所有可能组合都至少出现一次。都至少出现一次。2.4.5条件组合覆盖条件组

37、合覆盖41表表2-7条件取值组合条件取值组合情况情况组合编号组合编号1234条件取值组合条件取值组合T1,T2T1,F2F1,T2F1,F2表表2-7条件取值组合条件取值组合情况情况(续表)(续表)组合编号组合编号5678条件取值组合条件取值组合T3,T4T3,F4F3,T4F3,F442注意:注意:条件取值组合只针对同一个判定表达式内存在多个条件条件取值组合只针对同一个判定表达式内存在多个条件的情况,将这些条件的取值进行笛卡尔乘积组合;的情况,将这些条件的取值进行笛卡尔乘积组合;不同判定表达式内的条件取值之间无需组合;不同判定表达式内的条件取值之间无需组合;对于单条件的判定表达式,只需要满足

38、自己的所有取值对于单条件的判定表达式,只需要满足自己的所有取值即可即可。根据根据表表2-7的条件取值组合情况,可以设计表的条件取值组合情况,可以设计表2-8所示的条所示的条件组合覆盖测试用例。件组合覆盖测试用例。43表表2-8条件组合覆盖测试用例条件组合覆盖测试用例测试用例测试用例C1C2C3C4覆盖条件覆盖条件组合组合P1P2执行路径执行路径A=2,B=0,X=4T1T2T3T41,5TTa-c-b-e-dA=2,B=1,X=1T1F2T3F42,6FTa-b-e-dA=1,B=0,X=2F1T2F3T43,7FTa-b-e-dA=1,B=1,X=1F1F2F3F44,8FFa-b-d44条

39、件组合覆盖是一种很强的覆盖标准,能够有效地测试条件组合覆盖是一种很强的覆盖标准,能够有效地测试各种条件取值组合是否正确各种条件取值组合是否正确。但是,条件组合覆盖也线性地增加了测试用例的数量,但是,条件组合覆盖也线性地增加了测试用例的数量,提高了测试用例设计、实施和维护的成本提高了测试用例设计、实施和维护的成本。即便如此,条件组合覆盖仍然可能漏测部分程序可执行即便如此,条件组合覆盖仍然可能漏测部分程序可执行路径,测试还不够充分。路径,测试还不够充分。45例:被测程序中有例:被测程序中有4条可执行路径,分别为:条可执行路径,分别为:路径路径1:a-c-b-e-d;路径路径2:a-b-d;路径路径

40、3:a-c-b-d;路径路径4:a-b-e-d。而表而表2-8的测试用例的测试用例“执行路径执行路径”项中只有项中只有3条执行路径,条执行路径,路径路径“a-b-e-d”是重复的,漏测了可执行路径是重复的,漏测了可执行路径“a-c-b-d”。462.4.6 2.4.6 路径覆盖路径覆盖定义:定义:路径覆盖就是设计足够多的测试用例,路径覆盖就是设计足够多的测试用例,使被测程序的每条可执行路径都至少执行一次使被测程序的每条可执行路径都至少执行一次。例:例:被测程序中有被测程序中有4条可执行路径,因此表条可执行路径,因此表2-9所示路径覆盖测试用例由所示路径覆盖测试用例由4条测试用例构成。条测试用例

41、构成。47测试用例测试用例C1C2C3C4P1P2执行路径执行路径A=2,B=0,X=3T1T2T3T4TTa-c-b-e-dA=1,B=1,X=1F1F2F3F4FFa-b-dA=3,B=0,X=3T1T2F3F4TFa-c-b-dA=2,B=1,X=1T1F2T3F4FTa-b-e-d表表2-9路径覆盖测试用例路径覆盖测试用例48/116路径覆盖测试的特点:路径覆盖测试的特点:路径覆盖是经常使用的覆盖测试方法,相比路径覆盖是经常使用的覆盖测试方法,相比于其它逻辑覆盖方法,它的于其它逻辑覆盖方法,它的测试覆盖率最大测试覆盖率最大。路径覆盖路径覆盖不一定能保证条件组合不一定能保证条件组合覆盖覆

42、盖。例如例如上面的测试用例中,上面的测试用例中,“F1,T2”和和“F3,T4”两种条件取值组合情况就未能覆盖到两种条件取值组合情况就未能覆盖到。路径覆盖也路径覆盖也不一定能保证条件覆盖不一定能保证条件覆盖。由于路径覆盖必然经历所有判定的各个分支,由于路径覆盖必然经历所有判定的各个分支,因此路径覆盖因此路径覆盖能够完全包容判定覆盖和语句能够完全包容判定覆盖和语句覆盖覆盖。49/116注意:注意:随着代码复杂度的增加,程序可执行随着代码复杂度的增加,程序可执行路径的数量可能呈路径的数量可能呈指数级指数级增长增长。如果被测程如果被测程序中包含循环结构,随着循环嵌套层次和循序中包含循环结构,随着循环

43、嵌套层次和循环次数的增加,程序可执行路径数可能达到环次数的增加,程序可执行路径数可能达到天文数字天文数字。这种情况下,一般通过下一小节这种情况下,一般通过下一小节的的Z路径覆盖方法进行测试。路径覆盖方法进行测试。50/116小结小结通过以上通过以上6种逻辑覆盖测试方法的讲解我们会发现,没有种逻辑覆盖测试方法的讲解我们会发现,没有十全十美的覆盖测试方法,每一种方法都有其优点和局限十全十美的覆盖测试方法,每一种方法都有其优点和局限性性。在。在实际测试用例设计过程中,需要根据实际情况将几实际测试用例设计过程中,需要根据实际情况将几种逻辑覆盖测试方法配合使用,以达到最高的覆盖率。实种逻辑覆盖测试方法配

44、合使用,以达到最高的覆盖率。实际工作中,语句覆盖、判定覆盖和路径覆盖使用的最多,际工作中,语句覆盖、判定覆盖和路径覆盖使用的最多,一般有如下要求一般有如下要求:语句覆盖率:语句覆盖率:100%;判定覆盖率:判定覆盖率:85以上;以上;路径覆盖率:路径覆盖率:80%以上以上51基于对上述基于对上述6种逻辑覆盖方法测试充分性的分析,可以种逻辑覆盖方法测试充分性的分析,可以将它们之间的强弱关系用图将它们之间的强弱关系用图2-5表示表示。图图2-56种逻辑覆盖测试的强弱种逻辑覆盖测试的强弱关系关系522.4.7Z路径覆盖路径覆盖Z路径覆盖是一种简化循环意义下的路径覆盖测路径覆盖是一种简化循环意义下的路

45、径覆盖测试方法。试方法。Z路径覆盖舍掉了路径覆盖的一些次要因素,对路径覆盖舍掉了路径覆盖的一些次要因素,对循环机制进行了简化。通过限制循环的次数,最循环机制进行了简化。通过限制循环的次数,最大化的减少了路径的数量,使得覆盖这些有限的大化的减少了路径的数量,使得覆盖这些有限的路径成为可能。无论循环的形式和循环体实际执路径成为可能。无论循环的形式和循环体实际执行的次数如何,在行的次数如何,在Z路径覆盖测试中,路径覆盖测试中,只考虑执只考虑执行循环体一次和零次两种情况行循环体一次和零次两种情况,即只考虑执行时,即只考虑执行时进入循环体一次和跳过循环体这两种情况。进入循环体一次和跳过循环体这两种情况。

46、53图图2-6循环结构简化成选择循环结构简化成选择结构结构54图图2-6(a)和图)和图2-6(b)是两种典型的循环结构。前)是两种典型的循环结构。前者先做判断,循环体只考虑执行一次或不执行,其效者先做判断,循环体只考虑执行一次或不执行,其效果与图果与图2-6(c)是一样的。后者先执行循环体,也只)是一样的。后者先执行循环体,也只考虑执行一次,然后再经判断转出,其效果与图考虑执行一次,然后再经判断转出,其效果与图2-6(c)中只执行选择结构右分支一样)中只执行选择结构右分支一样。经过经过Z路径覆盖方法对循环结构进行简化后,程序中只路径覆盖方法对循环结构进行简化后,程序中只存在顺序结构和分支结构

47、,其所包含的路径数一般是存在顺序结构和分支结构,其所包含的路径数一般是有限的,因此可以做到对这些路径的覆盖。有限的,因此可以做到对这些路径的覆盖。55/1162.4.8路径覆盖最少测试用例数计算路径覆盖最少测试用例数计算通过程序盒图(也称为通过程序盒图(也称为N-S图)图)对对一种计算路径覆盖最一种计算路径覆盖最少测试用例数的方法少测试用例数的方法进行进行说明。说明。图图2-7由盒图表示的程序基本逻辑由盒图表示的程序基本逻辑结构结构56/116图图2-7中包含了中包含了3种程序的基本逻辑结构:顺序、选择和种程序的基本逻辑结构:顺序、选择和循环循环。一一个顺序结构无论语句多少,只有一条可执行路径

48、个顺序结构无论语句多少,只有一条可执行路径;一一个个If-Then-Else型选择结构包含两条可执行路径型选择结构包含两条可执行路径;一一个多分支个多分支Case型选择结构的可执行路径数量由它的型选择结构的可执行路径数量由它的分支数量决定分支数量决定。对于循环型结构来讲对于循环型结构来讲,我们只需要清楚包含选择结构,我们只需要清楚包含选择结构的程序的可执行路径数量计算方法即可。的程序的可执行路径数量计算方法即可。57图图2-8两个串行的选择结构两个串行的选择结构如图如图2-8所示,所示,程序程序包含包含4条可条可执行路径,分别经过语句(块)执行路径,分别经过语句(块)AC、AD、BC和和BD。

49、因此,。因此,最少的路径覆盖测试用例数为最少的路径覆盖测试用例数为4。实际上,这样的计算结果是实际上,这样的计算结果是根据根据“串行分层相乘串行分层相乘”的方法的方法计算出来的计算出来的。图图2-8的程序盒图可以分为上下两层,上层的的程序盒图可以分为上下两层,上层的P1选择结构包选择结构包含含2条路径,下层条路径,下层P2选择结构包含选择结构包含2条路径,将它们相乘就得条路径,将它们相乘就得到计算结果到计算结果4。对于盒图选择结构中并行的语句(块),如。对于盒图选择结构中并行的语句(块),如A和和B,C和和D,将它们的数量相加就可以得到该并行层次的路,将它们的数量相加就可以得到该并行层次的路径

50、数。径数。58图图2-9复杂结构程序盒图复杂结构程序盒图示例示例59图图2-9的的盒盒图图中中包包含含两两组组串串行行的的选选择择结结构构:P1与与P8,P2与与P6,分别以分层线,分别以分层线1和和2标识标识。P8所所包包含含的的嵌嵌套套选选择择结结构构路路径径数数为为3,将将它它与与P1所所包包含的路径数相乘即可得到最终路径数含的路径数相乘即可得到最终路径数。P2所所包包含含的的嵌嵌套套选选择择结结构构路路径径数数为为5,P6所所包包含含的的嵌嵌套套选选择择结结构构路路径径数数为为3,二二者者相相乘乘得得到到P1的的右右分分支支路路径数为径数为53=15。P1的的左左分分支支是是一一个个简

51、简单单路路径径,结结合合右右分分支支计计算算结结果果可可知,知,P1所包含的嵌套选择结构路径数为所包含的嵌套选择结构路径数为15+1=16。因因此此,结结合合P8路路径径数数计计算算结结果果可可知知,该该程程序序的的可可执执行行路径总数为路径总数为163=48。也也就就是是说说,最最少少需需要要48个个测测试试用用例例才才能能保保证证完完成成该该程程序的路径覆盖测试。序的路径覆盖测试。602.5 2.5 循环结构测试循环结构测试在上面一个小节中,我们讲解了几种主要的逻辑在上面一个小节中,我们讲解了几种主要的逻辑覆盖测试方法,这些方法主要是针对程序选择结覆盖测试方法,这些方法主要是针对程序选择结

52、构的测试方法。当碰到循环结构时,都进行了大构的测试方法。当碰到循环结构时,都进行了大幅度的简化,将循环结构转化为选择结构进行测幅度的简化,将循环结构转化为选择结构进行测试。但是,当程序中包含比较复杂的循环结构或试。但是,当程序中包含比较复杂的循环结构或者循环结构中的程序计算很容易出错时,就需要者循环结构中的程序计算很容易出错时,就需要对其进行更为全面和深入的测试。对其进行更为全面和深入的测试。61/116图图2-104种典型的循环结构种典型的循环结构形式形式62/116循环结构一般有如图循环结构一般有如图2-10所示的所示的4种形式:简单循种形式:简单循环、嵌套循环、串接循环和不规则循环。其中

53、,不环、嵌套循环、串接循环和不规则循环。其中,不规则循环无法进行测试,需要对循环结构进行重新规则循环无法进行测试,需要对循环结构进行重新设计,使之成为结构化的程序后再进行测试。设计,使之成为结构化的程序后再进行测试。63/116(1)简单循环)简单循环对简单循环进行测试时,需要考虑循环的次数以及对简单循环进行测试时,需要考虑循环的次数以及循环边界值和接近边界值的情况。假定循环的最大循环边界值和接近边界值的情况。假定循环的最大次数为次数为n,一般需要设计如下几种测试用例。,一般需要设计如下几种测试用例。零次循环:从循环入口直接跳到循环出口。零次循环:从循环入口直接跳到循环出口。一次循环:只有一次

54、通过循环,用于查找可能的一次循环:只有一次通过循环,用于查找可能的循环初始值错误。循环初始值错误。两次循环:两次通过循环两次循环:两次通过循环。m次循环:次循环:m次通过循环,其中次通过循环,其中mn,也就是在,也就是在n次循环中找一个中间值,用于查找在多次循环次循环中找一个中间值,用于查找在多次循环时才可能暴露的错误。时才可能暴露的错误。64n-1次循环:比最大循环次数少一次的循环。次循环:比最大循环次数少一次的循环。n次循环:用最大循环次数执行循环次循环:用最大循环次数执行循环。n+1次循环:比最大循环次数多一次通过循次循环:比最大循环次数多一次通过循环。环。测试中,我们还需要关注以下几个

55、问题:测试中,我们还需要关注以下几个问题:循环变量的初值是否正确。循环变量的初值是否正确。循环变量的最大值是否正确。循环变量的最大值是否正确。循环变量的增量是否正确。循环变量的增量是否正确。何时退出循环。何时退出循环。65/116intSample_Loop()inti=1;intSum=0;while(i=10)Sum=Sum+i;i=i+1;returnSum;例:给定程序示例的测试用例如表例:给定程序示例的测试用例如表2-10所示所示66测试内容测试内容测试用例测试用例备注备注整个跳过循环整个跳过循环i=110次通过循环次通过循环只有一次通过循环只有一次通过循环i=10两次通过循环两次通

56、过循环i=9m次通过循环,其中次通过循环,其中m0)56if(flag=0)78temp=count+100;9break;1011else1213if(flag=1)14temp=temp+10;15else16temp=temp+20;1718count=count-1;1920returntemp;2186/116上述程序实现当上述程序实现当flag=0时,返回时,返回count+100;当当flag=1时,返回时,返回count*10;flag是其它值时,是其它值时,返回返回count*20。下面按照基本路径测试法的。下面按照基本路径测试法的4个个步骤进行说明步骤进行说明。(1)画出上

57、述程序的控制流图)画出上述程序的控制流图87/116图图2-15程序流程图和控制流程序流程图和控制流图图88/116图中的数字是源程序中的行号,图中的数字是源程序中的行号,4、6、13是是判定结点。语句判定结点。语句3和和4顺序执行,合并为结点顺序执行,合并为结点4;语句;语句8和和9顺序执行,合并为结点顺序执行,合并为结点8。89/116(2)计算程序环路复杂度)计算程序环路复杂度由图由图2-15(b)的程序控制流图可以计算)的程序控制流图可以计算得出:得出:V(G)=图中区域数图中区域数=4。V(G)=E-N+2=10-8+2=4。V(G)=P+1=3+1=4。程序环路复杂度是程序环路复杂

58、度是4。因此,只要最多。因此,只要最多4个测个测试用例就可以达到基本路径覆盖。试用例就可以达到基本路径覆盖。90/116(3)确定独立路径集合)确定独立路径集合在程序控制流图中,从起始结点在程序控制流图中,从起始结点4到终止结点到终止结点20共有共有4条独立路径:条独立路径:4-204-6-8-204-6-13-14-18-4-204-6-13-16-18-4-20上面上面4条独立路径构成的集合已经包括了流图中条独立路径构成的集合已经包括了流图中所有的边。所有的边。91/116(4)设计测试用例)设计测试用例根据上面得到的根据上面得到的4条独立路径可以设计如表条独立路径可以设计如表2-11所示

59、的所示的4项测试用例。项测试用例。输入数据输入数据预期结果预期结果独立路径独立路径flag=0,或者是,或者是flag0的某一个值的某一个值temp=04-20count=1,flag=0temp=1014-6-8-20count=1,flag=1temp=104-6-13-14-18-4-20count=1,flag=2temp=204-6-13-16-18-4-20表表2-11基本路径基本路径测试用例测试用例92/116程序的环路复杂度表示的是最多的测试用例个程序的环路复杂度表示的是最多的测试用例个数,是测试用例数量的上界,实际用例数不一数,是测试用例数量的上界,实际用例数不一定要达到这个

60、上界定要达到这个上界。测试用例数量越简化,测试的充分性就越低测试用例数量越简化,测试的充分性就越低。需要根据实际情况来确定测试用例数量简化的需要根据实际情况来确定测试用例数量简化的程度。程度。注意注意:93/116图图2-16包含复合条件的程序包含复合条件的程序流程图流程图94/116图图2-16是是一一个个计计算算学学生生平平均均成成绩绩的的程程序序流流程程图图。该该程程序序最最多多可可以以计计算算50个个学学生生的的平平平平均均成成绩绩,以以-1作作为为成成绩绩输输入入结结束束标标志志。程程序序流流程程图图中中,i是是学学生生序序号号,n1是是有有效效成成绩绩数数量量,n2是是输输入入的的

61、成成绩绩数数量量,sum是是成成绩绩累累加加值值,Score(i)是是第第i个学生的成绩,个学生的成绩,Average是平均成绩。是平均成绩。95/116(1)画出程序的控制流图)画出程序的控制流图96/116(2)计算环路复杂度)计算环路复杂度V(G)=图中区域数图中区域数=6。V(G)=E-N+2=16-12+2=6。V(G)=P+1=5+1=6。(3)确定独立路径集合)确定独立路径集合可以确定以下可以确定以下6条独立路径:条独立路径:1-2-9-10-121-2-9-11-121-2-3-9-10-121-2-3-4-5-8-21-2-3-4-5-6-8-21-2-3-4-5-6-7-8

62、-297/116(4)设计测试用例)设计测试用例为为每每一一条条独独立立路路径径各各设设计计一一个个测测试试用用例例,驱驱动动被被测测程程序序沿沿着着该该路路径径至至少少执执行行一一次次。可可以以设设计计如如表表2-12所所示示的的6个个测试用例。测试用例。98/116输入数据输入数据预期结果预期结果独立路径独立路径Score(1)=60,Score(2)=-1n1=1,sum=60,Average=601-2-9-10-12Score(1)=-1Average=-1,其它变量为初值1-2-9-11-12输入多于输入多于50个有效分数个有效分数n1=50,正确的sum和Average值1-2-

63、3-9-10-12Score(1)=-5,Score(2)=70,Score(3)=-1n1=1,sum=70,Average=701-2-3-4-5-8-2Score(1)=110,Score(2)=80,Score(3)=-1n1=1,sum=80,Average=801-2-3-4-5-6-8-2Score(1)=80,Score(2)=90,Score(3)=-1n1=2,sum=170,Average=851-2-3-4-5-6-7-8-2表表2-12基本路径基本路径测试用例测试用例99/1162.6.4控制流图矩阵控制流图矩阵定义:定义:控制流图矩阵是将程序控制流图表达为矩阵的方式

64、控制流图矩阵是将程序控制流图表达为矩阵的方式。作用:作用:利用利用控制流图矩阵,可以构造辅助完成路径测试的工控制流图矩阵,可以构造辅助完成路径测试的工具,自动地确定独立路径集合,评估程序的控制结构。具,自动地确定独立路径集合,评估程序的控制结构。原理:原理:控制流控制流图矩阵实际上是一个有向图的图形矩阵,由行图矩阵实际上是一个有向图的图形矩阵,由行列数相同的方阵构成,行列数即为控制流图中的结点数,每列数相同的方阵构成,行列数即为控制流图中的结点数,每行和每列依次对应一个结点,矩阵元素反映的是结点间的连行和每列依次对应一个结点,矩阵元素反映的是结点间的连接关系。如果结点接关系。如果结点i到结点到

65、结点j之间有一条边,那么矩阵第之间有一条边,那么矩阵第i行第行第j列的元素非空。矩阵元素标记为权值列的元素非空。矩阵元素标记为权值1,表示存在一个连接;,表示存在一个连接;标记为空或权值标记为空或权值0,则表示不存在连接。,则表示不存在连接。100/116图图2-18控制流图矩阵控制流图矩阵例例如如,可可以以将将图图2-15(b)的的控控制制流流图图表表达达为为如如图图2-18所所示示的的控控制制流流图图矩矩阵阵。从从图图中中可可以以看看出出,凡凡是是一一行行中中有有大大于于等等于于两两个个元元素素的的结结点点就就一一定定是是判判定定结结点点。通通过过这这一一特特点点,可可以以方方便便地地确确

66、定定判判定定结结点点的的数数量量,然后计算环路复杂度。然后计算环路复杂度。101/116对于控制流图矩阵中的元素,除了权值之外,对于控制流图矩阵中的元素,除了权值之外,还可以赋予其它属性信息,用于完成对控制还可以赋予其它属性信息,用于完成对控制结构的一些评估工作。结构的一些评估工作。执行连接(边)的概率。执行连接(边)的概率。执行连接的频率执行连接的频率连接的处理时间。连接的处理时间。执行连接所需的计算资源(如内存等)。执行连接所需的计算资源(如内存等)。102/1162.6.5基本路径测试法的扩展应用基本路径测试法的扩展应用用用基基本本路路径径测测试试法法对对程程序序进进行行测测试试时时,路路径径是是指指函函数数代代码码的的某某个个分分支支。实实际际上上,将将软软件件系系统统的的某某个个流流程程也也看看做做是是路路径径的的话话,就就可可以以用用基基本本路路径径分分析析的的方方法法来来设设计计测测试试用用例例。此此时时,控控制制流流图图结结点点的的粒粒度度由由语语句句级级扩扩大大到到了了模模块块级级,而而边边反反映映了了软软件的系统流程。件的系统流程。103/116采用基本路径测试法测

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!