#9.白盒测试:数据流测试

数据流测试

1、数据流分析

从数据流视角:程序是一个程序元素对数据访问的过程;
数据流关系:数据的【定义——使用】对;
出发点:对数据的不正确处理;
使用程序图来描述数据【定义——使用】对。

数据流测试:指关注变量接受值的点 和使用(或引用)这些值的点 的 结构性测试形式。

2、数据流测试

数据流测试按照程序中的变量定义使用的位置来选择程序的测试路径;
数据流测试关注变量接收值的点和使用这些值的点;
一种简单的数据流测试策略是要求覆盖每个定义-使用路径一次;
数据流测试用做路径测试的“真实性检查”。

数据流分析—程序控制流图

G(P ) :程序图
构造方式同前,语句片段代表节点,边代表节点序列
单入口,单出口,且不允许从某个节点到其自身的边
P:程序
V:一组程序变量

DD-路径

DD路径:决策对决策路径(Miller)。从决策语句的“出路”开始,到下一个决策语句的“入路”结束。
DD链:有向图中一条起始和终止节点不同点路径。
由一个节点组成,内度=0;
由一个节点组成,外度=0;
由一个节点组成,内度〉=2或外度〉=2;
由一个节点组成,内度=1并且外度=1;
长度〉=1的最大练

DD-路径图

DD-Path graph是一张带有标签的有向图,图中的节点表示程序图的DD路径,而边表示路径的控制流。
对于给定的程序,可以构造多种不同的程序图,所有这些程序图,都可以简化为唯一的DD-路径图。
对100行以内的程序生成DD路径是可行的,如果超过这个规模,一般需要有分析工具的支持。

控制流图最简化也就是DD路径了。可以理解为 DD属于控制流图。在这里插入图片描述

3、定义/使用测试

定义节点

节点n∈G(P)是变量v ∈V的定义节点,记做DEF(v,n),当且仅当变量的值由对应节点n的语句片断处定义。
定义节点语句:

  • 输入语句
  • 赋值语句
  • 循环语句和过程调用
    如果执行这些语句,变量的值往往会发生变化。
使用节点

节点n∈G(P)是变量v ∈V的使用节点,记做USE(v,n),当且仅当变量v的值在对应节点n的语句片断处使用。
使用节点语句:

  • 输出语句
  • 赋值语句
  • 循环控制语句
  • 过程调用
谓词使用、计算使用

使用节点USE(v,n)是一个谓词使用(记做P-use),当且仅当语句n是谓词语句;否则,USE(v,n)是计算使用(记做C-use)

  • 对应于谓词使用的节点,其外度≥2
  • 对应于计算使用的节点,其外度≤1
定义-使用路径

定义-使用路径(记做du-path):是PATHS(P)中的路径,使得对某个v ∈V,存在定义和使用节点DEF(v,m)和USE(v,n),使得m和n是该路径的最初和最终节点。
就是以定义节点开头,使用节点结尾。

定义清除路径

定义清除路径(记做dc-path):是具有最初和最终节点DEF(v,m)和USE(v,n)的PATHS(P)中的路径,使得该路径中没有其他节点是v的定义节点。
以定义节点开头,使用节点结尾,且路径途中没有其他(该变量的)定义节点。

4、覆盖指标

定义-使用路径测试覆盖指标

数据流指标假设所有程序变量都标识了定义节点和使用节点,且关于各变量都表示了定义-使用路径
T:拥有变量集合V的程序P的程序图G§中的一个路径集合

全定义准则

集合T满足程序P的全定义准则,当且仅当所有变量 ,T包含从v的每个定义节点到v的一个使用的定义清除路径。(这ppt里定义的是真的拗口。)
可以理解为:T是一个路径集合,包含了(所有变量)变量v的所有定义节点到任意一个使用节点的dc-path。
有一说一,我思索了半天还是懵的。百度相关内容又太少!
这里先放下
在这里插入图片描述
图中标亮部分。
def(U,3),use(x,3),use(y,3);
use(U,5),use(U,14),use(U,15);

按照当时老师讲的:n3分别到n5、n14、n15的路径集合就是U的全覆盖。
我:???

全使用准则

集合T满足程序P的全使用准则,当且仅当所有变量 ,T包含从v的每个定义节点到v的所有使用以及到所有USE(v,n)后续节点的定义清除路径。
在这里插入图片描述

全谓词使用/部分计算使用准则

集合T满足程序P的全谓词使用/部分计算使用准则,当且仅当所有变量,T包含从v的每个定义节点到v的所有谓词使用的定义清除路径,且若v的一个定义没有谓词使用,则定义清除路径导致至少一个计算使用。

全计算使用/部分谓词使用准则

集合T满足程序P的全计算使用/部分谓词使用准则,当且仅当所有变量,T包含从v的每个定义节点到v的所有计算使用的定义清除路径,且若v的一个定义没有计算使用,则定义清除路径导致至少一个谓词使用。

全定义-使用路径准则

集合T满足程序P的全定义-使用路径准则,当且仅当所有变量 ,T包含从v的每个定义节点到v的所有使用,以及到所有USE(v,n)后续节点的定义清除路径,且这些路径要么有一次的环经过,要么没有环路。

这定义看的我是真的脑壳子晕。
在这里插入图片描述
在这里插入图片描述

其他白盒测试方法
  • 程序插装
  • 程序编译
黑盒白盒比较:

黑盒测试:漏洞和冗余,而且不能被发现。
白盒测试的基路径测试方法:用有向图表示代码和程序路径公式化,掩盖了代码中的重要信息,即可行路径和不可行路径的区别。

5、测试的效率

什么时候测试可以停止?多少是足够的测试?

当时间用完时——缺少标准
当继续测试没有产生新失效时
当继续测试没有发现新缺陷时
当无法考虑新测试用例时—原因?
当回报很小时—基于分析的方法
当达到所要求的覆盖时—结构化测试的指标
当所有缺陷都已经清除时—难以实现
在这里插入图片描述



相关内容可以参考这位大佬的博客。很清楚。

另外,学了这么多,感觉脉络有点杂乱,最后会整理一下。


THE END

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值