#7.白盒测试:控制流测试

白盒测试概念

白盒测试又叫结构测试,逻辑驱动测试,或基于程序本身的测试。

白盒测试的主要方法

1.控制流测试

  • 逻辑覆盖
  • 路径测试

2.循环测试
3.数据流测试

控制流测试

1、逻辑覆盖

在这里插入图片描述
不同的覆盖方式目的也不同,根据字面理解就可以。

2、路径测试

程序的环路复杂性即McCabe复杂性度量,简单地定义为控制流程图的区域数。
程序环路复杂性又叫圈复杂度
控制流图是退化的程序流程图,图中每个处理都退化成一个节点,流线变成连接不同节点的有向弧。
控制流图将程序流程图中结构化构件改用一般有向图的形式表示。
在这里插入图片描述
圈复杂度:是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目。
独立路径:必须包含一条在定义之前不曾用到的边。(每一条新的路径都包含了一条新边)
在这里插入图片描述
计算圈复杂度的三种方法:

  • 1、V(G)=e-n+2p;
    e是边数,n是节点数,p是连接(通)区域数。当p=1时,V(G)=e-n+2;
  • 2、V(G)=P+1;
    P视图中判定节点的数量(有多个出向量)
  • 3、区域数量=圈复杂度;
    数有几个圈。

比如上图。
e=10;n=7;p=1;P=4(分别是ABCD);圈=5;
所以,V(G)=5;

独立路径:
ABCG
ABEFG
ABCBG???
ADFG
ADEFG

基本路径测试

如果把覆盖的路径数压缩到一定限度内,例如程序中的循环体只执行0次或1次,就成为基本路径测试。
通过分析控制流图环路复杂性,得出基本路径集合,依据此设计测试用例,保证这些路径至少通过一次

*基本路径测试步骤:

  • 1.导出程序的控制流图;
  • 2.计算控制流图的环路复杂度V(G);
  • 3.确定只包含独立路径的基本路径集;
  • 4.设计测试用例;
实例
public void f (int  RecordNum, int Type ){  
   int  x = 0;
   int  y = 8;
   while ( RecordNum > 0) {
	   if( Type = = 0)
	        x = y + 2;
       else {
	        if( Type = = 1 )
  	              x = y + 5;
             else
                  x = y + 10;
        }
        RecordNum - -;
    }
}

请用基本路径法测试上述代码。

  • 1.画控制流图
    在这里插入图片描述

  • 2.计算V(G)
    V(G)=10-8+2=4;
    V(G)=(1,2,4)+1=4;
    V(G)=数圈=4;

  • 3、找出基本路径集。
    1-8
    1-2-3-7-8
    1-2-4-5-7-8
    1-2-4-6-7-8

  • 4、设计测试用例
    路径1:RecordNum=0;Type=0;
    路径2:RecordNum=1;Type=0;
    路径3:RecordNum=1;Type=1;
    路径4:RecordNum=1;Type=-1;

有不对的地方欢迎指出,共同进步。 比如关于画控制流图这一块的内容,还是有些模糊。


                                                                                    THE END

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值