第8章软件测试样式与用例设计_第1页
第8章软件测试样式与用例设计_第2页
第8章软件测试样式与用例设计_第3页
第8章软件测试样式与用例设计_第4页
第8章软件测试样式与用例设计_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

测试样式与测试用例可复用的测试用例模式测试用例设计8软件测试样式与测试用例测试样式与测试用例可复用的测试用例模式测试用例设计8软件测试样式与测试用例测试样式与测试用例测试样式测试样式是对特定的、重复出现的软件测试问题提供的一个通解,它包括决定样式应用环境的上下问(即:周境),以及相关因素组成的部件。测试用例测试用例是定义测试实现及其环境、测试输入、测试条件以及为一个特定目标所开发的预期结果的集合。3测试样式与测试用例可复用的测试用例模式测试用例设计8软件测试样式与测试用例ByZhangQifei可复用的测试用例模式可复用的测试样式可复用的测试样式是对可复用的软件测试问题提供的一个通解,它包括决定样式应用的周境,以及相关的因素组成的部件。5可复用的测试用例模式可复用测试用例模式在通用测试用例属性的基础上,增加可复用性,如接口描述、功能粒度、复用频率和版本信息等,以利用已有测试用例资产来支持用例的复用。6可复用的测试用例模式在具体实现时,测试用例在可复用的测试用例库中是以树形结构方式组织的,从所属测试类型,领域到所属功能层次展开,以方便测试用例的检索。7可复用的测试用例模式测试用例构件

测试用例构件依据可复用测试用例定义设计的一个封装的、能独立完成某个或某组测试功能的、且具有显性的可交付使用的测试用例。

测试用例构件采用四元组可免分类描述模型,可复用的测试用例构件={测试目的、测试类型、被测试域、测试方法},共四个主刻面组成,其下各有若干个子刻面,每个刻面及子刻面描述的信息由上面的BNF范式给出。8可复用的测试用例模式测试用例设计原则基于测试需求可追踪的原则。基于测试方法的原则。基于测试充分性和效率的原则。基于测试执行的可重复性原则。测试用例设计考虑的因素测试用例的可追踪性测试初始化要求评价测试结果的准则9可复用的测试用例模式测试用例的设计步骤设计的用例应满足测试准出条件,对于测试覆盖类方法,应按照覆盖具体要求设计用例,对于其他类型的测试种类,应该按照具体的测试方法要求进行用例设计。测试用例步骤如下10测试样式与测试用例可复用的测试用例模式测试用例设计8软件测试样式与测试用例12黑盒测试黑盒测试的概念等价类划分法边界条件法决策表法因果图法黑盒测试的其他方法13黑盒测试的基本概念黑盒测试是从一种从软件外部对软件实施的测试,也称功能测试或基于规格说明的测试或数据驱动的测试。基本观点:任何程序都可以看作是从输入定义域到输出值域的映射,将被测程序看作一个打不开的黑盒,黑盒里面的内容(实现)是完全不知道的,只知道软件要做什么。因无法看到盒子中的内容,所以不知道软件是如何实现的,也不关心黑盒里面的结构,只关心软件的输入数据和输出结果。14黑盒测试发现的缺陷类型黑盒测试发现软件的外部行为错误功能错误或遗漏界面错误外部数据库访问错误性能错误初始化和终止错误……15黑盒测试技术根据选择测试用例的方式不同划分,黑盒测试技术主要有:功能分解法等价类划分法边界条件法决策表法因果图法正交实验法场景法错误猜测法……16等价类划分法等价类划分法测试技术是依据软件系统输入集合、输出集合或操作集合实现功能的相同性,对其进行子集划分,然后从每个子集选取典型的具有代表性的数据作为测试用例的测试用例设计方法。等价类划分法设计测试用例的意义在于把可能的测试用例集缩减到可控制且仍足以测试软件的较小范围内。等价类别或者等价区间是指测试相同目标或者暴露相同软件缺陷的一组测试。在寻找等价区间时,想办法把软件的相似输入、输出、操作分成组。这些组是等价区间。17等价类划分方法到目前为止没有划分高质量等价类的标准方法,不同的功能说明可能使用不同的方法。不同的等价类得到的测试用例质量不同。常用的等价类划分原则(1)按区间划分(2)按数值划分(3)按数值集合划分(4)按限制条件或规则划分(5)细分等价类18等价类划分法示例三角形问题的等价类测试

三角形问题是软件测试文献中使用广泛的一个例子。

