黑盒测试用例生成

上传人:e****s 文档编号:109767783 上传时间:2022-06-17 格式:DOC 页数:26 大小:852KB
返回 下载 相关 举报
黑盒测试用例生成_第1页
第1页 / 共26页
黑盒测试用例生成_第2页
第2页 / 共26页
黑盒测试用例生成_第3页
第3页 / 共26页
点击查看更多>>
资源描述
第三章 黑盒测试动态测试无论是白盒测试还是黑盒测试,有一个共同的特点:就是对被测软件S,设S的输入空间为D,测试就是选取或产生D的一个子集CD,C称为测试数据。所不同的是选择C的方式不同。对一般的软件来讲,D都是非常大的,以至穷举测试是不可能的,否则,是可以验证一个软件的正确性的。黑盒测试是根据程序的外部特性、也就是说程序的功能产生测试用例的。理论上讲,采用黑盒测试技术并不需要提供程序的源代码,在有些情况下,由于用户不能或者不愿意提供源代码的情况下,黑盒测试是必须的方法。黑盒测试方法包括等价类划分法、因果图法、正交实验设计法、边值分析法、判定表驱动法等。这些方法大都来源于其它不同的学科理论和工程实践,并不是软件测试技术所独有的,但在软件测试技术中却能发挥很好的效果。31 等价类划分法1等价类的概念定义3.1:等价类。所谓等价类是指ED,对eE,若用e作为测试用例测试程序发现不了某类功能上明显的错误(例如,对没有实现的功能等),那么对eE,若用e作为测试用例测试程序也发现不了这种错误。也就是说,E中所有的元素对揭露此类错误而言是等价的。等价类测试实际上是将D划分成n个子集E1,E2,En,那么,测试时只需在每个Ei中随机的选择一个测试用例即可。定义3.2:有效等价类。有效等价类是指程序规格说明书中规定的数据的集合。定义3.3:无效等价类。无效等价类是指超出程序规格说明书中规定的数据的集合。有效等价类是可以理解的,而无效等价类虽然不是规格说明中所规定的数据,但又是实际使用时可能碰到的。例如,一个程序的输入空间为1,10,如果仅对该数据进行测试,而当输入11或0时就出现错误,这显然不是用户或编程者所希望的,这种软件也无法使用。因为用户在使用软件时,有意或无意输入非法的数据是经常的事情。但是要注意,无效等价类也不是没有限制的,一般来讲,无效等价类和有效等价类应用相同的数据类型。否则,无法对无效等价类进行确定。当然用户使用软件时输入的数据可以是五花八门的,输入一个不相同数据类型的数据也不是什么罕见的事情,但这里是不可能考虑这些问题的。2如何确定等价类一般来讲,等价类划分首先要分析所有可能的输入情况,然后,按照下列规则对其进行划分。(1)如果输入条件中规定了取值的范围,则可以确定一个有效等价类和两个无效等价类。例如,输入条件中规定了x是1到10的整数,则有效等价类是1,10,而无效等价类是x0的整数和x11的整数。(2)如果输入条件中规定了输入值的集合或者规定了“必须如何”的情况下,则可以确定一个有效等价类即该集合本身;一个无效等价类即该集合的非。例如,一般的语言都规定:标识符是以字母开头。则有效等价类是以字母开头的元素的集合,而无效等价类是以非字母开头的元素的集合。(3)如果输入条件是一个BOOLEAN变量,则可以确定一个有效等价类和一个无效等价类。(4)如果规定了输入数据是一组值(假设n个),并且程序要对每一个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类。(5)如果规定了输入数据必须遵守规则的前提下,可确立一个等价类和若干个无效等价类(从不同的角度违反规则)。(6)在确知已划分的等价类中各元素在程序处理中的方式是不同的,则应将等价类进一步划分成更小的等价类。例如,假设有效等价类是:以字母开头的元素的集合,而在该集合中,有些是程序规定的关键字,如:int、float、long、char,等,则此时可将该等价类划分成两个等价类,等价类1是关键字集合 int、float、long、char,等价类2是以字母开头的、且不在等价类1的元素的集合。3如何确定测试用例(1)设计一个测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类。重复这一步骤,直到所有的等价类都被覆盖为止。(2)设计一个无效等价类,使其只覆盖一个无效等价类。重复这一步骤,直到所有的无效等价类都被覆盖为止。每次覆盖尽可能多的有效等价类,是因为每个有效等价类中的元素对错误检测的效果是一样的,越少越省事,但效果是相同的。而每次只覆盖一个无效等价类,是因为如果一个测试用例可以检测多个错误,则如果是覆盖多个无效等价类,则有可能只检测一个而忽略其它的错误。例如等价类1是科技书的集合,等价类2是10x50,则无效等价类1是非科技书的集合、无效等价类2是 x10、无效等价类2是50x,如果选择的覆盖无效等价类的测试用例是小说5,则可能只发现书类型的错误而忽略了册数错误。4应用举例【例3.1】 对【例2.19】给出的判断三角形类型的程序,根据题意,设计的有效等价类和无效等价类如表3.1所示。表3.1 【例3.1】的等价类有效等价类编号无效等价类编号输入条件输入三个数整数1一边为非整数a为非整数b为非整数c为非整数12131415161718两边为非整数a,b为非整数b,c为非整数c,a为非整数三边为非整数a,b,c为非整数三个数2只给一边只给a只给b只给c19202122232425只给两边只给a,b只给b,c只给c,a给出三边以上非零数3一边为0a=0b=0c=0262728两边为0a=b=0b=c=0c=a=0293031三边为0a=b=c=032正数4一边0a0b0c033343536373839两边0a0,b0b0,c0c0,a0三边0a0,b0,ccb+caa+cb5a+bca+b=c4041424344456b+cab+c=a7c+ccb=c 且b+cac=a 且a+cb8910构成等边三角形a=b=c11(1)覆盖有效等价类的测试用例。如表3.2所示。 表3.2 覆盖有效等价类的测试用例a b c覆盖的等价类号码3 4 54 4 54 5 55 4 44 4 41717,817,917,1017,11(2)覆盖无效等价类的测试用例。如表3.3所示。表3.3 覆盖无效等价类的测试用例a b c覆盖的等价类号码a b c覆盖的等价类号码2.5 4 53 4.5 53 4 4.51213140 0 53 0 00 4 00 0 0293031323.5 4.5 53 4.5 5.53.5 4 5.55.5 4.5 5.515161718-3 4 53 -4 53 4 -53334353 4 5192021-3 -4 5-3 4 -53 -4 -5-3 -4 -5363738393 44 5 53 4 5 6222324253 1 53 2 53 1 13 2 1404142430 4 53 0 53 4 02627281 4 23 4 14445【例3.2】 对一元二次方程ax2+bx+c=0的求根程序,应用等价类划分技术进行测试。根据题意,设计的有效等价类和无效等价类如表3.4所示。表3.4 【例3.2】的等价类有效等价类编号无效等价类编号输入条件输入三个数实数1一个为非实数a为非实数b为非实数c为非实数891011121314两个为非实数a,b为非实数b,c为非实数c,a为非实数三个为非实数a,b,c为非实数三个数2只给一个只给a只给b只给c15161718192021只给两个只给a,b只给b,c只给c,a给出三个以上一个不给22输出条件两个实根b2-4ac03一个实根b2-4ac=0a=0,b045两个虚根b2-4ac067无根a=0,b=0(1)覆盖有效等价类的测试用例。如表3.5所示。 表3.5 覆盖有效等价类的测试用例a b c覆盖的等价类号码2 6 52 4 20 5 50 0 41312,412,512,6(2)覆盖无效等价类的测试用例(x是一个字符),如表3.6所示。 表3.6 覆盖无效等价类的测试用例a b c覆盖的等价类号码a b c覆盖的等价类号码x 4 53 x 53 4 x891045 6151617x x 5x 4 x4 x xx x x111213144 5 5 65 64 5 6 718192021225.常见的等价类测试形式上述给出的等价类测试方法是最一般的形式。在实际使用等价类方法测试时,要考虑等价类测试的程度,不同的程度测试的效果是不同的。究竟选取那一种要根据具体的问题而定。(1) 弱等价类:是指选取的测试用例要覆盖每一个有效等价类。(2) 强等价类:是指每个有效等价类要选择至少一个测试用例。(3) 弱健壮等价类:是指选取的测试用例要覆盖每一个有效等价类和无效等价类,但不能同时覆盖两个无效等价类。(4) 强健壮等价类:每个有效等价类和无效等价类都至少要选择一个测试用例。【例3.3】假设ax1d,划分三个等价类区间:a,b),b,c),c,d。ex2g, 划分两个等价类区间:e,f,f,g。则用弱等价类选取测试用例如图3.1所示( 表示在此区域内选择测试用例)。用强等价类选取测试用例如图3.2所示。用弱健壮等价类选取测试用例如图3.3所示。用强健壮等价类选取测试用例如图3.4所示。6等价类测试的指导方针使用等价类划分测试时,应注意下列几个问题:(1)如果实现的语言是强类型语言(无效值输入会引起系统运行时出错),则没有必要使用健壮等价类测试。(2)如果错误输入检查非常重要,则应进行强健壮等价类测试。(3)如果输入数据以离散区间或集合的形式定义,则等价类测试是合适的,当然也适用于变量值越界会造成故障的系统。(4)在发现合适的等价关系之前,可能需要多次尝试。如果不能肯定存在明显或自然的等价关系,最好对任何合理的实现进行再次预测。【例3.4】作者参与鉴定的两个大型工程应用软件采用等价类测试的效果。(1)软件I包括两个子系统,每个子系统包括四模块,软件交付后,由于使用过程中出现问题,该软件交付第三方测试。根据软件的特点,测试过程中分别采用等价类测试技术,共产生169个测试用例,共检测出23个严重和比较严重的错误,纠正了这些错误之后,软件执行了三次重大任务尚没出现问题。(2)软件II包括五个子系统,软件在交付用户前由第三方实施测试,根据该软件的特点采用等价类测试技术。每个子系统的测试结果为: 子系统1:设计测试用例52个,测试发现12个错误。 子系统2:设计测试用例37个,测试发现13个错误。 子系统3:设计测试用例128个,测试发现8个错误。 子系统4:设计测试用例84个,测试发现14个错误。 子系统5:设计测试用例118个,测试发现3个错误。在修改了发现的错误后,该系统多次应用于重大任务,尚无发现问题。32 因果图法如果程序的输入之间没有什么关系,采用等价类划分法是一种比较有效的方法。但如果输入之间有关系,例如约束关系、组合关系等,则采用等价类划分法是难以描述的,测试效果也难以保障。因果图法正是在此背景下提出来的。1因果图的概念(1)原因结果图:这是描述输入输出之间关系的因果图,共有四类图形,如图3.5所示。图中输入状态ci表示原因,输出状态ei表示结果。ci和ei均可取值0或1,0表示状态不出现,1表示状态出现。(2)约束图:在实际问题中,输入状态之间还可能存在某些依赖关系,称之为约束。例如,某些输入条件不可能同时出现。这些关系,对测试来说是非常重要的。多个输出之间可能有强制的约束关系,如图3.6所示。各个符号的意义为: E(Exclusive,异或):表示只能1个为1; I(Inclusive,包含):表示至少1个为1; O(One and Only,唯一):只有一个为1; R(Require,包含):表示a是1,则b必须是1; M(Masks,屏蔽):表示a是1,则b必须是0。2测试用例的生成步骤(1) 根据SRS,把程序划分成可以工作的片段;(2) 确定规格中的原因和结果;(3) 分析规格,以确定原因和结果之间的逻辑关系,并用因果图的方式表示出来;(4) 确定因果图中的各个约束;(5) 将因果图转化为判定表;(6) 从判定表中产生测试用例。3应用举例【例3.5】 某个软件规格说明书中规定:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不正确,则给出信息M。原因:1第一列字符是A;2第一列字符是B;3第二列字符是一数字。结果:21修改文件;22给出信息L;23给出信息M。分析可知,输入的三个状态只有六种取值。因为状态1和2不能同时为1,为此,可以形成表如3.7所示: 表3.7 判定表及测试用例123456原因111000020011003101010结果210000112210100023010101测试用例A3AMB5BNC2DYA5A7B4B!X6P;上述给出的表格也称判定表,在本章中将有详细介绍。从本例中可以看出,通过因果图和判定表,可以非常容易的找出测试用例。【例3.6】 FORTRAN语言的语法规定是非常严格的。在一个程序行中,第15列是标号区,第6列是续行区。如果前6列是空白,则执行动作A。如果15列有标号且是正确的标号,则执行动作B后再执行动作A,反之,若是错误的标号,则执行动作C。如果第6列不是空白且是字母C,则执行动作D后再执行A,反之,执行动作C。原因:1前6列是空白; 2前6列不是空白;315列是正确的标号;4第6列是字母C。结果:A正确执行;B处理标号;C错误处理;D处理续行。根据图3.8,可以列出表3.8。 表3.8 判定表及测试用例134 原因110030104001结果A111B010C011D001测试用例15列第 6列15列第 6列15列第 6列空白空白xyz123空白空白空白空白C?33 判定表法判定表的作用在上一节中已经介绍,实际上,判定表并不是因果图法的一个辅助工具,在一个程序中,如果输入输出比较多,输入之间、输出之间相互制约的条件比较多,在这种情况下应用判定表是更合适的,它可以更清楚的表达它们之间的各种复杂关系。1判定表的概念判定表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来形成的表格称为判定表。【例3.7】 可以把本书的阅读指南形成一个判定表。条件:会编程序吗? 熟悉软件工程吗? 对书中的内容感兴趣吗? 能看懂吗?动作:学习C语言; 学习软件工程; 继续阅读; 放弃学习。这里,输入有4个,共有24=16种组合。在表的条件中,用Y表示肯定、N否定,用-表示无关项。在动作中,用表示完成相应的动作,用空白表示没有动作。如表3.9所示。 表3.9 【例3.7】的判定表12345678910111213141516条件会编程序吗?NNNNNNNNYYYYYYYY熟悉软件工程吗?NNNNYYYYNNNNYYYY对书中的内容感兴趣吗?NNYYNNYYNNYYNNYY能看懂吗?NYNYNYNYNYNYNYNY动作学习C语言 学习软件工程继续阅读放弃学习2判定表的化简对于n个条件的判定表,对应的状态有2n个,但n比较大时,这是非常繁琐的。实际上,正如表3.9所给出的,有些项是可以简化的。判定表的化简包括下列两个方面:(1)合并:如果一个条件项(表中一列中的条件值)和另外一个条件项所产生的动作是相同的、且两个条件项对应的每一行的值只有一个是不同的,则可以将其合并。合并的项除了不同值变成无关项外,其余的保持不变。(2)包含:如果两个条件项的动作是相同的,对任意条件1中任意一个值和条件2中对应的值,如果满足:1)如果条件1的值是Y,则条件2中的值也是Y。如果条件1的值是N,则条件2中的值也是N。2)如果条件1的值是-,则条件2中的值是Y、N、-。则称条件1包含条件2。此时,条件2可以散去。重复1)和2)即可得到精简的判定表。实际上。判定表的化简和BOOLEAN表达式的化简是基本是一样的。【例3.8】 在表3.9中,经合并化简后如表3.10所示。 表3.10 【例3.7】的化简判定表123456789包括原来的列152436878911101213141516条件会编程序吗?NNNNNYYYY熟悉软件工程吗?-NNYYNNYY对书中的内容感兴趣吗?N-Y-Y-NY能看懂吗?NYNY-NY-动作学习C语言学习软件工程继续阅读放弃学习3选择测试用例这部分工作是十分简单的,在简化的或最后的判定表给出之后,只要选择适当的输入,使判定表每一列的输入条件值都得到满足亦可。4方法评述(1)对于没有实现的功能、或功能上有明显错误的程序,用等价类、因果图和判定表等测试方法是比较有效的。例如在【例3.2】中,如果程序中没有对a=0这种情况进行处理,用该方法是很容易检测出来的。因此,该技术可用于软件的验收测试之中。(2)如果程序比较大,或涉及的变量、或功能比较多,用这种方法需要花费大量的人工时间。上述例子可以看出,这种方法是难以自动化的,完全是靠人的智慧。因此,它也要求测试人员必须具备相当的水平。(3)黑盒测试共同的特点是对程序的一些“小”错误,例如关系运算符漂移:变成、或反之等,此类;此类错误的检测是比较困难的。34 边界值测试方法任何一个程序都可以看作是一个函数,程序的输入构成函数的定义域,程序的输出构成函数的值域。人们从长期的测试工作经验得知,大量的软件故障往往发生在定义域或输出域的边界上,而不是在其内部。美国陆军(CECCOM)对其软件进行了研究,惊奇地发现,大量缺陷都是和边界有关的缺陷。1 边界条件边界条件是一些特殊情况。一般来说,在条件C下,软件执行一种操作,对给任意小的值d,C+d就会执行另外的操作,则C就是一个边界。对给定的软件,有显式给出边界的,也有隐式给出的。但对任何软件来说,根据软件的SRS或根据源代码,都可以给出该软件的边界。2 边界值分析测试为便于理解,这里讨论一个有两个变量x1和x2的程序P。假设输入变量x1和x2的在下列范围内取值。ax1b,cx2d。程序P的输入空间如图3.9所示。边界值测试的基本原理是故障往往出现在输入变量的边界值附近。例如“”错写成“”,计数器少记一次等。边界值分析基于在可靠性理论中称为“单故障”的假设,也就是说,软件的失效是由单故障引起的。边界值分析利用输入变量的最小值(min)、稍大于最小值(min+)、域内任意值(nom)、稍小于最小值(max-)、最大值(max)来设计测试用例。图3.9给出的例子的边界值分析测试用例为:,对于一个含有n个变量的程序,保留其中一个变量,让其余变量取正常值,这个被保留的变量依次取值min,min+,nom,max-和max,对每个变量重复进行,则边界值分析会产生4n+1个测试用例。3 边界值分析的健壮性测试健壮性测试是边界值分析测试的一种扩展,变量除了考虑min,min+,nom,max-和max外,还要考虑min-和max+,如图3.11所示。【例3.9】 三角形问题的边界值分析测试用例设计。假设边长为整数,边长下界为1,上界为100。表3.11给出了其边界值分析测试用例。表3.11 边界值分析测试用例测试用例abc预期输出Test1Test2Test3Test4Test550505050505050505050135099100等腰三角形等腰三角形等腰三角形等腰三角形非三角形Test6Test7Test8Test950505050129910050505050等腰三角形等腰三角形等腰三角形非三角形Test10Test11Test12Test1312991005050505050505050等腰三角形等腰三角形等腰三角形非三角形【例3.10】某人事管理系统包括的内容是:姓名、性别、籍贯、出生日期、学历、身高、德才表现等。采用边值测试技术如表3.12所示。表3.12 边界值分析测试用例输入项描述边值姓名20个字符0个字符、1个字符、20个字符、21个字符性别1个字符0个字符、1个字符、2个字符籍贯20个字符0个字符、1个字符、20个字符、21个字符出生日期年4位数0位数、1位数、4位数、5位数月120、1、12、13日310、1、31、32学历2个字符0个字符、1个字符、2个字符、3个字符身高三位数0位数、1位数、3位数、4位数德才表现2000个字符0个字符、1个字符、2000个字符、2001个字符根据边值的分析,可以很容易的产生测试用例。读者可以自行练习。35 正交实验设计法利用等价类划分法、因果图法和判定表法对软件进行测试时,即使对中小规模的软件,给出的等价类、因果图、判定表可能都比较庞大,测试用例的数目惊人,给软件测试工作带来沉重的负担。为有效合理地减少测试的代价,可以利用在生产活动中行之有效的正交实验设计法进行测试用例的设计。所谓正交实验设计法,是从大量的实验点中挑选适量的、有代表性的点,应用伽罗瓦(Galois)理论导出的“正交表”,合理地安排实验的一种科学的实验设计方法。利用这种方法,可使所有的因子和水平在实验中均匀地分配与搭配,有规律的变化。在正交实验设计法中,通常把判断实验结果优劣的标准叫做实验的指标,把有可能影响实验指标的条件称为因子,而影响实验因子的称为因子的水平(或状态)。在进行实验优化设计时,为了完成明确的实验目的,必须有合理的实验指标,加上合理的基准来挑选实验因子及相应的水平。1 提取软件的因子和水平的方法利用正交实验设计法来设计软件的测试用例时,首先要从软件的规格说明书找出其影响其功能实现的操作对象和外部因素,把它们当作因子,而把各个因子的取值当作状态,据此可以造出二元的因素分析表。然后,利用正交表进行各因子的状态组合,构造出有效的测试用例,这样得出的测试用例集中,测试用例的数目会大大减少。提取因子的方法是:需要对软件规格说明书中的功能进行划分,把整体概要性的功能进行层层分解,形成具体的、相对独立的基本功能集、或因子集,同时要确定各个因子的权值。然后,由用户会同测试人员根据软件规格说明书,确定各个因子的取值,即因子的状态。由于有些因子的取值范围较广,必须进行采样取值,在各个不同的取值区间上取典型值与边界值,并重点选取某些有特定意义的取值点。2 因素分析表的生成设S是被测软件,F1,F2,Fn是S提取的功能因子,由前趣的分析可知,如果n比较大,生成的测试数目会太多。由于每个因子及其状态在S中所起的作用可能大不一样,因此必须对众多的因子及其状态加以选择。方法是:可根据各个因子及其状态作用的大小、出现频率的大小以及测试的需要,确定权值的大小。必要时,可以删除一部分权值较小,或者说重要性较小的因子或状态,使最后生成的测试用例的数目控制在允许的范围之内。在不同测试阶段,对因子及状态的权值会有不同的要求。例如,初次测试时,可以根据被测模块的大小,确定是否有必要进行加权,在进行子系统测试时,由于被测对象的规模肯定要发生变化,因此因子及状态也要随着发生变化。在确定了各个因子及状态的权值之后,可按下列方法进行加权筛选。设Fi的权值为wi,令g i是F i在总因子中所占的比例,则:接着选择筛选标准。可以采用作为权值标准。当 时,则删掉该因子或状态,否则予以保留。如果剩余的因子或状态仍然很多,则可以对剩余的因子或状态重新选择筛选标准,并重复上述步骤,直到满足要求为止。【例3.11】 对某个数据库管理系统,其因子状态表如表3.13所示。表3.13 【例3.11】的因子状态表因子状态ABCDEF系统管理数据编辑数据管理数据统计报表窗口管理123456权限设置系统维护插入记录更新记录删除记录插入字段更新字段删除字段数据备份数据校验查询求和求均值求方差总体报表部分报表最大化最少化恢复多窗口经过加权筛选,得到精简的因子状态表如表3.14所示。表3.14 【例3.11】精简的因子状态表 因子状态ABCD系统管理数据编辑数据管理数据统计123权限设置系统维护插入记录删除记录删除字段数据备份数据校验查询求和 3构造正交表正交表的推导过程是依据近世代数中的伽罗瓦理论,可以从一般的数理统计书中查到表3.15的正交表。表中的每一列表示一个因子,每一行表示一个项目,正交表的生成规律是:1)项目数=2因子数。2)设因子数为m: 当m=2i-1时,项目数为2i-1(i2); 当2i-1-10,xj=0; xi0,xj=0; xi0,0xj0,xj= xi; xi0,xj xi; xi=0,xj0.(3) 对yi的各类取值都要至少验证一次【例3.15】 假设模块root(a,b,c,x1,x2)是一元二次方程求根函数,a,b,c是输入变量,x1,x2是输出变量。其规格说明书中规定:Da=Db=Dc=Dx1=Dx2=-,),方程的解分别为两个不等实根、一个实根、两个相等的实根、两个虚根、无根。根据规格说明书,Vi=两个不等实根、一个实根、两个相等的实根、两个虚根、无根可以给出下列测试用例: a=1,b=-3,c=1:两个不等实根 a=0,b=-3,c=1:一个实根 a=1,b=-2,c=1:两个相等实根 a=3,b=-2,c=1:两个虚根 a=0,b=0,c0:无根(4)xi是数字型数组变量:一个n维数组可以分解为n个一维数组,对于长度为m的一维数组,可以分解为m个变量,对于单个数组变量,可以采用上面介绍的几种方法来测试。而对于一个一维数组arraymin,max本身而言,至少要取三个测试点,即arraymin、 arraymax arrayminxj)then T=TRUE; else T=FALSE;while T do i=i-1; j=j+1; if(i=j) then T=FALSE;W.E.Howden曾对某些程序进行了测试,给出了下列实验数据,如表3.19所示。表3.19:W.E.Howden给出的实验数据测试方法实际故障数目被检测的故障数目普通功能测试1420粗略计算设计函数的功能测试79详细设计函数的功能测试79控制设计函数的功能测试35分支覆盖测试1013路径覆盖测试337 随机测试随机测试是测试理论的重要组成部分,在VLSI测试、软件测试中有广泛的应用。一般情况下,在被测系统比较复杂、其它测试方法测试效率不高的情况下,随机测试都得到了广泛的应用。采用随机测试技术,可以有效的对系统的可靠性进行综合评估。随机测试并不是黑盒测试所独有的,也可以用于白盒测试之中。就随机功能测试而言,由于随机测试并不需要源代码,且本文在这里引入随机测试的目的是想和前面所介绍的各种黑盒测试方法相比较。371随机测试的概念定义3.4:随机测试。对给定的被测系统和系统的定义域,按照定义域中样本取值的概率,随机的选择其样本并作为其测试数据的过程称为随机测试。根据定义3.4,随机测试涉及三个概念:一是定义域,二是定义域中数据取值的概率分布,三是样本选择。就软件测试而言,定义域可以从规格说明书中提出,定义域中数据取值的概率分布是软件可靠性评估的一个重要概念,将第八章中叙述,这里不做详细论述。目前常用的分布有:用户实际使用的概率分布,均匀分布、正态分布等。按照样本选择数据的方式不同,有可以有下列几种随机测试技术。定义3.5:可替代的随机测试技术。后面的样本可以和前面的样本相同,称为可替代的随机测试技术,简称随机测试技术。定义3.6:不可替代的随机测试技术。后面的样本必须和前面的样本不同,称为不可替代的随机测试技术,简称伪随机测试技术。定义3.7:反随机测试技术。第一个数据是随机给出的,后面新增加的数据要和前面已存在数据的笛卡儿(Cartesian)距离、或汉明(Hamming)距离最大,这种产生数据的过程称为反随机测试技术。 定义3.8:汉明距离(HD):两个二进制向量ti= (a0,a1,aN),tj= (b0,b1,bN),它们的HD被定义为:定义3.9:笛卡儿距离(CD):两个二进制向量ti= (a0,a1,aN),tj= (b0,b1,bN),它们的CD被定义为: 若ti、tj是实数空间的向量,则它们的CD被定义为: 定义3.10:总汉明距离(THD):对任一向量ti,则ti和已存在的向量为t1,t2,ti-1总的汉明距离为: 定义3.11:总笛卡儿距离(CHD):对任一向量ti,则ti和已存在的向量为t1,t2,ti-1总的笛卡儿距离为: 定义3.12:非随机测试的最大距离序列(MDATS),MDATS是一个测试序列ti,每个ti和t1,t2,ti-1的THD和 CHD最大。即: 反随机测试是这几年出现的一个新概念,目前对其测试效果在理论上缺乏评估模型,应用缺乏大量实验数据的支持。不过,直观上看,反随机测试技术一般不会比随机测试和伪随机测试的效果要差。如果测试数据比较多,伪随机测试和随机测试在理论上并没有本质的差别。因此,在下面的论述中,主要集中在随机测试技术的理论与应用上。图3.16是随机测试效果的一个非常典型的曲线,虽然上述给出的数据是偶然的,但这个曲线却具有一般性。也就是说,对一般的系统,用比较少的测试数据可以很快检测40%70%(当然这个数字随具体的系统而定)左右的错误,再往上增加覆盖率,测试长度会大幅度的增加。这个结论也可以从理论上推倒出来。372 随机测试与划分测试的比较严格的说,前面给出的等价类划分法、因果图法、边值分析法等黑盒测试技术都是划分测试,它们共同的特点是将定义域划分成多个子域,并从每个子域中选择一个或多个测试用例。因此,从这种意义讲,功能测试或者黑盒测试都是划分测试。下面论述划分测试和随机测试的效果比较
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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