白盒测试(结构测试、透明盒测试、逻辑驱动测试):静态测试方法和动态测试方法。
静态测试方法:不要求在计算机上实际执行所测程序,主要一一些人宫的模拟技术对软件进行分析与测试。
动态测试:通过输入一组预先按照一定的测试准则构造实际数据来动态运行程序,达到发现错误的过程。
白盒测试中的动态分析技术主要有逻辑覆盖法和基本路径测试法
1、静态测试技术
静态结构分析法:
(1)函数调用关系图
(2)模块控制流图
2、逻辑覆盖法设计测试用例
(1)语句覆盖
设计足够的测试用例,运行程序使程序中的每一个可执行语句都执行一遍。
测试用例必须按照ace的路径走过,使每个可执行语句都执行一遍
(2)判定覆盖
设计足够多的测试用例,是程序中的每个判定至少都获得一次真值与假值
M与X只要经历一次真值与假值就行
(M,X)+(-M,-X) (-M,X)+(M,-X)..等等
判定覆盖一定满足语句覆盖
(3)条件覆盖
构造一组测试用例,使得每一判定语句中的每个逻辑条件的可能值(真/假)都至少出现一次
第一个判定语句(M)的逻辑条件T1,T2
第二个判定语句(X)的逻辑条件T3,T4
故:(T1,T2,T3,T4)+(-T1,-T2,-T3-,T4) (T1,-T2,-T3,T4)+(-T1,T2,T3,T4)等等
(4)判定/条件覆盖
设计测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,且每个判定本身的判定结果(真/假)也至少出现一次。
第一个判定语句(M)的逻辑条件T1,T2
第二个判定语句(X)的逻辑条件T3,T4
故(T1,T2,M,T3,T4,X)+(-T1,-T2,-M,-T3,-T4,-X) (-T1,-T2,-M,T3,T4,X)+(T1,T2,M,-T3,-T4,-X)等等
(5)条件组合覆盖
设计测试用例,使得判定中条件的各种可能组合都至少出现一次。
组合条件覆盖一定满足判定覆盖、条件覆盖、判定/条件覆盖、语句覆盖,不一定满足路径覆盖
第一个判定语句(M)的逻辑条件T1,T2——所有组合(T1,T2)、(T1,-T2)、(-T1,T2)、(-T1,-T2)
第二个判定语句(X)的逻辑条件T3,T4——所有组合(T3,T4)、(T3,-T4)、(-T3,T4)、(-T3,-T4)
故测试用例为
(T1,T2,T3,T4)+ (T1,-T2,T3,-T4)+(-T1,T2,-T3,T4)+(-T1,-T2,-T3,-T4)
基本路径测试法
1、控制流图
节点:标有编号的圆圈
- 程序流程图中矩形框
- 程序流程图菱形表示的多个出口的判断
- 程序流程图中多条流线相交的汇合点
若判定条件中的条件为复合条件
(1)、复合 或 关系
(2)、复合 并 关系
2、环形复杂度
- 环形复杂度等于控制流图中的闭合区域数
- 环形复杂度等于控制流图中的边的条数减去节点的个数再加2
- 环形复杂度等于控制流图中的所有判定节点的个数和加1(某个节点的判定节点数等于分支个数减1)
节点1判定节点数为2,节点2和3的判定节点数均为1,故环形复杂度为5
3、独立路径
从始入点(无始入路径)到结束点(无始出路径)的所有路径
一条新的独立路径至少包含构成之前所有独立路径的节点集合以外的新节点
4、基本路径法设计测试用例的步骤
- 画出程序控制流图
- 计算程序的环形复杂度
- 列出所有的独立路径,建立基本路径集
- 设计测试用例,覆盖基本路径集中的每条独立路径
被测程序的C语言伪代码描述如下:
画出改版程序流程图与程序控制流图
独立路径
1-4-5-7-9 {begk}
1-4-5-6-7-9 {begkhi}
1-4-5-6-8-9 {begkhijl}
1-2-4-5-7-9 {begkhijlac}
1-2-3-5-7-9 {begkhijlacdf}
路径1-4-5-7-9
表示逻辑条件1执行了直接到了执行语句4,表示逻辑条件1不满足,不需要在试探逻辑条件2
5-7表示逻辑条件5为真,无需再判断6的真假可以直接进入7
例2:
程序控制流图:
环形复杂度:5
路径:(有新节点加入原则,边的集合不断更新)
1-4-5-7 {cgj}
1-4-5-6-7 {cgj hi }
1-2-4-5-7 {chj hi ad}
1-2-3-4-5-7 {chj hi ad be}
此时边f并没有加入边的集合,所以还有一条含有f的路径文章来源:https://www.toymoban.com/news/detail-634903.html
1-2-3-4-6-7 {chj hi ad be f}文章来源地址https://www.toymoban.com/news/detail-634903.html
到了这里,关于白盒检测技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!