输入三个整数a、b和c分别作为三角形的3条边,通过程序判断由这3条边构成的三角形类型是:等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角形)。根据输入域进行等价类划分,从哪些方面考虑?三个数整数19等价类划分测试用例设计在设计测试用例时应同时考虑有效等价类和无效等价类测试用例的设计。根据等价类表设计测试用例,具体步骤如下:(1)为每个等价类规定一个唯一的编号。(2)设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到测试用例覆盖了所有的有效等价类。(3)设计一个新的测试用例,使其覆盖并且只覆盖一个还没有被覆盖的无效等价类。重复这一步,直至测试用例覆盖了所有的无效等价类。20输入条件等价类编号有效等价类等价类编号无效等价类三个整数,取值范围在1~1001三个数4只有一条边5只有两条边6多于三条边2整数7一边为非整数8两边为非整数9三边为非整数31≤a≤1001≤b≤1001≤c≤10010一边为011两边为012三边为013一边小于014两边小于015三边小于016一边大于10017两边大于10018三边大于100三角形问题的等价类表测试用例怎么设计?等价类划分法示例21三角形问题按照输出条件,将输出域划分等价类R1={<a,b,c>:边为a,b,c的等边三角形}R2={<a,b,c>:边为a,b,c的等腰三角形}R3={<a,b,c>:边为a,b,c的一般三角形}R4={<a,b,c>:边a,b,c不能形成三角形}对应测试用例测试用例测试用例abc预期输出Test1555等边三角形Test2223等腰三角形Test3345一般三角形Test4412非三角形等价类划分法例22一些特殊情况的处理一些特殊情况默认值空值无不同的软件对这些情况的处理可能是不一样的,采用等价类划分设计测试的时候一般要把它们作为单独的等价类。23边界条件法(边界值法)边界值测试的基本原理:大量的软件测试实践表明,故障往往出现在定义域或值域的边界上,而不是在其内部。为检测边界附近的处理专门设计测试用例,通常都会取得很好的测试效果。在等价类划分基础上进行边界值分析测试的基本思想是,选取正好等于、刚刚大于或刚刚小于等价类边界的值作为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。24边界条件边界是一些特殊情况。程序在处理大量中间数值时都是正确,但是在边界处可能出现错误。边界条件就是软件计划的操作界限所在的边缘条件。一些可能与边界有关的数据类型有:数值,速度,字符,地址,位置,尺寸,数量等。考虑这些数据类型的下述特征: 第一个/最后一个,最小值/最大值,开始/完成,超过/在内,空/满,最短/最长,最慢/最快,最早/最迟,最高/最低,相邻/最远等。如果在程序中的数据结构有指定的边界,那么选择这个数据结构边界上的值作为测试用例。分析规格说明,找出其它可能的边界条件。25常见的边界值对16-bit的整数而言32767和-32768是边界屏幕上光标在最左上、最右下位置报表的第一行和最后一行数组元素的第一个和最后一个循环的第0次、第1次和倒数第2次、最后一次……26边界条件法(边界值法)边界条件分析测试

边界值分析利用被测试域变量的最小值(min),稍大于最小值(min+),域内任意值(nom),稍小于最大值(max-),最大值(max)来设计测试用例。即通过使所有变量取正常值,只使一个变量分别取最小值,略大于最小值、略小于最大值和最大值。27函数y=f(x1,x2)

输入变量的取值范围分别为:x1

∈[a,b],

x2∈[c,d]。边界条件法(边界值法)abcdX2X1边界条件坐标28函数y=f(x1,x2)

输入变量的取值范围分别为:x1

∈[a,b],

x2∈[c,d]。边界条件法(边界值法)abcdX2X1(一般)边界值29边界条件法(边界值法)示例加法器程序功能描述计算两个1~100之间整数的和。设计测试用例对于加法器程序,根据输入要求可将输入空间划分为三个等价类,即1个有效等价类(1~100之间),两个无效等价类(<1,>100)。但这种等价类划分不是很完善,我们只考虑了输入数据的取值范围,而没有考虑输入数据的类型,我们认为输入应为整数,但用户输入什么都有可能。30加法器问题的边界条件法设计的测试用例测试用例输入数据预期输出加数1加数2和Test115051Test225052Test39950149Test410050150Test550151Test650252Test75099149Test850100150Test9050提示“请输入1~100间的整数”Test10500提示“请输入1~100间的整数”Test1110150提示“请输入1~100间的整数”31加法器问题的边界条件法设计的测试用例测试用例输入数据预期输出加数1加数2和Test1250101提示“请输入1~100间的整数”Test130.250提示“请输入1~100间的整数”Test14500.2提示“请输入1~100间的整数”Test15A50提示“请输入1~100间的整数”Test1650A提示“请输入1~100间的整数”Test17@50提示“请输入1~100间的整数”Test1850@提示“请输入1~100间的整数”Test19空格50提示“请输入1~100间的整数”Test2050空格提示“请输入1~100间的整数”Test2150提示“请输入1~100间的整数”Test2250提示“请输入1~100间的整数”32决策表法决策表是分析和表达多逻辑条件下执行不同操作情况的工具。优点能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。在所有功能测试方法中,基于决策表的测试方法是最严格、最具有逻辑性的黑盒测试方法。

