白盒测试——逻辑覆盖法

简介:   白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。

  白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

  白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。今天我们主要研究逻辑覆盖,逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖

  下图是一个普通的程序流程图,其中有两个判定语句和两个复制语句,以及四条路径L1:ace,L2:abd,L3:abe,L4:acd。

  

 1.语句覆盖每条语句至少执行一次。

  我们可以创建一个测试用例(2,0,4)使得覆盖图中所有的语句(包括判定语句和赋值语句),也就是走L1路径,它并没有覆盖所有的路径,因此语句覆盖的覆盖程度最低。

 2.判定覆盖又称分支覆盖,它不仅每个语句执行一次,而且每个判定的每种可能都执行一次。

  为了达到上图的判定覆盖,我们可以创建(2,0,4)(1,1,1)两个测试用例,使得图中两个判定中每个判定的真假情况都执行一遍。这两个测试用例也只能覆盖L1,L2两条路径,因此判定覆盖覆盖强度高于语句覆盖,但对逻辑覆盖的轻度仍然不是很高。

 3.条件覆盖每个判定的每个条件应取到各种可能的值。

  这里就要说明条件跟判定的区别,上图中共有两个判定,每个判定中又都有两个条件即A>1、B=0分别是一个条件,两个条件组合成了一个判定。条件判定覆盖既要将每个判定中的每个条件的每一种可能情况都覆盖一遍。同样测试用例(2,0,4)(1,1,1)可以满足条件覆盖,大家可能看到了这两个测试用例满足于判定覆盖,又满足了条件覆盖,那么这两中覆盖之间是什么关系呢?可以说他们两个之间没有确切的关系,也并不是说满足条件覆盖的就一定满足判定覆盖,或者满足判定覆盖的就一次能够满足条件覆盖。只是条件覆盖的情况更复杂一些,而测试用例只需要覆盖所有的条件即可,本实例中只是恰好这两个测试用例同时满足了判定覆盖和条件覆盖,希望大家不要被误导。

  4.判定/条件覆盖同时满足判定覆盖条件覆盖。

  从这一种逻辑覆盖中就可以看出条件覆盖和判定覆盖之间并没有包含关系,因为如果他们其中之一包含了另一个的话就不用同时满足两个覆盖才称之为判定/条件覆盖。因为测试用例(2,0,4)(1,1,1)同时满足条件覆盖和判定覆盖,所以这两个测试用例肯定满足判定/条件覆盖,但是判定/条件覆盖也能覆盖所有的路径。

  5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。

  上图中的条件取值组合以及测试用例如下:

        

  可以看出来即使条件组合覆盖比较复杂,但是还没有覆盖所有的路径,因此我们需要覆盖强度更高的逻辑覆盖。

  6.路径覆盖使程序中每一条可能的路径至少执行一次。

  

  六种覆盖中只有路径覆盖将所有的路径都执行一遍,但是无论哪种覆盖,都不能保证程序的正确性,测试的目的就是发现程序存在的问题,而不是证明程序没有问题,以上几种逻辑覆盖只是自己学习的一些整理,有不足之处希望大家批评指正。


目录
相关文章
|
SQL 安全 网络安全
交易所开发测试版丨交易所系统开发规则玩法/架构设计/项目步骤/方案逻辑/案例解析/源码部署
The development process of the exchange system involves multiple steps and links. The following is the detailed process and steps for the development of the exchange system:
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
32 4
|
1月前
|
SQL
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
32 2
|
3月前
|
Java 测试技术 API
SpringBoot单元测试快速写法问题之复杂的业务逻辑设计有效的单元测试如何解决
SpringBoot单元测试快速写法问题之复杂的业务逻辑设计有效的单元测试如何解决
|
4月前
|
测试技术
详解单元测试问题之@InjectMocks注解的执行逻辑如何解决
详解单元测试问题之@InjectMocks注解的执行逻辑如何解决
71 1
|
4月前
|
测试技术 UED
软件测试的科学与艺术:从数据导向到逻辑严密的实践
本文旨在探讨软件测试领域中数据导向和逻辑严密性的重要性,并分析如何通过科学严谨的方法提升测试效率和质量。文章首先概述了软件测试的基本概念和挑战,随后深入讨论了数据在测试设计和结果分析中的关键作用,以及如何利用逻辑推理来构建有效的测试案例和识别潜在缺陷。最后,本文提出了一系列实践建议,旨在帮助测试人员更好地整合数据驱动和逻辑推理方法,以实现软件测试的最优化。
40 0
|
6月前
|
存储
存地址实现组包逻辑的一个测试代码。
存地址实现组包逻辑的一个测试代码。
43 0
|
测试技术 编译器
软件测试用例经典方法 | 逻辑覆盖测试法及案例
逻辑覆盖测试法是常用的一类白盒测试方法,其以程序内部逻辑结构为基础,通过对程序逻辑结构的遍历来实现程序测试的覆盖。逻辑覆盖测试法要求测试人员对程序的逻辑结构有清晰的了解。 逻辑覆盖测试法是一系列测试过程的总称,是使测试过程逐渐进行越来越完整的通路测试。从覆盖源程序语句的详尽程度,可以将其分为语句覆盖、判定覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖和路径覆盖等。接下来将通过下面程序的逻辑覆盖测试用例一一介绍这些覆盖准则,该程序的流程图如图4-1所示,其中,a、b、c、d、e是控制流上的若干程序点。
476 0
软件测试用例经典方法 | 逻辑覆盖测试法及案例
|
运维 测试技术 区块链
链动2+1模式系统开发指南流程丨成熟案例丨功能设计丨测试部署丨方案项目丨逻辑需求丨源码出售
链动2+1模式系统开发方案是指一个较为复杂的系统开发模式,其中包含两个公链和一个私链的组合。
|
区块链
数字货币永续合约系统开发|测试版|逻辑规则|案例详情
永续合约采用了期货合约的特点,尤其是无需交割实际商品。同时,模仿了现货市场的行为,以缩小期货价格与标记价格之间的差距。与传统的期货合约相比,这是一个很大的进步。