白盒测试(循环测试、Z路径覆盖、程序插桩技术、静态测试法)

白盒测试

循环测试

有如下代码(C语言):

For (i=0;i<num;i++)
{    
    while (j>0)  
    {        
        j--;   
    }
}

该循环的测试用例设计思路是怎样的?

  • 循环分为4种不同类型
    • 简单循环
    • 嵌套循环
    • 连锁循环(串接循环)
    • 非结构循环(不规则循环)

001

简单循环测试

  1. 零次循环:从循环入口到出口
  2. 一次循环:检查循环初始值
  3. 二次循环:两次通过循环
  4. m次循环: 检查多次循环
  5. 最大次数循环n、比最大次数多一次n+1、少一次的循环n-1。

嵌套循环测试

  1. 对最内层循环做简单循环的全部测试。所有其它层的循环变量置为最小值.
  2. 逐步外推,对其外面一层循环进行测试。测试时保持所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取“典型”值.
  3. 反复进行,直到所有各层循环测试完毕.
  4. 对全部各层循环同时取最小循环次数,或者同时取最大循环次数.

连锁循环

如果各个循环互相独立,则可以用与简单循环相同的方法进行测试。但如果几个循环不是互相独立的,则需要使用测试嵌套循环的办法来处理。

非结构循环

这一类循环应该使用结构化程序设计方法重新设计测试用例。

Z路径覆盖

  • 路径覆盖是白盒测试最为典型的问题。
  • 完成路径测试的理想情况是做到路径覆盖,对于比较简单的小程序实现路径覆盖是可以做到的,但是如果程序中出现多个判断和多个循环,可能的路径数目将会急剧增长,达到天文数字,以至于实现完全的路径覆盖是不可能的。
  • 为了解决这一问题,我们必须舍掉一些次要因素,对循环机制进行简化,从而极大地减少路径的数量,使得覆盖这些有限的路径成为可能。这种简化意义下的路径覆盖称为Z路径覆盖
  • 注意:
    • 循环化简是指限制循环的次数。无论循环的形式和实际执行循环体的次数是多少,只考虑循环一次和零次两种情况。即:只考虑执行时进入循环体一次和跳过循环体的两种情况。
      在这里插入图片描述

在循环简化的思路下,循环与判定分支的效果是一样的,即:循环要么执行、要么跳过。

z路径覆盖设计测试用例

002

程序插桩技术

  • 在软件动态测试中,程序插桩(Program Instrumentation)是一种基本的测试手段
  • 方法简介:借助往被测程序中插入操作,来实现测试目的的方法。
  • 最简单的插桩:在程序中插入打印语句printf(“…”)语句
  • 如果我们想要了解一个程序在某次运行中所有可执行语句被覆盖的情况,或是每个语句实际执行次数,最好的办法就是利用程序插桩技术.
:求取两个整数X和Y的最大公约数程序如下:
 int gsd (int X,int Y)
 { int Q=X;
   int R=Y;
   while(Q!=R) 
   {	if(Q>R)
 	  Q=Q-R;
 	else  R=R-Q; }
  return Q;
 }

最大公约数算法之更相减损术

在我国古代的数学著作《九章算术》中,就介绍了“约分术”:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”

可以根据程序绘制出其流程图

为了记录该程序中语句的执行次数,我们使用插桩技术插如如下语句:C(i)=C(i)+1, i=1,2,…,6

001

程序从入口开始执行,到出口结束,凡经历的计数语句都能记录下该程序点的执行次数。

如果我们在程序的入口处还插入了对计数器C(i)初始化的语句,在出口处插入了打印这些计数器的语句,就构成了完整的插桩程序。它就能记录并输出在各程序点上语句的实际执行次数.

下图为插桩之后的程序,箭头所指为插入的语句。原程序的语句已略去。

004

设计插桩程序时需要考虑的问题包括:

  1. 需要探测哪些信息
  2. 在程序的什么部位设置探测点
  3. 需要设置多少个探测点

静态测试法

静态测试不实际运行软件,只是检查和审阅,主要对软件的编程格式,结构等方面进行评估。

静态测试
代码检查
桌面检查
代码走查
代码审查
静态结构分析
控制流分析
数据流分析
信息流分析
代码质量度量
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱捣鼓的XiaoPu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值