软件开发中,某些操作的实施依赖于多个逻辑条件的组合,即针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合处理这类问题。if…then…elseif…then……else…then(判定表法)33规则

决策表通常由条件桩、条件项、动作桩和动作项4部分组成。任何一个条件组合的特定取值及其相应要执行的操作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则!问题的条件的列表列出条件所有可能的取值列出满足条件时系统可能产生的动作的列表在条件项的各组取值情况下应采取的动作决策表法条件桩条件项动作桩动作项34决策表法设计测试用例的步骤建立决策表的步骤:(1)列出所有的条件桩和动作桩。(2)确定规则的个数。(3)填入条件项。(4)填入动作项,得到初始决策表。(5)简化决策表,合并相似规则(相同动作)。根据简化决策表的规则设计测试用例,每一条规则对应一个测试用例。35决策表法设计测试用例示例三角形问题。三个整数a、b、c,分别作为三角形的三条边,判断由此三条边构成的三角形类型为等边三角形、等腰三角形、一般三角形(包括直角三角形)或非三角形。

分析:三角形问题设计测试用例条件C1:a,b,c构成一个三角形?C2:a=b?C3:b=c?C4:a=c?动作A1:非三角形A2:一般三角形A3:等腰三角形A4:等边三角形36决策表法设计测试用例示例步骤如下:列出所有条件桩和动作桩。确定规则的个数。 三角形问题的决策表有4个条件,每个条件可以取两个值(真值和假值),所以应该有24=16种规则。填写条件项。填写动作项,从而得到初始决策表。简化决策表。合并相似规则后得到问题的简化决策表。设计测试用例。三角形问题设计测试用例37决策表法设计测试用例示例测试用例abc预期输出TestCase11044非三角形TestCase2444等边三角形TestCase3???不可能TestCase4???不可能TestCase5445等腰三角形TestCase6???不可能TestCase7544等腰三角形TestCase8454等腰三角形TestCase9345一般三角形根据简化决策表,可设计测试用例三角形问题设计测试用例38决策表法当测试逻辑时,决策表是一个非常好的选择

If-then-else逻辑很突出条件和规则的顺序不影响执行哪些操作输入变量之间存在逻辑关系涉及输入变量子集的计算输入与输出之间存在因果关系很高的圈复杂度为了降低测试用例个数,可以使用扩展项决策表决策表并不是专用于设计测试用例的方法,它同样可以应用于其他方面,例如需求分析决策表的设计一次不一定成功,迭代会有所帮助39等价类划分法和边界值分析方法都是着重考虑输入条件,如果程序输入之间没有什么联系,采用等价类划分和边界值分析是一种比较有效的方法。但如果输入之间有关系,例如,约束关系、组合关系,这种关系用等价类划分和边界值分析是很难描述的,测试效果难以保障,因此必须考虑使用一种适合于描述对于多种条件的组合,产生多个相应动作的测试方法,因果图正是在此背景下提出的。因果图法就是一种利用图解法分析输入的各种组合情况,生成决策表,从而设计测试用例的方法,它适合于检查程序输入条件的各种情况的组合。因果图法40在因果图中使用4种逻辑符号分别表示4种因果关系,如下图所示。用直线连接左右节点,其中左边节点表示输入状态(或称原因),右边节点表示输出状态(或称结果)。输入节点和输出接点都可取值0或1,0表示某状态不出现,1表示某状态出现。若a是1,则b也是1若a是1,则b是0若a、b全是1,则c为1;a、b有一个是0,则c是0。可以有多个输入!若a、b、c有一个是1,则d为1。可以有多个输入!因果图法41因果图的基本图形符号恒等:若原因出现,则结果出现;若原因不出现,则结果也不出现。非(~):若原因出现,则结果不出现;若原因不出现,则结果出现。

