TreeMind树图在线AI思维导图

白盒测试思维导图

  收藏
  分享
免费下载
免费使用文件
U431098598 浏览量:392023-04-07 10:19:14
已被使用4次
查看详情白盒测试思维导图

白盒测试介绍

树图思维导图提供 白盒测试 在线思维导图免费制作,点击“编辑”按钮,可对 白盒测试  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:ce20c471c958e61152c562daebf94e64

思维导图大纲

白盒测试思维导图模板大纲

4.1 逻辑覆盖

白盒测试

(白盒测试)实现是已知的,并被用来标识测试用例

程序的结构和处理过程像百盒子一样透明,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试

白盒(结构性)

测试基于被测程序的源代码

测试方法支持严格定义、数学分析和精确度量

对程序模块进行检查

对程序模块的所有独立的执行路径至少测试一次

所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次

在循环的边界和运行界限内执行循环体

测试内部数据结构的有效性等

维恩图

测试停止

时间用光

继续测试未产生新的失效

继续测试未发现新的缺陷

无法考虑新的测试用例

汇报很小

达到所要求的覆盖

所有缺陷都已经清除

白盒测试方法

静态测试方法

程序结构分析

代码走查

代码审查

控制流分析

数据流分析

动态测试方法

逻辑覆盖

语句覆盖

判定覆盖

条件覆盖

判定-条件覆盖

条件组合覆盖

路径覆盖

路径测试

逻辑覆盖

以程序内部的逻辑结构为基础的设计测试用例的技术

分类

语句覆盖

每一个可执行的语句至少执行一次

语句覆盖是最弱的逻辑覆盖准则

判定覆盖

每个判定的真、假分支至少执行一次

不一定能发现判断的条件中存在的错误

条件覆盖

每个判定的每个条件的可能取值至少执行一次

判定-条件覆盖

即判定覆盖+条件覆盖,即同时考虑条件结果及判定结果的检验

条件组合覆盖

每个判定表达式中条件的各种可能组合都至少执行一次

路径覆盖

程序中每条可能的路径都至少执行一次。若图中有环,则每个环至少执行一次

无论哪种测试覆盖,即使覆盖率达100%,都不能保证找出所有隐藏的缺陷

从覆盖源程序语句的详尽程度可分为

测试覆盖准则

结构化覆盖率可以作为测试完整性的一个标准

某些覆盖率很难达到,例如条件覆盖是一个NP-hard问题

即使达到100%的结构化覆盖率也不能保证程序的正确性

4.2 路径测试

路径测试

从程序入口开始,执行过程中经历各个语句,直至程序出口

是结构性测试最为典型的问题

理想情况:实现路径覆盖

单元测试中,路径是指函数代码的某个分支,而实际上如果我们将软件系统的某个流程也看成路径的话,我们将可以尝试着用路径分析的方法来设计测试用例。

路径测试的好处

降低了测试用例设计的难度

在测试时间较紧的情况下,可以有的放矢的选择测试用例,而不用完全根据经验来取舍

基本概念

程序图

给定采用命令式程序设计语言编写的一段程序,其程序图是一种有向图

程序图的重要性在于:程序的执行对应于从源节点到汇节点的路径。

程序图明确描述了测试用例和测试用例所执行的程序部分之间的关系

程序图能很好地以理论上可预期的方式,来处理程序中潜在的大量执行路径

圈复杂度

V(G)=e-n+2

V(G)=图所在平面被划分为的区域数

V(G)=判定节点数+1

程序越复杂,圈复杂度越高,路径数越多

DD-路径

决策到决策的路径

决策

指一个序列语句,其开始位置是一个判断语句的开始,结束位置是下一个判断语句的开始,并且序列语句没有分支。

DD路径覆盖率=至少被执行一次的决策路径数/系统中总的决策路径数

DD路径定义

是程序图中的一条链

Case1:由一个节点组成,入度 = 0,

对应唯一的源节点

Case2:由一个节点组成,出度 = 0,

对应唯一的汇节点

Case3:由一个节点组成,入度>=2或出度>=2

对应条件语句

Case4:由一个节点组成,入度=1且出度=1

用于短分支

Case5:长度>=1的最大链

对应串行语句

链是一条起始和终止节点不同的路径,并且每个节点都满足入度=1、出度=1

链是一条起始和终止节点不同的路径,并且每个节点都满足入度=1、出度=1

n-连接性

0-连接

1-连接

2-连接

3-连接

测试覆盖指标

测试覆盖指标是度量一组测试用例覆盖(或执行)某个程序扩展的工具。

测试覆盖指标(基于程序图)

语句与判断测试

要求找出一组测试用例,使得当执行时,程序图的所有节点至少执行一次

DD-路径的依赖对偶

这种依赖关系与不可行路径问题有关

多条件覆盖

对DD-路径中的复合条件,应研究可能出现分支的不同方式

构造真值表

将复合判断修改为嵌套的简单if-then-else逻辑,产生更多要覆盖的DD-路径

条件测试路径选择

嵌套型分支结构

连锁型分支结构

基路径测试

覆盖所有路径不可能

只能从大量可能路径中选择一部分作为测试用例

基本思想

找出一组独立路径进行测试

数学基础

将程序看作一种向量空间,该空间的基是要测试的非常有意义的元素集合。若基无问题,则用基表述的一切都无问题

空间中的一切都可用基表示,如果一个基元素被删除,则这种覆盖特性也会丢失。

向量空间的一组基不是唯一的。

确保程序中每个可执行语句至少执行一次所必需的测试用例数目的下限

基路径测试的步骤

从程序代码生成 程序图

计算圈复杂度

确定基(独立)路径集合:独立路径必须包含一条在定义之前不曾使用的边。

