资源描述:
《第二章 软件测试方法ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2.4白盒测试第二章软件测试方法白盒测试(White-boxTesting)也称作结构测试或逻辑驱动测试,它是知道产品的内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行。按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能。白盒测试的主要方法有逻辑覆盖、基本路径测试等,主要用于软件验证。2.4白盒测试第二章软件测试方法通常的程序结构覆盖有:语句覆盖;判断覆盖;条件覆盖;判断/条件覆盖;条件组合覆盖;路径覆盖。2.4白盒测试第二章软件测试方法语句覆
2、盖是最常见也是最弱的逻辑覆盖准则,它要求设计若干个测试用例,使被测程序的每个语句都至少被执行一次。判定覆盖或分支覆盖则要求设计若干个测试用例,使被测程序的每个判定的真、假分支都至少被执行一次。但判定含有多个条件时,可以要求设计若干个测试用例,使被测程序的每个条件的真、假分支都至少被执行一次,即条件覆盖。在考虑对程序路径进行全面检验时,即可使用条件覆盖准则。虽然结构测试提供了评价测试的逻辑覆盖准则,但结构测试是不完全的。如果程序结构本身存在问题,比如程序逻辑错或者遗漏了规格说明书中已规定的功能,那么,无论哪种结
3、构测试,即使其覆盖率达到了百分之百,也是检查不出来的。因此,提高结构测试的覆盖率,可以增强对被测软件的信度,但并不能做到万无一失。2.4.1逻辑覆盖测试第二章软件测试方法白盒测试技术的常见方法之一就是覆盖测试,它是利用程序的逻辑结构设计相应的测试用例。测试人员要深入了解被测程序的逻辑结构特点,完全掌握源代码的流程,才能设计出恰当的用例。根据不同的测试要求,覆盖测试可以分为语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖和路径覆盖。下面是一段简单的C语言程序,作为公共程序段来说明五种覆盖测试的各自特点
4、。程序2-1:1If(x>100&&y>500)then2score=score+13If(x>=1000
5、
6、z>5000)then4score=score+5逻辑运算符“&&”表示“与”的关系,逻辑运算符“
7、
8、”表示“或”的关系。其程序控制流图如图2-8所示。2.4.1逻辑覆盖测试第二章软件测试方法图2-8程序流程图2.4.1逻辑覆盖测试第二章软件测试方法语句覆盖语句覆盖(StatementCoverage)是指设计若干个测试用例,程序运行时每个可执行语句至少被执行一次。在保证完成要求的情况下,测试用例的数
9、目越少越好。以下是针对公共程序段设计的两个测试用例,称为测试用例组1。TestCase1:x=2000,y=600,z=6000TestCase2:x=900,y=600,z=5000如表2-16所示,采用TestCase1作为测试用例,则程序按路径a,c,e顺序执行,程序中的4个语句都被执行一次,符合语句覆盖的要求。采用TestCase2作为测试用例,则程序按路径a,c,d顺序执行,程序中的语句4没有执行到,所以没有达到语句覆盖的要求。2.4.1逻辑覆盖测试第二章软件测试方法测试用例x,y,z(x>100)
10、and(y>500)(x>=1000)or(z>5000)执行路径TestCase12000,600,6000TrueTrueaceTestCase2900,600,5000TrueFalseacd表2-16测试用例组12.4.1逻辑覆盖测试第二章软件测试方法从表面上看,语句覆盖用例测试了程序中的每一个语句行,好像对程序覆盖得很全面,但实际上语句覆盖测试是最弱的逻辑覆盖方法。例如,第一个判断的逻辑运算符“&&”错误写成“
11、
12、”,或者第二个判断的逻辑运算符“
13、
14、”错误地写成“&&”,这时如果采用TestCase
15、1测试用例是检验不出程序中的判断逻辑错误的。如果语句3“If(x>=1000
16、
17、z>5000)then”错误写成“If(x>=1500
18、
19、z>5000)then”,TestCase1同样无法发现错误之处。根据上述分析可知,语句覆盖测试只是表面上的覆盖程序流程,没有针对源程序各个语句间的内在关系,设计更为细致的测试用例。2.4.1逻辑覆盖测试第二章软件测试方法判断覆盖判断覆盖(BranchCoverage)是指设计若干个测试用例,执行被测试程序时,程序中每个判断条件的真值分支和假值分支至少被执行一遍。在保证完成
20、要求的情况下,测试用例的数目越少越好。判断覆盖又称为分支覆盖。测试用例组2:TestCase1:x=2000,y=600,z=6000TestCase3:x=50,y=600,z=2000如表2-17所示,采用TestCase1作为测试用例,程序按路径a,c,e顺序执行;采用TestCase3作为测试用例,程序按路径a,b,d顺序执行。所以采用这一组测试用例,公共程序段的4个判断分支b,c,d,e都