资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,5-,*,WHPU,黑盒测试,章节内容,6.1基于图的测试(不做要求),6.2等价划分,6.3边界值分析,6.4正交表测试,6.5健壮性测试,6.6决策表测试,6.7有穷状态测试,6.2,等价划分,等价划分试图定义,一个测试用例,以期发现,一类错误,,由此减少所需设计测试用例的总数。,将程序的输入划分为若干个数据类,从中生成测试用例,6.2.1等价划分的测试方法,6.2.2,案例分析:工资支付系统等价类测试设计,6.2.1,等价划分的测试方法,重要问题是它们构成集合的划分,完全性:,这些子集的并是整个集合,不相交性:,互不相交的一组子集,直觉告诉我们,这些等价类中的测试用例会以与同样的方式进行,“,相同处理,”,。当我们考虑结构性测试时,将会看到,“,相同处理,”,映射到,“,遍历相同的执行路径,”,定义等价类的指导原则,设计测试用例的步骤,6.2.1,等价划分的测试方法,定义等价类的指导原则,(1)按区间划分,:,一个输入条件规定了输入值的范围,得到三个等价类,(2),按数值集合划分:输入条件规定了一个输入值集合,并且每个处理起来都不同,为集合每个元素设计一合法等价类和一个非法等价类,(3),按输入方式划分:处理每个合法输入的方式都不同,那么每个合法输入生成一个合法等价类。,(4)按限制条件划分:如果输入条件规定了合法输入的数目,那么为正确的输入数目定义一个合法等价类,同时定义一个非法等价类。,(5)按限制规则划分:输入条件规定了必须满足的情形,那么生成两个等价类。即一个合法等价类和一个非法等价类。,(6)细分等价类:如果等价类的元素被程序处理的方式不同,那么把该等价类分割成为更小的等价类。,6.2.1,等价划分的测试方法,设计测试用例的步骤,(1)为每个等价类确定一个,唯一编号,(2),尽可能多,的覆盖尚未被覆盖的,有效等价类,,重复该步骤,直至覆盖所有有效等价类,(3),仅,覆盖一个还未覆盖的,无效等价类,,重复该步骤,直至覆盖所有无效等价类,6.2.2,案例分析:工资支付系统等价类测试设计,用例描述:编号,BH,:从,1001.,.,9999,的整数,口令,KL,:长度不小于,6,的任意字符组合,另外满足以下约束,Con1,:,BH:1001,9999,Con2,:,length(KL):6.,无穷大,Con3,:,BH/KL,必须合法,Con4,:,BH,必须没有过期,Con5,:,BH,和,KL,非法输入必须小于,3,次,对编号和口令的判断是基于数据库中员工信息的,假定员工信息表简化如下,6.2.2,案例分析:工资支付系统等价类测试设计,等价类划分,有效等价类,无效等价类,6.2.2,案例分析:工资支付系统等价类测试设计,测试用例,TC1=(,”,1003,”,,,”,softwaretesting,”,),可以覆盖有效等价类,15,TC10 1020,,,zhaochong2000-01-18,提示“编号已过期,”,15,6.2.2,案例分析:工资支付系统等价类测试设计,从被测试程序的,输出情况,划分等价类,系统显示员工的基本信息和可选操作:,OK,,,OK,系统显示错误消息,用户可以选择重新输入或取消。,OK,NOT_OK,系统显示提示消息,进入待机状态。,过期,过期,系统显示警告并锁定屏幕。,OK,NOT_OK,OK,NOT_OK,OK,NOT_OK,保险公司人寿保险保费计算程序的等价类测试,某保险公司人寿保险的保费计算方式为:,保费投保额,保险费率,其中,保险费率根据年龄、性别、婚姻状况和抚养人数的不同而有所不同,体现在不同年龄、性别、婚姻状况和抚养人数,点数设定不同,,10,点及,10,点以上保险费率为,0.6%,,,10,点以下保险费率为,0.1%,;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则见表,2.5,。,年龄,性别,婚姻状况,抚养人数,2039,4059,其它,M,F,已婚,未婚,1,人扣,0.5,点,,最多扣,3,点,6,点,4,点,2,点,4,点,3,点,3,点,5,点,保险公司人寿保险保费计算程序的等价类测试,分析程序规格说明中给出和隐含的对,输入条件,的要求,列出等价类表(包括有效等价类和无效等价类)。,年龄:一位或两位非零整数,值的有效范围为,199,性别:一位英文字符,只能取值,M,或,F,婚姻:字符,只能取值已婚或未婚,抚养人数:空白或一位非零整数(,19,),点数:一位或两位非零整数,值的范围为,199,根据(,1,)中的等价类表,设计能覆盖所有等价类的测试用例,等价类表,测试用例,保险公司人寿保险保费计算程序的等价类测试,等价类表:分为有效等价类和无效等价类两大类,保险公司人寿保险保费计算程序的等价类测试,1-3,覆盖有效等价类(每个测试用例尽可能多覆盖有效等价类),4-12,覆盖无效等价类(每个测试用例一次只能覆盖一个无效等价类,),6.3,边界值分析,边界值分析法(,boundary value analysis,BVA)。,边界值分析法是黑盒测试技术之一,该方法用于在,等价类的边缘,生成测试用例。边界值是针对系统或构件规定的最小或最大输入值、内部值或输出值。,6.3.1边界值分析的测试方法,BVA,的指导原则,两个变量边界值分析测试,健壮边界值分析测试,6.3.2案例分析:工资支付系统边界值测试设计,6.3.1,边界值分析的测试方法,BVA,的指导原则,(1)若输入条件指定为以,a,和,b,为边界,的范围,则测试用例应该包括,a、b、,略大于,a,和略小于,b;,(2),如果输入条件,规定了一个取值范围,,那么从范围的边界生成合法测试用并为恰好超出边界的输入值生成非法测试用例。,(3)若输入条件指定为,一组值,,则测试用例应当执行其中的最大值和最小值,以及略大于最小值和略小于最大值的值,(4)如果输入条件规定了,值的个数,,则用最大个数,最小个数,比最小个数少1,比最大个数多1的数创建测试用例。,(5)指导原则1、2和3也适用于,输出,条件。例如,工程分析程序要求输出温度和压强的对照表,测试用例应该能够创建表项所允许的最大值和最小值的输出报告;,(6)若内部程序,数据结构有预定义的边界值,(如:数组有100项),要在其边界处测试数据结构。,(7)如果程序的输入或输出是,一个有序的集合,(例如顺序文件、线性列表、表格等),那么需要关注集合的第一个和最后一个元素。,6.3.1,边界值分析的测试方法,两个变量边界值分析测试,两个变量,x,1,和,x,2,的函数,T。,如果函数,T,实现为一个程序,则输入两个变量,x,1,和,x,2,会有一些边界:,ax,1,b,cx,2,d,边界值分析使用在,最小值(,min),略高于最小值(,min+),正常值(,nom),略低于最大值(,max-),最大值(,max),n,个变量的函数,产生,4,n+1,个测试用例,6.3.1,边界值分析的测试方法,3.,健壮边界值分析测试,变量取值:取,min-,,,min,,,min,,,nom,,,max,,,max,,,max+,;,n,个变量的函数,健壮性边界值测试将产生,6n+1,个测试用例,.,健壮性测试最有意义的部分不是输入,而是预期的输出,观察例外情况如何处理。,6.3.2,案例分析:工资支付系统边界值测试设计,Con1,:,BH:1001,9999,Con2,:,length(KL):6.,无穷大,),Con3,:,BH/KL,必须合法,Con4,:,BH,必须没有过期,Con5,:,BH,和,KL,非法输入必须小于,3,次,6.3.2,案例分析:工资支付系统边界值测试设计,Con1,和,Con2,是带有明显的边界条件的,Con1,:,BH:1001,9999,Con2,:,length(KL):6.,无穷大,),表,6-5,:,BH,、,KL,边界值设计,6.3.2,案例分析:工资支付系统边界值测试设计,Con1,和,Con2,是带有明显的边界条件的,Con1,:,BH:1001,9999,Con2,:,length(KL):6.,无穷大,),表,6-6,:,BH,、,KL,的一般边界值分析测试用例(只含有,max,max-,nom,min+,min,不含,max+,min-),BH,:,1001,1002,1200,9998,9999,KL,:长度为,6,7,12,6.3.2,案例分析:工资支付系统边界值测试设计,Con1,和,Con2,是带有明显的边界条件的,Con1,:,BH:1001,9999,Con2,:,length(KL):6.,无穷大,),表,6-7,:,BH,、,KL,的健壮边界值分析测试用例,6.4,正交表测试,正交表测试思想:从大量的数据(测试用例)中挑选适当的、有代表性的点(用例),从而合理安排测试的一种科学设计测试方法。使用己经创建的,正交表格,来安排测试并进行数据分析的一种方法,目的是用,最少,的测试用例达到,最高,的测试覆盖率。,6.4.1,正交表测试方法,6.4.2,案例分析:工资支付系统正交表测试设计,6.4.1,正交表测试方法,正交表:,是一整套规则的设计表格,用,L,为正交表的代号,,n,为试验的次数,,t,为水平数,,c,为列数,也就是可能安排最多的因素个数。正交表的构造需要用到组合数学和概率学知识,而且如果正交表类型不同,则构造方法差异很大,甚至有些正交表其构造方法到目前还未解决。但目前广泛使用的,Lo.t0,类型的正交表构造思想比较成熟。,到,“,水平数-1,”,。,例如,,L,8,(2,7,)表示,该表有,7,列,8,行,,2,为因子的水平数,常用正交表,,L,8,(2,7,),L,9,(3,4,),L,16,(4,5,),6.4.1,正交表测试方法,2正交表的选取,正交表中的,列数,要大于或等于所确定的因子数。,正交表中的,行数,必须不少于具有最多选项的,两个因子的选项数量的乘积,。,6.4.1,正交表测试方法,3.,正交表的使用,考虑邮件系统的,sendmail,函数,。向函数,sendmail,传递四个参数,S1、S2、S3,和,S4。,其中每个参数取三个不同的值。例如,,S1,的取值:,S1=1,,现在发送,S1=2,,一小时后发送,S1=3,,半夜12点后发送,S2、S3,和,S4,也分别取值为1、2和3,表示其他发送功能。,选取什么正交表合适?,正交表中的,列数,要大于或等于所确定的因子数。本例中为,4,正交表中的,行数,必须不少于具有最多选项的,两个因子的选项数量的乘积,。本例中为,9,因此,可以选择满足该要求的最简单正交表,L,9,(3,4,),6.4.1,正交表测试方法,正交表测试方法使我们可以利用比穷举测试少得多的测试用例而提供好的测试覆盖。,sendmail,函数的,L,9,(3,4,),,,S1,、,S2、S3,和,S4,也分别取值为1、2和3,表示其他发送功能,例如,,S1,的取值:,S1=1,,现在发送,S1=2,,一小时后发送,S1=3,,半夜12点后发送,6.4.1,正交表测试方法,利用正交表设计测试用例的步骤,提取功能说明,构造因子状态表,加权筛选,生成因素分析表,用正交表构造测试数据集,6.4.2,案例分析:工资支付系统正交表测试设计,三个状态(因子),使用的操作系统:,2,种,用来登陆系统的浏览器:,2,种,连接系统时的上网方式:,2,种,选取最低条件的正交表:,L4(2,3,),6.4.1,正交表测试方法,根据因子状态表,选择正交表,L4(2,3,),来减少测试用例组合的数量,6.5,健壮性测试,健壮性测试用来确认向软件异常输入或把软件置于不适当的环境下,软件是否能够以可接受的方式运行,6.5.1健壮性测试方法,6.5.2,案例分析:工资支付系统健壮性测试设计,6.5.1健壮性测试方法,(,Robustness,),健壮性测试的目标,确认应用系统是否达到其健壮性需求。,通过判断系统能否处理好以下问题,非法输入,人为或其他系统,硬件构件失效,软件构件失效,所依赖的系统产生的失效,根据异常操作需求和健壮性需求执行测试使系统失效。,确定软件为投放市场而准备的程度。,为缺陷分析工作提供输入。,6.5.,2,案例分析:工资支付系统健壮性测试设计,场景1:创建员工报表-1,前置条件,:小时工高飞已经通过刷卡并输入口令顺利登录到系统,高飞在主菜单选择创建员工报表,系统列出可选类型包括:总的工作时间,针对某个项目的工作时间,已获取工资。高飞选择了总工作时间类型,并输入起止日期为2008年5月1日到2008年7月31日,提交约束条件后,系统显示了该时间段内每个周的工作时间的列表,并显示总计时间。高飞选择打印报表,系统显示打印设置对话框,高飞选择以,A4,双面打印报表,完成后回到主菜单进行其它操作。,后置条件,:系统数据状态没有改变,打印了合乎约束条件的报表,6.5.,2,案例分析:工资支付系统健壮性测试设计,构造不合理的输入,输入错误数据类型,输入定义域以外的数值,6.5.,2,案例分析:工资支付系统健壮性测试设计,构造不合理的输入,输入错误数据类型,输入定义域以外的数值,6.6,决策表测试,决策表分析方法:,20,世纪,60,年代产生,具有逻辑严格性,用来分析和表示复杂逻辑关系,适合描述不同条件集合下采取行动的若干组合的情况,6.6.1,决策表测试方法,6.6.2,案例:工资支付系统决策表测试设计,6.6,决策表测试,决策表的组成,条件桩(,Condition Stub):,列出了问题的所有,条件,。通常认为列出的条件的次序无关紧要。,动作桩(,Action Stub):,列出了问题规定可能采取的,操作,,这些操作的排列顺序没有约束。,条件项(,Condition Entry):,列出针对它左列,条件的取值,动作项(,Action Entry):,列出在条件项的各种取值情况下应该采取的,动作,。,规则(,Rule):,任何一个条件组合的特定取值及其相应要执行的操作称为规则。,6.6.1,决策表测试方法,规则合并,指有两条或多条规则合并为一条规则,若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号,“,-,”,表示,说明执行的动作与该条件的取值无关,称为,不关心条目,。,6.6.1,决策表测试方法,决策表的建立步骤,确定规则的个数,假如有,n,个条件(原因),每个条件有两个取值(0,1),故有2,n,种规则。,列出所有的条件桩和动作桩。,填入条件项。,填入动作项。,简化、合并相似规则(相同动作)。,6.6.2,案例分析:工资支付系统决策表测试设计,教材,32,页:工资支付系统中桌面登陆用例,1,条件桩:有效卡(编号未过期)、有效口令、,3,次无效的口令尝试,动作桩:显示基本信息和可选操作、显示错误消息、显示提示消息并记录登陆事件、警告并锁定屏幕,6.6.2,案例分析:工资支付系统决策表测试设计,教材,32,页:工资支付系统中桌面登陆用例,1,填入条件项,填入动作项,6.6.2,案例分析:工资支付系统决策表测试设计,教材,32,页:工资支付系统中桌面登陆用例,1,合并,14,合并,7-8,6.6.2,案例分析:工资支付系统决策表测试设计,教材,32,页:工资支付系统中桌面登陆用例,1,为,4,条规则依次设计,4,个测试用例,6.7,有穷状态测试,有穷状态机模型,早起用来支撑硬件逻辑测试中的自动机和开关理论。如今,该模型用于测试菜单驱动的应用软件,适用于具有封装特点的面向对象软件,有穷状态测试基本思想:系统的正确行为不仅依赖于现在,所发生的事,,而且依赖于到目前为止发生了,哪些事件,。知道过去发生过什么的系统具备状态相关的行为。有穷状态测试是利用,状态转换图,和,状态表,分析和测试这类系统的方法。,6.7.1,有穷状态测试方法,6.7.2,案例:工资支付系统有穷状态测试设计,6.7.1,有穷状态测试方法,有穷状态在面向对象编程中应用:,在面向对象编程中,有穷状态方法使用,状态,和,事件,来表示面向对象编程中类的行为。,一个迁移由,事件、守卫条件和动作,这三部分组成。,事件,表示对类成员函数的调用。,守卫条件,是迁移执行必须要满足的条件,它可以是任何类数据属性或函数调用输入参数构成的谓词条件。当守卫条件为真,动作就被执行。,一个,动作,是迁移发生时将要执行的一组操作,可以引用或操作任何类数据属性或函数调用产生的输出参数。不论何时,在收到一个表示消息或函数调用的事件时,对象的下一个状态便依赖于当前状态激发事件的内容或动作。,由一个事件引起的状态变化就称为,迁移,。,6.7.1,有穷状态测试方法,有穷状态在系统层面的应用:将基于状态测试的概念运用到系统上的过程可以简单地描述,选择一个观察世界的,视角,。,理解系统、用户或者对象可能位于的,各种状态,,包括初始状态和最终状态。,标识在每个,状态,中能够,以及不能够,运用的事务、时间、条件和动作。,使用为系统建模的一个,图形或者表格,。,对于每个事件和条件,即每个,转换,,应验证正确的动作和下一个发生的状态。,6.7.1,有穷状态测试方法,状态转换图的构成:有穷状态测试中使用的状态转换图包括以下7个元素,状态,初始状态指示,事件,条件,动作,转换,最终状态指示,6.7.1,有穷状态测试方法,4设计测试的规则,访问每个状态,覆盖每个转换,确保没有状态是不可抵达或者不可离开的。,6.7.2,案例:工资支付系统有穷状态测试设计,7,种状态,,9,个事件,6.7.2,案例:工资支付系统有穷状态测试设计,共有,7,个状态,,9,个事件,形成,7,*,9=63,行的状态表,6.7.2,案例:工资支付系统有穷状态测试设计,共有,7,个状态,,9,个事件,形成,7,*,9=63,行的状态表,6.7.2,案例:工资支付系统有穷状态测试设计,共有,7,个状态,,9,个事件,形成,7,*,9=63,行的状态表,6.7.2,案例:工资支付系统有穷状态测试设计,共有,7,个状态,,9,个事件,形成,7,*,9=63,行的状态表,6.7.2,案例:工资支付系统有穷状态测试设计,覆盖状态图和状态表之间的区别:状态表把,“,不会发生,”,和,“,应该不发生,”,的情况考虑在内了。如果要求有详尽测试或健壮性测试,或者要求错误处理要慎重考虑,那么你应该计划来覆盖状态表,6.7.2,案例:工资支付系统有穷状态测试设计,覆盖状态图的场景用例:共,5,个场景,正常登陆,无效口令后取消登陆,无效口令后正常登陆,6.7.2,案例:工资支付系统有穷状态测试设计,覆盖状态图的场景用例:共,5,个场景,过期用户登陆,3,次无效口令输入登陆,作业,分小组:下载,2006-2011,软件评测师 试题,
展开阅读全文