编辑推荐: |
本章主要介绍了白盒测试的概念、特点、基本测试内容、语句覆盖标准及程序流程图等,希望对你有帮助。
本文来自于csdn,由火龙果软件Linda编辑、推荐。 |
|
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于 代码的测试。白盒测试是一种
测试用例设计方法,盒子指的是被测试的 软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。
白盒测试是一种典型的测试方法
是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法
测试覆盖全部代码、分支、路径和条件
它利用查看代码功能和实现方式得到的信息来确定哪些需要测试、哪些不需要、如何展开测试
又称为结构测试或逻辑驱动测试?
白盒测试特点主要有
1. 可以构成测试数据使特定程序部分得到测试
2. 有一定的充分性度量手段
3. 可获得较多工具支持
4. 通常只用于单元测试和集成测试(主要是单元测试)
白盒测试的基本测试内容
基本测试内容
对程序模块的所有独立执行路径至少测试一次
对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次
在循环的边界和运行的边界限内执行循环体
测试内部数据结构的有效性
白盒测试所采用的测试方法是
逻辑覆盖(包括语句覆盖、分支覆盖、条件覆盖、分支-条件覆盖、条件组合覆盖以及路径覆盖)
六种逻辑覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖要求:独立执行路径至少一次。每条语句至少执行一次。
·它对程序的逻辑覆盖很少,是很弱的逻辑覆盖标准
·为了更充分地测试程序,需要采用后边讲述的其他逻辑覆盖方法
·为了暴露程序中的错误,语句覆盖是最起码的测试要求,要求设计足够多的测试用例,使得每一条语句至少被执行一次
·语句覆盖的优点
检查所有语句
结构简单的代码的测试效果较好
容易实现自动测试
代码覆盖率高
如果是程序块覆盖,则不用考虑程序块中的源代码
语句覆盖不能检查出的错误有
条件语句错误、逻辑运算错误、循环语句错误
判定覆盖要求:逻辑判断至少一次。每个判定的每个分支至少执行一次。
要求设计做够多的测试用例,使得程序中的每一个分支至少通过一次
即每一条分支语句的“真”值和“假”值都至少执行一次
while语句、switch语句、异常处理、跳转语句和三目运算符(a?b:c)等等同样可以使用分支覆盖来测试
对多分支语句,如C语言中的case语句,分支覆盖必须对每一个分支的每一种可能的结果都进行测试
判定覆盖要比语句覆盖查错能力强一些:
执行了分支覆盖,实际也就执行了语句覆盖
判定覆盖与语句覆盖存在同样的缺点
不能查出条件语句错误,不能查出逻辑运算错误,不能查出循环次数错误,不能查出循环条件错误
条件覆盖要求:每个判定的每个条件应取到各种可能的值。
不仅每一个语句至少执行一次,使得判定中的每个条件获得各种可能结果
判定覆盖只关心整个判定表达式的结果,条件覆盖关心的则是每个条件各种取值的结果
条件覆盖的利弊
能够检查所有的条件错误
不能实现对每个分支的检查
用例数增加
判定/条件覆盖要求:同时满足判定覆盖条件覆盖。
设计足够多的测试用例,使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次
用于解决条件覆盖不一定包括判定覆盖,判定覆盖也不一定包括条件覆盖的问题
分支-条件覆盖的利弊:
既考虑了每一个条件,又考虑了每一个分支,发现错误能力强于分支覆盖和条件覆盖
并不能全面覆盖所有路径
用例数量的增加
条件组合覆盖要求:每个判定中各条件的每一种组合至少出现一次。
要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次
满足条件组合覆盖标准的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准
条件组合覆盖是前面几种覆盖标准中最强的
但是,满足条件组合覆盖要求的测试用例并不一定能使程序中的每条路径都执行到
路径覆盖要求:使程序中每一条可能的路径至少执行一次。 所有出入口测试。(全覆盖)
覆盖率:逻辑与功能覆盖 = 至少一次items/总item数。
程序流程图的各个符号:
程序图
定义:给定一个采用命令式程序设计语言编写的程序,其程序图是一种有向图,其中:
传统定义:
节点是程序语句,边表示控制流(从节点i到节点j有一条边,当且仅当对应节点j的语句可以立即在节点i对应的语句之后执行)。
改进后的定义:
节点要么是整个语句,要么是语句的一部分,边表示控制流(从节点i到节点j有一条边,当且仅当对应节点j的语句或语句的一部分,可以立即在节点i对应的语句或语句的一部分之后执行)
DD-路径
结构性测试最著名的形式以叫做决策到决策路径(DD-路径)的结构为基础。
DD-路径指语句的一种序列,从决策语句的“出路”开始,到下一个决策语句的“入路”结束,在这种序列中没有内部分支。
DD-路径定义
定义:给定采用命令式语言编写的一段程序,其DD-路径图是有向图。其中,其节点表示其程序图的DD-路径,边表示连续DD-路径之间的控制流。
实际上,DD-路径图是一种压缩图,在这种压缩图中,2-连接组件被压缩DD-路径的单个节点。
提出DD-路径的目的,在于DD-路径能够非常精确地描述测试覆盖。
将上一个判断的出口与下一个判断的入口之间的程序图节点压缩成一个节点。
环形复杂度(McCabe度量法)是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测度数量的上界。
环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。
计算方法:
1、流图G的环形复杂度V(G)=区域数
2、流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
3、流图G的环形复杂度V(G)=P+1,其中,P是流图中判定分支点的数目。
4、 流图G的环形复杂度V(G)=m-n+p。 (m为弧、n为节点数、p为强连通分量(出度为0的节点数加1))
有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通。有向图的极大强连通子图,称为强连通分量(strongly
connected components)。
范例:
|