测试用例设计方法

上传人:e****s 文档编号:243745470 上传时间:2024-09-30 格式:PPT 页数:124 大小:1.59MB
返回 下载 相关 举报
测试用例设计方法_第1页
第1页 / 共124页
测试用例设计方法_第2页
第2页 / 共124页
测试用例设计方法_第3页
第3页 / 共124页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,测试用例设计方法,本章大纲,测试用例的质量标准,黑盒测试,白盒测试,测试技巧,自动化测试技术,实用测试技术总结,三角形问题,输入三个不超过200的整数,这三个值分别表示三角形三条边的,长度,请判断这个三角形是等边三角形,还是等腰三角形还是一,般的三角形并打印相应的结果,NextData问题,NextDate月,日,年是三个变量的函数。函数返回输入日期,的下一个日期。变量月份,日期和年都是整数值,且满足下面的,条件:1月份=12,1=日期=31, 1812=年=2021,示 例,佣金问题,前亚利桑那州境内的一位步枪销售商销售密苏里州制造商制造的步枪机,lock、枪托stock和枪管barrel。枪机卖45美金、枪托卖30美金、,枪管卖25美金。销售商每月至少要售出一支完整的步枪,且生产限额是大多数,销售商在一个月内可销售70个枪机,80个枪托和90个枪管。每访问一个镇子之,后,销售商都给密苏里州步枪制造商发出电报,说明在那个镇子中售出的枪机、,枪托和枪管数量。到了月末,销售商要发出一封简短的电报,通知-1个枪机被收,出,表示不再发送电报。此时,步枪制造商就得出当月的销售情况,并计算,销售商的佣金如下:销售额不到含1000美元的局部为10%,1000不含,1800含美元的局部为 15%,超过1800美元的局部为20%。佣金程序生成月份,销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金,示 例,雨刷系统,挡风玻璃的雨刷系统由三个局部组成:控制杆lever、雨刷,wiper、刻度盘dial。控制杆可以处于关、间歇、低速和高,速四挡,当控制杆处于关时,雨刷不摆动;当控制杆处于间歇时,,如果刻度盘在1挡,雨刷每分钟摆4次;在2挡,雨刷每分钟摆6次;,在3挡,雨刷每分钟摆12次;当控制杆处于低速时,雨刷每分钟摆,30次;当控制杆处于高速时,雨刷每分钟摆60次,示 例,测试用例的质量标准,Good,有效性,仿效性,经济性,修改性,方法,-,边界值,-,等价类,-,决策表,-,正交实验测试,黑盒测试,错误猜测法,状态图测试,基于类定义,概念,黑盒测试把系统看成一个不透明的黑匣,在完全不考虑系统内,部结构和处理过程的情况下验证系统是否到达用户需求,边界值,测试思想,- 使用在最小值,略高于,最小值,正常值,略低于最大值和最,大值处取输入变量的值.,- 如果被测变量个数为n,那么测试用例个数为4n1,分类,-,一般边界值测试,-,健壮边界值测试,-,一般最坏情况测试,-,健壮最坏情况测试,单缺陷假设Vs多缺陷假设,单缺陷假设,- 失败极少是由两个或多个缺陷的同时发生而引起的。,- 基于此假设,边界值分析的用例,通常都是只使一个输入变量取边界,值,而其它的那么取正常值,多缺陷假设,-,关心多个变量同时取某些值时是否可能引起缺陷,-,基于此假设,边界值分析的用例,通常都是每个变量作笛卡儿积集,一般边界值测试基于单缺陷,y = f (x,1, x,2,),输入变量的取值范围:,a x,1, b,c x,2, d,a,b,c,d,X,2,X,1,除了最小值,略高于最小值,正常值,略低于最大值和最大值处取输,入变量的值,还要在略超过最大值以及略小于最小值之处值,如果被测变量个数为n,那么测试用例个数为6n1,健壮边界值测试基于单缺陷,a,b,c,d,X,2,X,1,一般最坏情况测试基于多缺陷,a,b,c,d,X,2,X,1,取每,个变量取的5种边界值,然后在各个变量之间求其笛卡儿积,集,就是取各变量的不同边界值的组合,产生5,n,个用例,健壮最坏情况测试基于多缺陷,a,b,c,d,X,2,X,1,取每,个变量取的7种边界值,然后在各个变量之间求其笛卡儿积,集,就是取各变量的不同边界值的组合,产生7,n,个用例,边界值测试的问题,边界值测试的问题,如果输入变量之间不是真正独立的,由边界值而得的测试用例,不够充分,边界值不仅要考虑输入空间,还要考虑输出空间,边界值,测试小结,等价类测试,测试思想,- 通过划分测试预期结果是相同的集合来进行测试用例的设计,,以到达尽可能完备同时又可防止冗余的测试,分类,-,弱一般等价类测试,-,强一般等价类测试,-,弱健壮等价类测试,-,强健壮等价类测试,等价类测试,y = f (x,1, x,2,) 输入变量的取值范围分别为:,a x,1, d 区间 a, b) b, c) c, d,e x,2, g 区间 e, f) f, g,a,b,c,d,e,f,g,图例,弱一般等价类测试用例,强一般等价类测试用例,弱健壮等价类测试用例,强健壮等价类测试用例,有效等价类,对于程序的规格说明书是有意义的,合理的输入数据所构成的集合,无效等价类,对于程序的规格说明书是无意义的或者不合理的输入数据所构成的集合,有效等价类&无效等价类,如果某个输入条件规定值的范围,可以确定一个有效等价类和两个无,效等价类,如果输入条件规定了一个输入值的集合,可以确定一个有效等价类和,一个无效等价类。,如果输入条件是一个布尔表达式的条件,可以确定一个有效等价类和,一个无效等价类,如果有理由确信,某一等价类中的各元素在程序中的处理有区别,那,就把这个等价类分成更小的等价类,等价类划分原那么,条件,有效等价类,编号,无效等价类,编号,等价类测试表示弱健壮,步骤,-,划分等价类,-,为每一个有效等价类和无效等价类规定一个唯一的编号,-,设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,,重复这一步直到所有有效等价类均被测试用例所覆盖,-,设计一个测试用例,使其只覆盖一个无效等价类,重复这一步,直,到所有无效等价类均被覆盖,表示方法,等价类测试表示三角形问题,等价类划分对测试的影响,这种等价类划分的测试用例是什么样的呢?,等价类划分对测试的影响,NextDate问题,弱一般等价类,NextDate问题,强一般等价类,等价类测试比较适用于输入数据以离散值区间和集合定义的函数,不管系统是否是应用强类型语言编写,进行健壮形式的测试是非常有,必要,当输入变量之间存在依赖关系,等价类测试会产生很多“错误用例,等价类确实定是不确定的,有时是不完美的,当与其他测试技术相结合时,等价类测试可以得到加强和补充,等价类小结,边界值测试作为等价类测试的一种补充,边界值不是从某个等价类中随便挑一个作为代表,而是选出特定,的几个元素,使得这个等价类的每一个边界都要作为被考虑测试,的对象,等价类 Vs边界值,决策表,测试思想,-,根据逻辑条件取值的组合所构成的多种情况,分别执行不同的操作,构造相应的测试用例,分类,- 有限项决策表,如果所有条件项的取值都是二值逻辑T/F,0/1,- 扩展项决策表,如果所有条件项的取值有多个,1,2,3,4,5,6,7,8,问题,你觉得疲倦吗?,Y,Y,Y,Y,N,N,N,N,你对内容感兴趣吗,?,Y,Y,N,N,Y,Y,N,N,书中的内容使你糊涂吗?,Y,N,Y,N,Y,N,Y,N,建议,请回到本章开头重读,X,X,继续读下去,X,X,跳到下一章去读,X,X,停止阅读,请休息,X,X,决策表是什么,条件桩(condition stub),(输入条件集合),条件项(condition entry),(输入值),动作桩(action stub),(输出结果集合),动作项(action entry),(输出结果),规,那么,测,试,用,例,决策表是什么,1,2,3,4,5,6,7,8,问题,你觉得疲倦吗?,Y,Y,Y,Y,N,N,N,N,你对内容感兴趣吗,?,Y,Y,N,N,Y,Y,N,N,书中的内容使你糊涂吗?,Y,N,Y,N,Y,N,Y,N,建议,请回到本章开头重读,X,X,继续读下去,X,X,跳到下一章去读,X,X,停止阅读,请休息,X,X,决策表中的不相关条目,1,2,3,4,5,6,7,8,问题,你觉得疲倦吗?,-,-,Y,Y,N,N,N,N,你对内容感兴趣吗,?,Y,Y,N,N,Y,Y,N,N,书中的内容使你糊涂吗?,Y,N,-,N,Y,N,-,N,建议,请回到本章开头重读,X,X,继续读下去,X,X,跳到下一章去读,X,X,停止阅读,请休息,X,X,- 表示规那么的不相关条件项,决策表中的不相关条目续,步骤:,-,确定条件桩和动作桩,-,填入所有的条件桩和动作桩,-,根据逻辑关系,填入条件项的值,-,根据需求,填入相应动作项的值,-,重复第,3,步直到所有逻辑关系被遍历完毕,使用决策表确定测试用例,ab+c,ba+c,c1/2n,那么保存,否那么舍去该因子,利用正交表构造测试数据集,得到相应的正交表,替换正交表,利用正交表构造测试数据集,获得测试数据集,错误猜测法,测试思想,-,基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对,性地设计测试用例,设计过程,- 列举出程序中可能有的错误和容易发生错误的特殊情况特殊值,- 选择构造测试用例,状态图测试法,测试思想,-,通过对建模信息中状态图的各个要素的遍历要求进行测试用例的设计,覆盖度,-,每个事件,-,组件中的每个状态,-,组件中的每个转移,-,所有交互状态对偶,-,对应于客户定义的场景,状态图测试法例如雨刷问题,off,int,low,high,1,2,3,0,60,30,12,6,4,leverup,leverup,leverup,leverdown,leverdown,leverdown,dialdown,dialdown,dialup,dialup,Instate(int),Instate(1),Instate(2),Instate(3),Instate(2),Instate(3),Instate(2),Instate(1),Instate(off),Instate(Low),Instate(High),Instate(Low),Instate(Int),senseLeverUp(),senseLeverDown(),senseDialUp(),senseDialDown(),winderShieldWiper,- wiperSpeed,-leverPosition,- dialPosition,windershieldWiper(wiperspeed,leverPosition,dialPosition),getWiperSpeed(),setWiperSpeed(),getLeverPosition(),setLeverPosition(),getDialPosition(),setDialPosition(),class testSenseLeverUp(),wiperSpeed,leverPos,dialPos,testResult as boolean,main(),testcase = instantiate windshieldWiper(0,off,1),testcase.senseLeverUp(),leverPos = testcase.getLeverPosition(),if leverPos = Int,then testResult = Pass,else testResult = Fail,endif,状态图测试法例如每个事件,需要测试的事件包括: leverUp, leverDown, dialUp, dialDown,。,main(),testcase = instantiate windshieldWiper(0,off,1),testcase.senseLeverUp(),leverPos = testcase.getLeverPosition(),if leverPos = Int,。,状态图测试法例如每个状态,需要测试的状态,:,-,控制杆的四个状态:,off,,,Int,,,Low,,,High,-,刻度盘的三个状态:,1,,,2,,,3,-,雨刷的六个 状态:,0,,,4,,,6,,,12,,,30,,,60,用如下代码替换,windshieldWiper(0,off,1) senseLeverUp() “int,windshieldWiper(0,Int,1) senseLeverUp() “low,windshieldWiper(0,Low,1) senseLeverUp() “high,用如下代码替换,windshieldWiper(0,off,1) senseLeverUp() “int,windshieldWiper(0,Int,1) senseLeverUp() “low,windshieldWiper(0,Low,1) senseLeverUp() “high,windshieldWiper(0,High,1) senseLeverDown() “low,windshieldWiper(0,Low,1) senseLeverDown() “int ,windshieldWiper(0,Int,1) senseLeverDown() “off,状态图测试法例如每个转移,。,main(),testcase = instantiate windshieldWiper(0,off,1),testcase.senseLeverUp(),leverPos = testcase.getLeverPosition(),if leverPos = Int,。,需要测试的转移,:,-,控制杆的从,off,Int,Low,High,LowIntoff,-,刻度盘的三个状态:,1,2,3,2 1,-,雨刷的六个 状态:,0,4,6,12,30,60,30 12 6 4 0,用户描述场景,挡风玻璃雨刷在“关的位置,刻,度盘在位置1;,用户将控制杆推到“间歇,然后,将刻度盘从位置2转到3;,然后将控制杆推到“低速;,用户将控制杆推到“间歇;,然后推到“关;,前提:挡风玻璃雨刷在关的位置,,刻度盘在位置1,雨刷速度为0,事件序列 用户行动 系统应答,1 将控制杆推倒“间歇 雨刷速度为4,2 将刻度盘转到2 雨刷速度为6,3 将刻度盘转到3 雨刷速度为12,4 将控制杆推到“低速 雨刷速度为30,5 将控制杆推到“间歇 雨刷速度为12,6 将控制杆推到“关 雨刷速度为0,状态图测试法例如用户定义场景,class testScenario,wiperSpeed,leverPos,dialPos,step1OK as boolean,step2OK as boolean,step3OK as boolean,step4OK as boolean,step5OK as boolean,step6OK as boolean,Main(),testcase =,instantiate windshieldwiper(0,off,1),testcase.senseleverup(),wiperSpeed =,testcase.getWiperspeed(),if wiperspeed = 4,then step1OK = Pass,else step1OK = Fail,endif,testcase.senseDialUp(),wiperSpeed =,testcase.getWiperspeed(),if wiperspeed = 6,then step2OK = Pass,else step2OK = Fail,endif,testcase.senseDialUp(),wiperSpeed =,testcase.getWiperspeed(),if wiperspeed = 12,then step3OK = Pass,else step3OK = Fail,Endif,testcase.senseLeverUp(),wiperSpeed =,testcase.getWiperspeed(),if wiperspeed = 30,then step4OK = Pass,else step4OK = Fail,endif,testcase.senseLeverDown(),wiperSpeed =,testcase.getWiperspeed(),if wiperspeed = 12,then step5OK = Pass,else step5OK = Fail,endif,testcase.senseLeverDown(),wiperSpeed =,testcase.getWiperspeed(),if wiperspeed = 0,then step6OK = Pass,else step6OK = Fail,endif,状态图测试法例如用户定义场景,Velocity,speed:Speed,direction: Direction,Velocity(),Velocity (speed: Speed, direction: Direction),getSpeed(): Speed,getSpeedX():Speed,getSpeedY():Speed,getDirection():Direction,setSpeed(speed:Speed),setDirection(direction:Direction),Reverse(),reverseY(),reverseX(),speedX,speedY,speed,X,Y,类定义,Velocity : setDirection (dir:Direction),Pre: 0=dir and dir 360,Post: direction =dir and speed = speed pre,Velocity : reversex(),Pre: true,Post: speed = speed pre and direction =,if directionpre = 180 then (180-directionpre),else (540 - directionpre).mod(360),True,(true,Post),( ,Post), (not ,Exception),1,1,1,not,(not , Post), ( ,Exception),1,1,1,1,2,and,1,2,and,(,Post,),1,2,and,(not,Exception,),1,2,and not,(,Exception,),1,2,and not,(not,Exception,),1,2,or,1,(,Post,),1,2,and,(,Post,),1,2,and not,(not,Exception,),2,(,Post,),1,2,xor,1,2,and not,(,Post,),1,2,and,(not,Post,),1,2,and,(,Exception,),1,2,and not,(not,Exception,),1,2,implies,1,(not,Post,),2,(,Post,),1,2,and,(not,Post,),1,2,and not,(,Exception,),1,2,then,if,else,3,endif,1,2,and,(,Post,),1,3,and,(not,Post,),1,2,and not,(,Exception,),1,3,and not,(not,Exception,),基于类定义-前置条件规那么,1,1,1,2,and,1,2,or,1,2,implies,1,2,then,if,else,3,endif,(,Pre,),1,(,Pre,),2,and,1,(,Pre,),2,(,Pre,),1,(,Pre,),2,and,1,2,xor,1,(,Pre,),2,and not,1,(,Pre,not,2,and,),1,(,Pre,not,2,or,),(,Pre and,2,),1,(,Pre and not,3,),1,基于类定义-后置条件规那么,Velocity : setDirection (dir:Direction),Pre: 0=dir and dir 360,Post: direction =dir and speed = speed pre,1,0=dir,2,dir 360,1,2,direction =dir,speed = speed pre,1,2,and,(,),1,2,and,(not,Exception,),1,2,and not,(,Exception,),1,2,and not,(not,Exception,),1,2,and,( 0=dir and dir 360, direction =dir and speed = speed pre),( 0=dir and not (dir 360), Exception),( not (0=dir) and dir 360, Exception),( not (0=dir) and not (dir 360), Exception),基于类定义,2,1,(,Pre and,2,2,),Velocity : reversex(),Pre: true,Post: speed = speed pre and direction = if directionpre = 180 then (180-directionpre) else (540 - directionpre).mod(360),1,2,speed = speed pre,if directionpre = 180 then (180-directionpre) else (540 - directionpre).mod(360),First level,.,Second level,1,directionpre = 180,2,180-directionpre,3,(540 - directionpre).mod(360),1,(,Pre,1,),2,1,and,(true,speed = speed pre and,2,(true and directionpre=180,speed = speed pre and (180-directionpre),(,Pre and not,2,3,2,),1,(true and not (directionpre=180),speed = speed pre and (540 - directionpre).mod(360),1,),基于类定义,功能测试技术小结,测试用例个数,精细程度,高,低,测试效率,标识测试用例效果,精细程度,高,低,测试有效性,边界值,等价类,决策表,边界值,等价类,决策表,常用功能测试技术小结,最后,请大家记住,实际的测试用例多是各种测试技术取长补短的结果:,用等价类的思想划分被测问题,在每个等价类的边界上使用边界值分析,对于逻,辑复杂的问题需要使用决策表确定测试用例以功能的实现是否正确,练习,一个模拟的保险金计算程序,根据投保人和驾驶历史纪录两个因素计算半年的保,险金,具体方法如下:保险金 = 根本保险费率*年龄系数-平安驾驶折扣,当前的,根本保险费率为500美元,年龄系数是投保人年龄的函数. 如果投保人驾驶执照上,的当前点数低于与年龄有关的门限,那么给与平安驾驶折扣,如果投保人有12点,,那么驾驶人的执照就会被撤消,不再需要保险。书面保险策略的驾驶人年龄范围为,16-100,年龄、年龄系数、门限点数和平安驾驶折扣的关系如下所示:,年龄范围,16,年龄25,年龄系数,门限点数,平安驾驶折扣,2.8,1,50,25,年龄35,1.8,3,50,35,年龄45,1.0,5,100,45,年龄60,0.8,7,150,60,年龄100,1.5,5,200,方法,- 根本路径测试,- 分支条件,- 循环测试,- 数据流,白盒测试,概念,白盒测试是一种基于程序内部实现结构和逻辑寻找缺陷的测试技,术,有时也称作结构测试,开始,1,2,3,5,6,7,结束,4,计算一下,如果循环最多有18次,存在多少条程序执行,路径?,5,1,+5,2,+5,3,+5,4,+5,18,=4.768*10,12,根本路径测试,测试思想,根据程序的控制流图找出一个模块所需测试的根本路径,根据这些路,径设计构造相应的测试用例,步骤,- 根据模块逻辑构造控制流图Flow Graph,- 计算控制流图的环复杂度 (Cyclomatic Complexity),- 列出包含起始节点和终止节点的根本路径,- 检查一以下出的根本路径数目是否超过控制流图的环复杂度,- 设计覆盖这些根本路径的测试用例,控制流图Flow Graph,节点: 用标有编号的圆圈表示。它代表了程序流程图中矩形框中所表示的,处理,菱形表示的判断处理以及判断处理流程相交的集合点。,边: 用箭头表示。说明了控制的顺序。,构造控制流图,顺序,if-then-else,case,until,while,环复杂度,(,Cyclomatic,Complexity),传统上,用,来衡量一个模块判定结构的复杂程度,在数量上表现为,独立的路径条数,即我们需要测试的最少路径条数。,计算公式:,V(G) =,划分的闭合区域的数目,V(G) =,边的数目节点的数目,+2,V(G) =,判定节点数目,+1,(,判定节点必须是二值节点,如果不是,在计算前需要转换,),计算环复杂度,路径,是一系列边,使得对于该序列中的所有相邻边对偶ei,ej来说,第一,条边的终止节点是第二条边的起始节点,起始节点:内度0的节点,终止节点:外度0的节点,根本路径,每条根本路径是从起始节点到终止节点的一条路径并且至少包含,一条其他根本路径没有包含的边,确定根本路径,确定根本路径例如(三角形问题),4,5,6,7,8,9,10,11,12,13,21,14,15,16,17,18,19,20,22,23,第一条:,4,5,6,7,8,9,10,12,13,14,15,20,22,23,对应的测试用例:输入:4,4,4,输出:等边三角形,第二条:,4,5,6,7,8,9,10,12,13,14,16,17,19,20,22,23,对应的测试用例:输入:3,4,5,输出:一般边三角形,第三条:,4,5,6,7,8,9,10,12,13,14,16,18,19,20,22,23,对应的测试用例:输入:3,4,4,输出:等腰三角形,第四条:,4,5,6,7,8,9,11,12,13,21,22,23,对应的测试用例:输入:3,4,1,输出: 非三角形,确定根本路径例如(三角形问题),环复杂度和根本路径数的关系,请注意:,如果根本路径必须是可行的,那么逻辑关系会压缩根本路径集合数,量,因此环复杂度是包含起始点和终止点的根本路径数目的上限,begin,1,2,3,4,5,end,问题,begin, 1, 2, 5, end,begin, 1, 2, 3, 4, 5, end,begin, 1, 2, 3, 4, 2, 5, end,A flow graph is G=(V, E), defined as follows:,V = ,vb,ve, U D U S, where,indegree(vb,)=0 is the begin vertex,outdegree(ve,)=0 is the end vertex,D is the set of atomic binary decision vertices and,S is the set of sequential vertices, each of which denotes a block of,sequential statements,E,DXD U DXS U SXD is the set of directed edges,根本路径形式化定义,A path p is a sequence of vertices,,,p=,vb, v1, v2, .,vn,ve,such that , , ., , E,A path p=,vb, v1, v2, .,vn,ve,is a basis path if p does not contain two subsequences s1, s2 such that s1=s2 and length(s1)1 and length(s2)1,(s1) (s2)(subseq(s1,p) subseq(s2,p) s1=s2 |s1|1 |s2|1),subseq(s1,p) (,s0)(s2)(s0,s1,s2 = p),Procedure purge (var L:list),var p: ,(1) begin p:= FIRST(L);,(2) while P END(L) do,(3) begin q:= next(p,L);,(4) while q END(L) do,(5) if Aq = Ap then,(6) delete (Aq, L),else q:= next(q,L);,endif,endwhile,end;,p:=next(p,L),endwhile,end,画出控制流图,循环复杂度是多少?,列出根本路径和测试用例,练习,路径测试小结,控制流图掩盖了可执行路径和不可执行路径之间的区别,环复杂度是根本路径数的上限,根本路径又给出了必须进行测试的下限,路径测试提供了一组覆盖指标,解决漏洞和测试冗余问题,S,P,T,5,2,6,1,4,3,7,5.根本路径测试无法发现缺陷的区域,7.控制流图中可行,但是实际代码不可行的区域,无法构造相应的测试用例,1,3,4是通过通过根本路径测试可发现问题的区域,3可发现要么多余代码要么需求遗漏,而4可发现要么需求遗漏要么需求多余,请大家思考一下,如果,9 If(ab+c)AND(ba+c)AND(c,a+b),10 Then IsATriangle = True,11 Else IsATriangle = False,12EndIf,我们的用例集是否能发现这个错误呢?,一个问题,分支-条件测试,测试思想,根据模块中的逻辑条件设计测试用例,使得被测模块中的每一个复合条,件以及构成这个复合条件的每一个简单条件的真假情况至少被执行一次,简单条件和复合条件,- 一个简单条件是一个布尔变量或一个可能带有NOT(“)操作符的关系表达,式,关系表达式的形式如:E1关系操作符E2,其中E1和E2是算术表达,式,而关系操作符是以下之一:“,“,“=,“(“=),“,,或“,- 复杂条件由简单条件、布尔操作符和括弧组成。假定可用于复杂条件的布尔,算子包括OR“|,AND“和NOT“,不含关系表达式的条件称为布尔表,达式。,条件的成分类型包括布尔操作符、布尔变量、布尔括弧(括住简单或复,杂条件)、关系操作符和算术表达式,可发现的错误:,-,布尔变量错误,-,布尔括弧错误,-,关系操作符错误,-,算术表达式错误,-,布尔操作符错误,(,遗漏布尔操作符,布尔操作符多余或布尔操作符不正确,),分支-条件测试,复合条件,:,使,(ab+c)AND(ba+c)AND(ca+b),为真和假,简单条件,:,1,、,(ab+c),为真或者假,2,、,(ba+c),为真或者假,3,、,(ca+b),为真或者假,分支-条件测试例如,(ab+c)AND(ba+c)AND(ca+b) (ab+c) (ba+c) (ca+b),3,4,5,T,T,T,T,0,0,0,F,F,F,F,3,4,1,F,T,F,T,4,3,1,F,F,T,T,3,1,4,F,T,T,F,分支-条件测试例如,练习,If (n Mod 400 = 0) Or (n Mod 4 = 0) And ( n Mod 100 0) )Then,MsgBox s + 是闰年!,End If,其分支-条件测试用例是什么?,测试思想:,关注循环体结构的正确性,对循环变量运用类似于边界值测试的方,法以验证循环体结构的正确性。,循环测试,简单循环,嵌套循环,连接循环,非结构循环,1、直接跳过循环体,2、只执行一遍循环体,3、 连续执行两遍循环体,4、如果循环次数为n,执行m m 1)AND(B=0,),2 Then X:=X/A,3 endif,4 If,(A=2)OR(X1),5,Then X:=X+1,6 endif,测试用例输入: A=2,B=0,X=4,1,2,4,5,6,3,1,If (A1),OR,(B=0),2 Then X:=X/A,3 endif,4 ,分支覆盖,1,If (,A1)AND(B=0,),2 Then X:=X/A,3 endif,4 If,(A=2)OR(X1),5,Then X:=X+1,6 endif,1,2,4,5,6,3,测试用例输入:,A=2,B=0,X=4 (t,t,t,t),1,2,4,5,6,3,测试用例输入:,A=1,B=0,X=1 (f,t,f,f),1 If (A1) AND (B,0),2 Then X:=X/A,3 endif,4 ,条件覆盖,1,If (,A1)AND(B=0,),2 Then X:=X/A,3 endif,4 If,(A=2)OR(X1),5,Then X:=X+1,6 endif,1,2,4,5,6,3,测试用例输入: A=2,B=1,X=1 (t,t,t,f),1,2,4,5,6,3,测试用例输入: A=1,B=1,X=2 (f,f,f,t),分支-条件覆盖,1,If (,A1)AND(B=0,),2 Then X:=X/A,3 endif,4 If,(A=2)OR(X1),5,Then X:=X+1,6 endif,1,2,4,5,6,3,测试用例输入: A=2,B=0,X=4 (t,t,t,t),1,2,4,5,6,3,测试用例输入: A=1,B=0,X=1 (f,t,f,f),测试用例输入: A=2,B=1,X=1 (t,f,t,f),1,2,4,5,6,3,路径覆盖,1,If (,A1)AND(B=0,),2 Then X:=X/A,3 endif,4 If,(A=2)OR(X1),5,Then X:=X+1,6 endif,c,1,2,4,5,6,3,测试用例输入:,A=1,B=1,X=1,1,2,4,5,6,3,测试用例输入:,A=1,B=1,X=2,测试用例输入:,A=3,B=0,X=1,测试用例输入:,A=2,B=0,X=4,1,2,4,5,6,3,1,2,4,5,6,3,覆盖率测试工具PureCoverage,一般功能,_ See immediately what percentage of your code has and has not been exercised,_ Identify untested, or insufficiently tested, functions, procedures, or methods,_ Locate individual untested lines in your source code,_ Customize data collection for maximum efficiency,_ Customize displays to focus on the details you need,_ Merge coverage data from multiple runs of a program,_ Save coverage data to share with other team members or to generate reports,_ Monitor code coverage from within your development environment by using the,PureCoverage integration with Microsoft Visual Studioand Microsoft Visual Basic,高级功能,_ Integrate PureCoverage with your development desktop,_ Fine tune data collection settingexecutable settings,_ Use selective instrumentation to collect data for a subset of your program,_ Zero in on key program areas(在某个例程运行过程中可以进行拍数据快照),_ Integrate PureCoverage in your test environment,PureCoverage例如,源代码:,/*,dataFlow.cpp,: Defines the entry point,for the console application.*
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


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

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


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