第三章 白盒测试-逻辑覆盖测试.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * 所有的程序均有分支和循环,顺序结构构成,现在我们看一下循环覆盖技术。 循环分为了三种:简单循环,嵌套循环,串接循环 * 在C语言中我们知道,循环分了两种:当型循环和直到型循环,对于这两种循环,如果程序中只是单一的循环语句出现,也就是我们所说的简单循环 无任何嵌套或者调用,我们则通过以下5方面来测试: 其中n是允许通过循环的最大次数。 1.整个跳过循环; 2.只有一次通过循环; 3.两次通过循环; 4.m次通过循环,其中mn; 5.n-1,n次通过循环 6.n/2次循环 其中2,3,4,6是用来在循环的开始、中间、结尾验证循环的预期结果 1,5用来测试未预期的和不满足循环条件的情况 我们在黑盒测试的边界值测试中还会看到类似的“终点/中点”的测试策略。 如果程序中有732个循环,而你通过手动的方法或利用工具可以确定你能够执行其中的312个,那么循环覆盖率就是42.6%(这在复杂的程序中大致是平均水平)。这里潜在的假设是如果循环测试覆盖率越高,后续发现错误的可能性就越小。 * 这样的一个简单循环语句,可以如下设置测试: 1)si=-1;或i=0;则会跳过整个循环; 2)si=0;i=0;则只执行一次循环;或在循环体的语句后添加判断,当i=0;时使用break退出循环。 3)si=0;i=1;则执行两次循环;或在循环体的语句后添加判断,当i=1;时使用break退出循环。 4) si=0;i=m;则执行m次循环;或在循环体的语句后添加判断,当i=m;时使用break退出循环。 5) si=0;i=n-1;则执行n-1次循环;或在循环体的语句后添加判断,当i=n-1;时使用break退出循环。 正常执行循环。 si=n+1;则执行循环。 * 如果将简单循环的测试方法用于嵌套循环,可能的测试数就会随嵌套层数成几何级增加,这会导致不实际的测试数目,PPT中是一种减少测试数的方法。 从内层开始 比方说3重循环的语句,外围的两重循环都设置为1 最里面的循环 就可以按照简单循环的测试方法去做。最内层的测完后,再测第二层,测试将刚才的最内层当成复合语句(即指执行一次),第二层再做简单循环测试。 一直继续 直到测试完所有的循环。 * 从上面可以如下设置测试: 根据上面的测试原则,先把外层循环设置为执行一次,可以把如简单循环测试中的方法一样,可以把num设置为1。 1)j=0;则跳过循环,可以通过该模块中的其它变量或状态来判断跳过循环后,模块执行结果是否正确。 2)j=1;则只执行一次循环。 3)j=2;则两次通过循环。 4)取比原来j值小的数值。 5)取比原来的j值小1的值,取j值。不用去比j大1的值。 再把外层循环设置执行2次,即num=2;(保证取值比原来的num值小),再把上面的内层各种取值情况执行一次。 其余类推,执行比num小的一个值,再执行一边。再取比num小1的值,等于num的值,各自执行一边。 * * * * * * 简单循环举例 举例: ...... for(s=0;si;s++) fwrite(prof[s],sizeof(struct ENGINEER),1,fp); ...... * 循环测试-嵌套循环 嵌套循环: 从最内层循环开始,将其它循环设置为最小值; 对最内层循环使用简单循环,而使外层循环的叠代参数(即循环计数)最小,并为范围外或排除的值增加其它测试; 由内向外构造下一个循环的测试,但其它的外层循环为最小值,并使其它的嵌套循环为“典型”值; 继续直到测试所有的循环。 * 嵌套循环举例 for(i=0; inum; i++) { while(j0) { j--; } } * 循环测试 串接循环: 如果串接循环的循环都彼此独立,可是使用嵌套的策略测试。 如果第一个循环是第二个循环的初始值,则这两个循环并不是独立的,则推荐使用的嵌套循环的方法进行测试。 * 循环测试 不规则循环: 不能测试,尽量重新设计成结构化的程序结构后再进行测试。 * 循环测试 循环次数和参数有关 int Func(int N) { ? ? .... ? ? for(int i=0; iN; i++) ? ? { ? ?? ???.... ? ? } ? ? .... } 考虑设计测试用例,覆盖 N 0 和 N = 0,即进入循环和不进入循环两种情 * 练习 例一: int fun(int a,int b) { int x=0,y=0; if(a==0b5) x=y+1; else x=y+10; return x; } 则下列各组测试用例中满足判定-条件覆盖率测试的是()

文档评论(0)

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

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

1亿VIP精品文档

相关文档