有关白盒测试

一.对以下程序代码,设计测试用例,分别实现语句覆盖,判定覆盖,条件覆盖,

判定/条件覆盖,条件组合覆盖,路径覆盖。

void  DoWork(int x,int y,int z)

{
   int 
k=0,j=0;
   if((x>3)&&(z<10))
   {
       k=x*y-1;     //语句块1
       j=sqrt(k);
   }
   if((x= =4)||(y>5))
  {
       j=x*y+10;   //语句块2
  }
  j=j%3;             //语句块3
}

程序流程图如下:在这里插入图片描述

(1) 语句覆盖

由题可知,只要遍历路径abd,就能实现语句覆盖,

用例可为:x=4, y=4, z=4

(2) 判定覆盖

由题可知,只要遍历路径abd和ace 或者 abe和acd,就能实现判定覆盖,

用例可为:

x=4, y=4, z=4 【abd】
x=2, y=2, z=2 【ace】

或者

x=5, y=4, z=4 【abe】
x=4, y=6, z=11 【acd】

(3) 条件覆盖

由题可知,第一个判断条件的可能取值情况是:x>3 或 x<=3, z<10或者z>=10

第二个判断条件的可能取值情况是:x=4 或 x!=4 , y>5或者y<=5

用例可为:

x=4, y=6, z=6
x=3, y=5, z=10

(4) 判定/条件覆盖

由题可知,第一个判断条件的可能取值情况是:x>3 或 x<=3, z<10或者z>=10

第二个判断条件的可能取值情况是:x=4 或 x!=4 , y>5或者y<=5

只要遍历路径abd和ace 或者 abe和acd,就能实现判定覆盖

判定/条件覆盖必须同时满足判定覆盖和条件覆盖

用例可为:

x=4, y=6, z=6 【abd】
x=3, y=5, z=10 【ace】

在这里插入图片描述

(5) 条件组合覆盖

由题可知,满足多重条件覆盖准则的测试用例,必须覆盖以下8种组合:

第一个判定第二个判定
x>3,z<10 【组合1】x=4,y>5【组合5】
x>3,z>=10【组合2】x=4,y<=5【组合6】
x<=3,z<10【组合3】x!=4,y>5【组合7】
x<=3,z>=10【组合4】x!=4,y<=5【组合8】

用例可为:

x=4, y=6, z=4 【组合1、5】
x=4, y=5, z=10 【组合2、6】
x=3, y=6, z=9 【组合3、7】
x=3, y=5, z=10 【组合4、8】

(6) 路径覆盖

由题可知,程序共有两个必经过节点,其中两两间均有两条不同路径,所以有w(1)、w(2),且必经节点1、2下的路径数分别为2、2条(个人认为该路径数指的是该节点与下一必经节点/ 结束节点之间的路径数),因此路径数为:(注意此处是非独立路径数)

w(1)w(2)=22=4 (推荐,将流程图的路径全部写出来就可以理解这个公式由来了)

(路径数也可通过 (1+11)(1+1*1)= 4 获得,路径同步即*,异步即+
区别于上种算法,每一个小路径都要计算,包括非必经节点之间的)

故,要实现路径覆盖,用例需覆盖【abd】、【abe】、【acd】、【ace】四个路径。

用例可为:

x=4, y=5, z=5 【abd】
x=5, y=4, z=5 【abe】
x=2, y=6, z=5 【acd】
x=2, y=5, z=5 【ace】

二. 根据如下给出的程序流程图,完成以下要求:

(1)画出相应的控制流图。

(2)计算环形复杂度。

(3)找出程序的独立路径集合。(此处就是计算独立路径数,用于完全路径覆盖用例测试)

在这里插入图片描述

(1) 控制流图如下:

在这里插入图片描述

(2) 环形复杂度V(G)= E – N +2 = 10-7+2=5
(也可以= P+1=4+1=5)

注:此处的 E为控制流图边数(上图中指向1的不算入,若7有自循环的话也不计入,环形复杂度测量的是程序的逻辑复杂度),N为节点数,P为判断节点数

(3) 独立路径数 = w(1)w(3)= 33 = 9
也可以=(111 + 11 +1)( 11 + 111 + 11) = 9

路径集合如下:

路径一:1→2→5→3→6→7

路径二:1→2→3→6→7

路径三:1→3→6→7

路径四:1→2→5→3→4→6→7

路径五:1→2→3→4→6→7

路径六:1→3→4→6→7

路径七:1→2→5→3→4→7

路径八:1→2→3→4→7

路径九:1→3→4→7

  • 8
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值