【白盒测试】数据流测试和Junit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【白盒测试】数据流测试和Junit相关的知识,希望对你有一定的参考价值。

参考技术A 数据流(data flow):关注关于点上的变量的操作是否正确

1.

数据流中关于变量的操作分为两种:

定义(definition,def):将变量值塞到内存中,赋值/初始化等

使用(use):将某个值作为赋值的右边,比如分支/判断/循环等

节点5是关于Z的定义和X的使用,变量可能在不同地方定义,使用的地方也会交叉,因此,构建定义和使用之间的关系比较复杂

2.

为了理清定义和使用的关系

关于节点n上的所有定义变量用def(n)表示,关于边e上的所有定义变量用def(e表示);use同理

定义引用对(DU pair):在控制流(li,lj)两个地方构成DU对是指在前面li上定义,在后面lj上使用,但是要求定义清晰(def-clear),指变量未被重新定义。

数据流的可达(reach):指有一条定义清晰的路径可以从li到lj,这才是在数据流上有意义的一种可达

定义引用路径(DU path):定义清晰并且简单的控制路径,du(ni,nj,v)指从一个节点ni到另一个节点nj关于变量v的定义路径的集合(有时只关心ni,因为被定义的变量可能在不同地方使用)

三种数据流覆盖准则:

1.定义覆盖(all-defs coverage,ADC),关于某个变量v在程序里面的所有的定义覆盖是指它所有被定义的地方都 至少覆盖过一次 。

2.引用覆盖(all-use coverage,AUC),关于某个变量v在程序里面的所有的引用覆盖是指它所有被引用的地方都 至少覆盖过一次 。有引用一定有定义。

3.定义引用路径覆盖(all-du-paths coverage,ADUPC),覆盖 所有 du路径

可以发现,最弱的是定义覆盖、然后是引用覆盖,最强的是定义引用覆盖

例子



边(边上的使用通常指分支条件)一般更关注结点的定义和使用

4.

Junit:非常强大的关于Java的单元测试框架,我什么都不懂ww

以上是关于【白盒测试】数据流测试和Junit的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb - Junit白盒测试反射注解

实践作业3:白盒测试----学习Junit框架DAY10.

白盒测试实践项目计划与安排

Junit单元测试

Junit单元测试

白盒测试(Java) - (Junit入门篇一)