或(∨):若几个原因中有1个出现,则结果出现;若几个原因都不出现,则结果不出现。与(∧):若几个原因都出现,结果才出现。若其中有1个原因不出现,则结果不出现。42因果图的约束符号E(互斥):表示a、b两个原因不会同时成立,两个中最多有一个可能成立。I(包含):表示a、b、c这3个原因中至少有一个必须成立。O(惟一):表示a和b当中必须有一个,且仅有一个成立。R(要求):表示当a出现时,b必须也出现。a出现时不可能b不出现。M(屏蔽):表示当a是1时,b必须是0。而当a为0时,b的值不定。43(1)确定软件规格中的原因和结果。 分析规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)确定原因和结果之间的逻辑关系。

分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。(3)确定因果图中的各个约束。 由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为决策表。(5)根据决策表设计测试用例。因果图法设计测试用例步骤44因果图法设计测试用例示例有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”和“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。

使用因果图法设计测试用例。45因果图法设计测试用例示例46因果图法设计测试用例示例47因果图法根据需求规格说明书,分析因果关系。有助于用一个系统的方法选择出高效的测试用例集。额外的好处,就是可以指出规格说明的不完整性和不明确之处。因果图是一种形式语言,实际上是一种数字逻辑电路,但没有使用标准的电子学符号,而是使用了稍微简单点的符号。48白盒测试白盒测试技术静态白盒法路径覆盖法基本路径法白盒测试的其他方法49白盒测试技术白盒测试的定义

白盒测试是基于代码的针对被测对象内部是如何进行工作的测试,通过程序代码或者通过开发工具找出软件的缺陷,也称作结构测试或逻辑驱动测试。白盒测试的目的

检测软件程序内部结构,程序书写是否规范、是否按照项目需求规格说明正常运行。白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。是基于覆盖的测试技术!覆盖全部代码、分支、路径、条件

50为什么进行白盒测试程序自身存在缺陷逻辑错误(特别是备选流的逻辑)笔误(设计正确,实施时出现错误)……51白盒测试的实施步骤测试计划阶段根据需求说明书,制定测试进度计划。测试设计阶段依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。测试执行阶段输入测试用例,得到测试结果。测试总结阶段对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。52白盒测试方法采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的:保证一个模块中的所有独立路径至少被测试一次。所有逻辑值均需测试真(true)和假(false)两种情况。在上下边界及可操作范围内运行所有循环。检查程序的内部数据结构,保证其结构的有效性。白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用测试用例设计方法有:逻辑覆盖法(逻辑驱动测试)基本路径测试方法53白盒测试技术重要说明 即使每条路径都测试过了,仍然可能存在错误。 原因在于:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。穷举路径测试不可能查出程序因遗漏路径而出错。穷举路径测试发现不了一些与数据相关的错误。多数质量机构把分支覆盖准则作为测试覆盖的最低可接受级别。54白盒测试技术白盒测试技术静态方法(静态分析)

检查软件的表示和描述是否一致,有没有冲突或歧义 代码检查、静态结构分析,可能借助某些工具实现 静态分析能够有效地发现30%~70%的逻辑设计和编码错误

定性分析软件质量动态方法

基于各种覆盖准则方法

……55静态白盒方法的四个要素确定问题 静态白盒测试的目的是找出软件的问题,全部的批评应该直指代码或设计,而不是其设计实现者。参与者之间不应该相互指责,应该把自我意识、个人情绪和敏感丢在一边。遵守规则 静态白盒测试要遵守一套固定的规则,如哪些内容要做评价等。其重要性在于参与者了解自己的角色、目标是什么。有助于使审查进展更加顺利。充分准备 每一个参与者都尽力为审查做准备。根据审查的类型,参与者可能扮演不同的角色。他们需要了解自己的责任和义务,并积极参与审查。在审查过程中找出的问题大部分是在准备期间发现的,而不是实际审查期间。编写报告 审查小组必须做出审查结果的书面总结报告,并使报告便于开发小组的成员使用。56常见的控制流图的基本控制结构57不可能进行完全的白盒测试左图是某程序的流程图,假设循环10次,请计算一下有多少条程序执行通路?假设由图中得到的所有路径都是可执行路径,执行一次循环大约需要10微秒(奔腾41.7G)。如果循环次数为10的话,遍历图中所有路径需要多长时间?结论是:需要14秒左右的时间如果循环次数为20次,100次时,结果又如何?结论是:循环20次,需要约4072小时,循环100次则大约需要6.79*1047年58路径覆盖法白盒测试是基于代码的针对被测对象内部是如何进行工作的测试。白盒测试法检查程序内部逻辑结构,常用的基本技术是覆盖率分析。覆盖全部代码、分支、路径、条件路径覆盖法即设计出足够的测试用例来完成对被测试程序可执行路径进行全方位的执行覆盖。主要包括逻辑路径覆盖和物理路径覆盖的两种方法。59路径覆盖法逻辑路径覆盖考察对程序逻辑的覆盖程度,主要针对程序中由于判定条件所产生的逻辑分支结构进行测试。

