您好,欢迎访问三七文档
白盒测试(White-boxTesting)中科大软件学院白盒测试的主要目的•保证一个模块中的所有独立路径至少被执行一次;•对所有的逻辑值均需要测试真、假两个分支;•在上下边界及可操作范围内运行所有循环;•检查内部数据结构以确保其有效性。•基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。•应用白盒法,必须有程序的规格说明以及程序清单。•如上流程图,其中包括了一个执行达20次的循环。那么它所包含的不同执行路径数高达520条,若要对它进行穷举测试,覆盖所有的路径。假使测试程序对每一条路径进行测试需要1毫秒,同样假定一天工作24小时,一年工作365天,那么要想把如图所示的小程序的所有路径测试完,则需要3170年。白盒测试白盒测试白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计方法,它从程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。其中运用最为广泛的是基本路径测试法。逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖,发现错误的能力呈由弱至强的变化。白盒测试•语句覆盖:是一个较弱的测试标准,含义为:选择足够多的测试用例,使得程序中每个语句至少执行一次;•判定覆盖(也称为分支覆盖):执行足够的测试用例,使得程序中的每一个分支至少通过一次。•条件覆盖:执行足够的测试用例,使程序中的每个判断的每个条件的每个可能取值至少执行一次;•判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到的各种可能的值,并使每个分支取到各种可能的结果;•条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次;•基本路径测试方法:路径测试就是设计足够多的测试用例,覆盖被测试对象中的所有可能路径。逻辑覆盖法1、语句覆盖PROCEDUREM(VARA,B,X:REAL);BEGINIF(A1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:=X+1;END.例如选择输入数据为:A=2,B=0,X=3就可达到“语句覆盖”标准。XY路径15050OBDE29070OBCE缺点:由于这种测试方法仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。在本例中如去掉了语句1——T,那么就少了一条测试路径。在if结构中若源代码没有给出else后面的执行分支,那么语句覆盖测试就不会考虑这种情况。逻辑覆盖法判定覆盖2、判定覆盖A=3,B=0,X=1(沿路径acd执行)A=2,B=1,X=3(沿路径abe执行)缺点:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。逻辑覆盖法•3、条件覆盖•程序有四个条件:A>1、B=0、A=2、X>1为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有:A>1、A≤1、B=0、B≠0等各种结果出现,以及在b点有:A=2、A≠2、X>1、X≤1等各种结果出现。现在只需设计以下两个测试用例就可满足这一标准:①A=2,B=0,X=4(沿路径ace执行);②A=1,B=1,X=1(沿路径abd执行)。PROCEDUREM(VARA,B,X:REAL);BEGINIF(A1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:=X+1;END.逻辑覆盖法条件覆盖A=2,B=0,X=4(沿路径ace执行)A=1,B=1,X=1(沿路径abd执行)缺点:要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。逻辑覆盖法•4、组合覆盖•再看例1的程序,需要选择适当的例子,使得下面8种条件组合都能够出现:1)A1,B=02)A1,B≠03)A≤1,B=04)A≤1,B≠05)A=2,X16)A=2,X≤17)A≠2,X18)A≠2,X≤15)、6)、7)、8)四种情况是第二个IF语句的条件组合。PROCEDUREM(VARA,B,X:REAL);BEGINIF(A1)AND(B=0)THENX:=X/A;IF(A=2)OR(X1)THENX:=X+1;END.逻辑覆盖法•4、组合覆盖下面设计的四个例子可以使上述8种条件组合至少出现一次:①A=2,B=0,X=4使1)、5)两种情况出现;②A=2,B=1,X=1使2)、6)两种情况出现;③A=1,B=0,X=2使3)、7)两种情况出现;④A=1,B=1,X=1使4)、8)两种情况出现。上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路径,例如路径acd就没有执行,因此,条件组合覆盖标准仍然是不彻底。逻辑覆盖法•5、路径覆盖•1)主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。•2)用例设计:测试用例通过路径A=2、B=0、X=3aceA=1、B=0、X=1abdA=2、B=1、X=1abeA=3、B=0、X=1acd逻辑覆盖法•5、路径覆盖•优点:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。•缺点:由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。而在有些情况下,一些执行路径是不可能被执行的,如:If(!A)B++;•If(!A)D--;•这两个语句实际只包括了2条执行路径,即A为真或假时候对B和D的处理,真或假不可能都存在,而路径覆盖测试则认为是包含了真与假的4条执行路径。这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错带来麻烦。基本路径测试方法基本路径测试法是在程序控制流图的基础上,通过分析环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。基本路径测试方法包括4个步骤:•1.画出程序的控制流图:描述程序控制流的一种图示方法。•2.计算程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,得出覆盖所有程序语句所需的测试设计数量的上界。•3.导出测试用例:根据圈复杂度和程序结构设计测试用例。•4.准备测试用例:确保基本路径集中的每一条路径的执行。基本路径测试方法•流图•流图,一种简单的控制流表示方法,是对待测试程序过程处理的一种表示,是对程序流程图简化后得到的,它可更加突出表示程序控制流的结构。•流图使用下面的符号描述逻辑控制流,每一种结构化构成元素有一个相应的流图符号。基本路径测试法基本路径测试法1publicintsort(intwhileNo,inttp){inta=0;intb=0;4while(whileNo--0){6if(tp==0)7{a=b+2;break;}else{8if(tp==1){10a=b+10;}else{11a=b+20;}}13}14returna;}基本路径测试法基本路径测试法基本路径测试法基本路径测试法基本路径测试法路径1:4-14路径2:4-6-7-14路径3:4-6-8-10-13-4-14路径4:4-6-8-11-13-4-14基本路径测试法路径1:4-14输入数据:whileNo=0,或者whileNo0的某一个值预期结果:a=0路径2:4-6-7-14输入数据:whileNo=1,tp=0预期结果:a=2路径3:4-6-8-10-13-4-14输入数据:whileNo=1,tp=1预期结果:a=10路径4:4-6-8-11-13-4-14输入数据:whileNo=1,tp=2预期结果:a=20实验内容2人组成一组,各自编写“人民币数字大写转换”程序。具体需求如下:1)中文大写金额数字应用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等字样。2)中文大写金额数字到元为止的,在元之后,应写整(或正)字,在角之后,可以不写整(或正)字。3)中文大写金额数字前应标明人民币字样,大写金额数字有分的,分后面不写整(或正)字。4)大写金额数字应紧接人民币字样填写,不得留有空白。5)阿拉伯数字小写金额数字中有0时,中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。实验内容举例如下:1、阿拉伯数字中间有0时,中文大写要写零字,如¥1409.50,应写成:人民币壹仟肆佰零玖元伍角。2、阿拉伯数字中间连续有几个0时,中文大写金额中间只写一个零字,如¥6007.14,应写成:人民币陆仟零柒元壹角肆分。3、阿拉伯金额数字万位和元位是0,或者数字中间连续有几个0,万位、元位也是0,但千位、角位不是0时,中文大写金额中只写一个零字,也可以不写零字。如¥1680.32,应写成:人民币壹仟陆佰捌拾元叁角贰分,又如¥107000.53,应写成:人民币壹拾万零柒仟元伍角叁分。4、阿拉伯金额数字角位是0,而分位不是0时,中文大写金额元后面应写零字。如¥16409.02,应写成人民币:壹万陆仟肆佰零玖元零贰分;又如¥325.04,应写成人民币叁佰贰拾伍元零肆分。实验报告•实验报告提交至教辅系统。•在实验报告中,给出测试设计、测试用例、测试结果,编写符合GB/T8567-2006规范的测试文档。•以exp2_学号.doc进行命名,如exp2_SA14226101.doc•实验报告提交截止时间:2014.4.412:00AM
本文标题:实验二白盒测试.
链接地址:https://www.777doc.com/doc-2458796 .html