第四章 白盒测试与黑盒测试.pptVIP

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 白盒和黑盒测试方法 本章主讲内容 白盒测试方法 语句覆盖; 分支覆盖; 条件测试; 分支条件测试; 分支条件组合测试; 条件确定测试 路径覆盖 问题概述 白盒测试方法 1.回顾一下单元测试主要用的是白盒测试方法。 那什么是白盒测试?为什么要用白盒测试? 2.白盒测试包括哪些方法? 3. 详细讲解各个方法! 覆盖 如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题就简单了。然而,事实上一个bug 常常是由多个因素共同导致的,如下图所示。 白盒测试技术的常见方法之一就是覆盖测试,它是利用程序的逻辑结构设计相应的测试用例。测试人员要深入了解被测程序的逻辑结构特点,完全掌握源代码的流程,才能设计出恰当的用例。根据不同的测试要求,覆盖测试可以分为语句覆盖、分支覆盖、条件覆盖、分支条件测试、条件组合测试和路径覆盖。 下面是一段简单的C语言程序,作为公共程序段来说明五种覆盖测试的各自特点。 程序: 1 If (x100 y500) then 2 score=score+1 3 If (x=1000|| z5000) then 4 score=score+5 逻辑运算符“”表示“与”的关系,逻辑运算符“||”表示“或”的关系。其程序控制流图如图所示。 覆盖 如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题就简单了。然而,事实上一个bug 常常是由多个因素共同导致的,如下图所示。 语句覆盖 1.什么是语句覆盖? 语句覆盖(Statement Coverage)是指设计若干个测试用例,程序运行时每个可执行语句至少被执行一次。在保证完成要求的情况下,测试用例的数目越少越好。 以下是针对公共程序段设计的两个测试用例,称为测试用例组1。 Test Case 1:x=2000,y=600,z=6000 Test Case 2:x=900,y=600,z=5000 如表1所示,采用Test Case 1作为测试用例,则程序按路径a,c,e顺序执行,程序中的4个语句都被执行一次,符合语句覆盖的要求。采用Test Case 2作为测试用例,则程序按路径a,c,d顺序执行,程序中的语句4没有执行到,所以没有达到语句覆盖的要求。 语句覆盖 表1 测试用例组1 测试用例 x,y,z (x100)and (y500) (x=1000)or (z5000) 执行路径 Test Case 1 2000,600,6000 True True ace Test Case 2 900,600,5000 True False acd 语句覆盖 从表面上看,语句覆盖用例测试了程序中的每一个语句行,好像对程序覆盖得很全面,但实际上语句覆盖测试是最弱的逻辑覆盖方法。例如,第一个判断的逻辑运算符“”错误写成“||”,或者第二个判断的逻辑运算符“||”错误地写成“”,这时如果采用Test Case 1测试用例是检验不出程序中的判断逻辑错误的。如果语句3“If (x=1000|| z5000) then”错误写成“If (x=1500|| z5000) then”,Test Case 1同样无法发现错误之处。 根据上述分析可知,语句覆盖测试只是表面上的覆盖程序流程,没有针对源程序各个语句间的内在关系,设计更为细致的测试用例。 语句覆盖实例练习 public void function(int a, int b, int c){ if((a1)(b==0)){ c=c/a; } if((a==5)||(c1)){ c=c+1; } c=a+b+c; } 分析步骤? 分析步骤是? 分支覆盖 分支覆盖 分支覆盖(Branch Coverage)是指设计若干个测试用例,执行被测试程序时,程序中每个判断条件的真值分支和假值分支至少被执行一遍。在保证完成要求的情况下,测试用例的数目越少越好。分支覆盖又称为判断覆盖。 测试用例组2: Test Case 1:x=2000,y=600,z=6000 Test Case 3:x=50,y=600,z=2000 如表2所示,采用Test Case 1作为测试用例,程序按路径a,c,e顺序执行;采用Test Case 3作为测试用例,程序按路径a,b,d顺序执行。所以采用这一组测试用例,公共程序段的4个判断分支b,c,d,e都被覆盖到了。 分支覆盖 表2测试用例组2 测试用例 x,y,z (x100)and (y500) (x=1000)or (z5000) 执行路径 Test Case 1 2000,600,6000 True True ace Test Case 3 50,600,2000 False False abd 分支覆盖 测试用例组3: Test Case 4:x=2000

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档