语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖物理路径覆盖是从图论角度来测试所有可执行的物理路径。逻辑路径测试与物理路径测试不能相互替代。60语句路径覆盖语句路径覆盖是一个比较弱的逻辑路径覆盖标准。它的涵义是指通过选择足够的测试用例,使得运行这些测试用例时,被测程序的每个语句至少被执行一次。61TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce测试用例输入预期输出被测路径CASE1x=4,y=2,z=0x=3sacbed62语句路径覆盖【优点】可以很直观地从源代码得到测试用例,无须细分每条判定表达式。【缺点】由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。语句覆盖通常是实际测试过程中所要达到的最基本的逻辑路径覆盖度量标准。63判定路径覆盖判定路径覆盖又称为分支路径覆盖。它是指通过设计足够的测试用例,使得程序中的每一个判定至少都获得一次“真值”和“假值”,或者说使得程序中的每一个分支都至少通过一次。判定路径覆盖比语句路径覆盖的标准稍强一些。64TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce测试用例输入预期输出被测路径CASE2x=1,y=3,z=0x=1/3sacbdCASE3x=3,y=2,z=1X=4sabeda真,b假a假,b真y=3,x=4,z=0a真,b真y=3,x=0,z=1a假,b假65判定路径覆盖【优点】判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。【缺点】往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。66条件路径覆盖条件路径覆盖的涵义是指,对于每个判定中所包含的若干个条件,应设计足够多的测试用例,使得判定中的每个条件都至少取到一次“真值”和“假值”的机会。也就是说,判定中的每个条件的所有可能结果至少出现一次。67TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce测试用例输入预期输出被测路径CASE4x=0,y=2,z=0x=1sacbedCASE5x=2,y=1,z=1x=3sabedy>1,y<=1z==0,z!=0y==2,y!=2x>1,x<=1aC1:T,FaC2:T,FbC1:T,FbC2:T,FaC1

T,aC2

T,bC1

T,

bC2

FaC1

F,aC2

F,bC1

F,

bC2

