软件测试(二)-静态测试-数据流分析


1. 数据流分析的相关概念 

基于结构测试的方案还有一种测试方法,就是数据流分析测试。 数据流分析测试是指变量 定义(赋值)与使用位置的 一种基于程序结构性的测试方法。该分析方法重点关注变量的定义与使用。在选定的一组代码中搜索某个变量所有的定义、使用位置,并检查在程序运行时该变量的值将会如何变化,从而分析是否是 Bug 的产生原因。 

数据流分析与路径测试的区别在于:路径测试基本上是从数学(控制流图)角度来分析的,而数据流测试则是利用了变量之间的关系,通过定义-使用路径和程序片,得到一系列的测试指标用于衡量测试的覆盖率。 
 数据流分析定义 
数据流指的是数据对象的顺序和可能状态的抽象表示。 数据对象的状态可以是创建/定义(Creation/Defined)、使用(Use)和清除/销毁(Killed/Destruction)。数据值的变量存在从创建、使用到销毁的一个完整状态。 编码错误导致的变量赋值错误检查是发现代码缺陷或错误的一种有效方法。实际上该方法可认为是路径测试的“真实性”检查,是对基于路径测试的一种改良。 
 数据流分析的功能作用 
数据流分析的作用是用来测试变量设置点和使用点之间的路径。这些路径也 称为“定义-使用对”(definition-use 或 du-pairs)或“设置-使用对”。通过数据流分析而生成的测试集可用来获得针对每个变量的“定义-使用对”的 100%覆盖。但是,要追踪整个程序代码中的每个变量的设置和使用时,并不需在测试时考虑被测对象的控制流。 
 程序代码路径中首次出现的变量可能存在的状态组合 
~d 变量不存在或没定义(通过 ~ 表示),然后定义(d),~d 是正确的。
~u 变量不存在或没定义,然后使用(u), ~u 是错误的,因为变量使用之前必须定义。 
~k 变量不存在或没定义,然后撤销(k), ~k 可能是错误的,因在创建变量之前撤销变量可能是一个潜在的编程错误。 
d、u、k 的具体含义: 
d: 变量声明或定义,且变量已赋值 
u: 读取及使用 
k: 声明或定义变量,但还未为其赋值或已释放变量(模块或函数 结束时),针对程序代码路径中的变量执行的顺序,变量状态 d、u、k 的组合可能会有 33=9 种情况 
 dd:变量赋值后再次赋值,可疑的或可能是编程错误。 
 du:变量赋值后使用,正确。是程序代码中的正常情况。 
 dk:变量定义后撤销,可疑的或可能是编程错误。 
 ud:变量使用后再定义,可以接受。 
 uu:变量使用之后再使用,可以接受。 
 uk:变量使用之后撤销,可以接受。 
 kd:变量撤销后再定义,可以接受,变量撤销之后重新定义。

 ku:变量未定义或撤销后使用,严重问题,在变量不存在或没有定 
义的情况下,使用变量是错误的。 
 kk:变量未定义或撤销之后再撤销,可能是编程错误。 
 数据流分析可基于数据流图而展开 
数据流图类似于控制流图,描述了测试对象代码的处理过程。同时也详细描 述了代码中变量的创建、使用和撤销的状态。通过检查数据流图来验证测试对象代码中每个变量的状态组合是否正确。 
图 1 是一个数据流图的例。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值