设计测试用例

基路径测试的优点

给出了必须进行的测试的下限

提供了用作功能性测试交叉检查的一组指标

若发现同一条程序路径被多个功能性测试用例遍历,则可怀疑该冗余不会发现新的缺陷

若未达到一定的DD-路径覆盖,则可知功能性测试用例中存在漏洞

基路径测试的不足

仍然离代码太远,难以发现不可行路径

循环测试

简单循环

连锁循环

若各个循环互相独立,则可以用与简单循环相同的方法进行测试。

若几个循环并非互相独立,则需采用测试嵌套循环的办法来处理。

嵌套循环

均涉及边界值测试问题

串联循环

零次循环:从循环入口到出口

一次循环:检查循环初始值

二次循环:检查多次循环

m次循环: 检查多次循环

最大次数循环、比最大次数多一次、少一次的循环。

非结构循环

应采用结构化程序设计方法重新设计测试用例。

或采用数据流方法进行分析。

4.3 程序结构设计

程序结构分析

控制流分析

检查程序的控制结构,以验证程序结构的一些规则在程序编写过程中是否得到遵循,在此基础上得到有关结构成分的语法树并揭示控制结构的缺陷

数据流分析

查找定义/引用缺陷

4.3.1 控制流分析

原因

非结构化程序给测试、排错和程序维护带来困难

人们要求程序是结构良好的

需要系统的检查程序的控制结构

程序控制流视角

从程序元素和它们执行顺序之间的联系观察程序

控制流图

用于描述程序控制流

出发点

程序许多错误发生在程序错误的执行流程中;追踪程序的执行流程有助于发现程序错误

程序结构的基本要求

程序不应包含

转向不存在的标号

无用的语句标号

从程序入口进入后无法到达的语句

不能到达停机语句的语句

目前对这四种情况的检测主要通过编译器和程序分析工具来实现

结构分析

控制流图矩阵

便于机器表示和处理控制流图

连接孤的节点的号码决定了矩阵中元素的位置

4.3.2 数据流分析

最初是随着编译系统1要生成有效的目标码而出现的,主要用于代码优化

现在主要为发现定义/引用异常缺陷

变量被定义,但从来没有使用(引用)

所使用的变量没有被定义

变量在使用之前被定义两次

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

程序数据流视角

程序是一个程序元素对数据访问的过程

数据流关系

数据”定义-使用“对使用程序图来描述数据”定义-使用’对

出发点

对数据的不正确处理

数据流测试用作路径测试的“真实性检查”

定义/使用测试

G(P):程序图

构造方式相同,语句片段代表节点,边代表节点序列

单入口、单出口,且不允许从某个节点到其自身的边

P

程序

V

一组程序变量

节点

节点是语句或语句的一部分;边表示语句的控制流程

定义节点(DEF(v,n))

执行时,与该变量关联的存储单元的内容会改变

使用节点(USE(v,n))

执行时,与该变量关联的存储单元的内容保持不变

谓词使用(P-use)/计算使用(C-use)

对应谓词使用的节点的外度>=2

对应计算使用的节点的外度<=1

定义-使用路径和定义-清除路径描述了从值被定义的点到值被使用的点的源语句的数据流

数据流覆盖指标层次结构

基于程序片

思想

把程序分成具有某种功能含义的组件

做法

保留程序中和所关心的变量v相关语句

排除无关的内容,能更准确地描述要测试的程序部分

程序片是确定或影响某变量在程序某点上的取值的一组程序语句

程序片分类

静态切片

与程序的输入无关

动态切片

与程序的输入相关

程序片讨论

数据流测试适用于计算密集的程序

定义/使用路径和片的定义,使我们能够准确的描述我们要测试的程序部分

在控制密集的程序中,若要计算控制变量(谓词使用),则数据流测试也适用

片与定义使用路径一个区别在于片并不能很好的反应测试用例,因为片是反应局部状况的,而定义使用路径则是基于路径的,路径是具有结构化性质指标的

其他白盒测试的方法

程序插桩

域测试

域测试是一种基于程序结构的测试方法。

程序错误分类

域错误

如果程序的控制流有错误,对于某一特定的输入可能执行的是一条错误路径,这种错误也称为路径错误。

计算型错误

对于特定输入执行的是正确路径,赋值语句错误致使数据结果不正确。

丢失路径错误

程序中少一个判定谓词引起。

域测试主要针对域错误进行测试。

域测试在分析输入域的基础上,选择适当的测试点进行测试。

弱点

对程序提出的限制过多;

当程序存在很多路径时,所需的测试点很多。

符号测试

允许程序的输入不仅仅是具体的数值,而且还包括符号值

Z路径覆盖

分析程序中的路径是指:检验程序从入口开始,执行过程中经历的各个语句,直到出口。

Z路径覆盖

对循环机制进行简化,使得覆盖有限的路径成为可能

-无论循环多少次都被看成只有两条路径,执行/未执

将整个程序路径画成路径树,根据叶子节点得到程序路径,从根节点到叶子节点进行遍历,当所有叶子节点被遍历后,能得到所有路径,这些路径成为Z路径。

程序变异

一种错误驱动测试方法

错误驱动测试:针对某类特定的程序错误

分类:程序强变异,程序弱变异

相关思维导图模板

PO框架思维脑图思维导图

树图思维导图提供 PO框架思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 PO框架思维脑图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:3e4c603ec5a78d39e8eae98622eb5a64

半导体全行业产业链思维导图

树图思维导图提供 半导体全行业产业链 在线思维导图免费制作,点击“编辑”按钮,可对 半导体全行业产业链  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:cd6bddf71001fb79f759dafc130e00f5