T68条件路径覆盖【优点】增加了对条件判定情况的测试,增加了测试路径。【缺点】条件覆盖不一定包含判定覆盖。例如,刚才设计的用例就没有覆盖判断b的N分支。条件覆盖只能保证每个条件至少有一次为“真”和“假”,而不考虑所有的判定结果。69条件组合路径覆盖条件组合路径覆盖是指,通过设计足够多的测试用例,使得运行这些测试用例时,每个判定中条件结果的所有可能组合至少出现一次。70TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce①y>1,z==0②y>1,z!=0③y<=1,z==0④y<=1,z!=0⑤y==2,x>1⑥y==2,x<=1⑦y!=2,x>1⑧y!=2,x<=1测试用例输入预期输出被测路径CASE8x=4,y=2,z=0x=3sacbedCASE9x=1,y=2,z=1x=2sabedCASE10x=2,y=1,z=0x=3sabedCASE11x=1,y=1,z=1x=1sabd①和⑤②和⑥③和⑦④和⑧a真b真a假b真a假b真a假b假aC1:T,aC2:TaC1:T,aC2:FaC1:F,aC2:TaC1:F,aC2:FbC1:T,bC2:TbC1:T,bC2:FbC1:F,bC2:TbC1:F,bC2:F71条件组合路径覆盖【优点】条件组合覆盖准则满足语句覆盖、判定覆盖、条件覆盖和判定/条件覆盖准则。【缺点】线性地增加了测试用例的数量。条件组合覆盖并不能覆盖程序中的每一条路径。示例中的“a真b假”未覆盖!72逻辑路径覆盖条件组合覆盖判定/条件覆盖判定覆盖条件覆盖语句覆盖73修正的条件/判定路径覆盖修正的条件/判定覆盖方法要求在一个程序中每一种输入输出至少得出现一次,每个程序的判定到所有可能的结果至少转换一次;在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变。是条件/判定覆盖的完善和条件组合覆盖的精简实现条件/判定覆盖中未考虑到的各种条件组合情况,又减少了条件组合覆盖产生的测试用例的数目当每个判定条件比较多的时候,即对于那些每个判定存在3个或3个以上的条件的情况下,修正的条件/判定能够大幅减少测试用例的数目。74物理路径覆盖条件组合覆盖并不能覆盖程序中的每一条路径。物理路径覆盖是指,通过设计足够多的测试用例,使得运行这些测试用例时,程序的每条可能执行的物理路径都至少经过一次(如果程序中有环路,则要求每条环路至少经过一次)。75TdbasFF入口返回(y>1)&&(z==0)(y==2)||(x>1)x=x/yx=x+1Tce测试用例输入预期输出被测路径CASE8x=4,y=2,z=0x=3sacbedCASE9x=1,y=2,z=1x=2sabedCASE12x=1,y=3,z=0x=1/3sacbdCASE11x=1,y=1,z=1x=1sabd①和⑤②和⑥①和⑧④和⑧a真b真a假b真a真b假a假b假①y>1,z==0②y>1,z!=0③y<=1,z==0④y<=1,z!=0⑤y==2,x>1⑥y==2,x<=1⑦y!=2,x>1⑧y!=2,x<=1aC1:T,aC2:TaC1:T,aC2:FaC1:F,aC2:TaC1:F,aC2:FbC1:T,bC2:TbC1:T,bC2:FbC1:F,bC2:TbC1:F,bC2:F76语句路径覆盖 被测程序的每个语句至少被执行一次。判定路径覆盖(分支路径覆盖) 程序中的每一个判定至少都获得一次“真值”和“假值”,或者说使得程序中的每一个分支都至少通过一次。条件路径覆盖 判定中的每个条件都至少取到一次“真值”和“假值”。判定/条件路径覆盖 判定中的每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结果也至少出现一次。条件组合路径覆盖 每个判定中条件结果的所有可能组合至少出现一次。修正的条件/判定路径覆盖 在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变。物理路径覆盖 程序的每条可能执行的物理路径都至少经过一次(如果程序中有环路,则要求每条环路至少经过一次)。77内容提要白盒测试技术静态白盒法路径覆盖法基本路径法白盒测试的其他方法软件缺陷分析78基本路径法即便一个不复杂的程序,特别是有循环存在的情况下,其路径的组合都可能是一个天文数字!要进行完全测试是不可能的。在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即达到了语句覆盖。这种测试方法就是通常所说的基本路径测试方法。

79基本路径法基本路径本质上是从程序入口到出口的一些通路。之所以称其为基本路径,原因在于可以通过对基本路径进行连接或者重复操作得到程序中的其它路径。程序中的循环体只执行零次和一次,就成为基本路径测试。设计出的测试用例要保证在测试中程序的每一条可执行语句至少执行一次。基本路径法是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

80基本路径法基本路径测试方法是在控制流图的基础上,通过分析控制结构的环路复杂度,导出执行路径的基本集,再从该基本集设计测试用例。基本路径测试方法包括以下4个步骤: (1)画出程序的控制流图。 (2)计算程序的环路复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 (3)导出基本路径集,确定程序的独立路径。 (4)根据(3)中的独立路径,设计测试用例的输入数据和预期输出。81示例所示程序流程图描述了最多输入50个学生成绩(以–1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。其中,score存放学生成绩的值,n2存放输入的学生成绩个数,n1存放输入成绩中有效成绩的个数,sum存放成绩总和,average存放平均值。开始

i=1,n1=n2=0,sum=0score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1

输出n1,sum和averageFFFTTT12和345和6789101112

输入一个成绩score[i]82导出控制流图123456789111012A1A2A3A4A5A6开始

i=1,n1=n2=0,sum=0score[i]<>-1ANDn2<50n2=n2+1n1=n1+1,sum=sum+score[i]score[i]>0ANDscore[i]<100i=i+1n1>0average=sum/n1average=–1

输出n1,sum和averageFFFTTT12和345和6789101112

输入一个成绩score[i]83确定环路复杂性度量方法1 V(G)=6(个区域)方法2

V(G)=E–N+2=16–12+2=6其中E为流图中的边数,N为结点数;方法3V(G)=P+1=5+1=6其中P为判

温馨提示

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

评论

0/150

提交评论