网站大量收购闲置独家精品文档,联系QQ:2885784924

白盒与黑盒测试的测试用例设计..doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
白盒与黑盒测试的测试用例设计.

第5章 白盒与黑盒测试的测试用例设计 5.1 覆盖率的概念 覆盖率是用来度量测试完整性的一个手段 逻辑覆盖和功能覆盖 覆盖率=(至少被执行一次的item数)/item总数 5.2 白盒测试的测试用例设计 5.2.1逻辑覆盖 逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计技术,属白盒测试。为了衡量测试的覆盖程度,需要建立一些作为测试彻底度的定量衡量标准。目前常用的覆盖标准是: 语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;路径覆盖 一、语句覆盖 语句覆盖就是设计若干个测试用例,运行所测的程序,使得每一可执行语句至少执行一次。 二、判定覆盖 判定覆盖就是设计若干个测试用例,使程序中的每个判断至少出现一次“真值”和一次“假值”,即程序中的每个分支都至少执行一次。 三、条件覆盖 条件覆盖是指利用若干个测试用例,使被测试的程序中,对应每个判断中每个条件的所有可能情况均至少执行一次。 四、判定/条件覆盖 判定/条件覆盖就是设计足够多的测试用例,使得程序中每个判断条件的所有可能的结果至少取到一次,又使每次判断的每个分支至少通过一次。 五、条件组合覆盖 解决上述问题的新标准是条件组合覆盖。条件组合覆盖就是设计足够多的测试用例,使得每个判断的所有可能的条件取值组合至少执行一次。 六、逻辑覆盖举例 [例1]试用逻辑覆盖测试法为采用冒泡排序(bubble sorting)法进行数据排序的C程序设计测试用例。 本例是一个对k个整数进行升序排序的C程序,采用的算法是冒泡排序。基本步骤是: 从数组中取出第2个元素; 如果新取出的元素大于等于其前邻元素,则转向第(4)步; 如果新取出的元素小于其前邻元素,则与其前邻元素交换位置; 将新元素与新的前邻元素比较,若仍小于新的前邻元素,则重复第(3)步; 取下一个元素。如果数组中元素已取完则结束排序,否则转向第(2)步。 下面将给出本例的C程序。图2则是排序部分的流程图。 main() { int a[11],i,j,k,temp; scanf(“%d”,k); printf(“input numbers:\n”); for(i=1;i=k;i++) scanf(“%d”,a[i]); printf(“\n”); for(i=2;i=k;i++) { if(a[i]=a[i-1]) continue; for(j=i;j=2;j--) { if(a[j]=a[j-1] continue; temp=a[j];a[j]=a[j-1];a[j-1]=temp; } } printf(“the sorted numbers:\n”); for(i=1;i=10;i++) printf(“%d”,a[i]); } 设计方法: (1)采用语句覆盖设计测试用例 对本例稍作分析就不难发现,只要向数组输入先大后小两个数,程序执行时就可以遍历流程图的所有框。因此,为引例设计满足语句覆盖的测试用例是: [a={10,6},k=2] 由于语句覆盖是一个最弱的覆盖标准。虽然做到了所有语句的覆盖,但可能发现不了逻辑运算中出现的错误。 (2)采用判定覆盖设计测试用例 对本例,在语句覆盖的基础上,如果要使程序流程经过路径L1和L2,可设计两个满足要求的测试用例: Yes No Yes (L1) No Yes No Yes (L2) No 图2 冒泡排序法中排序部分的流程图 [a={10,6,7},k=3] [a={10,6,12},k=3] 或合并成一组测试用例: [a={10,6,12,7},k=4] 上述测试用例是在满足条件a[i]=a[i-1]或a[j]=a[j-1]的情况下经过路径L1和L2,而未检查另一个条件a[i]=a[i-1]或a[j]=a[j-1],即使在程序中将两处“=”都误写成“”,测试结果仍将显示“正常”,使这个错误被掩盖。因此可将上述测试用例改为: [a={10,6,10},k=3] [a={10,6,6},k=3] 或: [a={10,6,10,6},k=4] 则程序将在满足a[i]=a[i-1]或a[j]=a[j-1

文档评论(0)

jiulama + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档