动态白盒测试——逻辑覆盖测试法
逻辑覆盖测试法
定义
以程序内部的逻辑结构为基础的用例设计方法,它通过对程序逻辑结构的遍历实现程序的覆盖。
逻辑覆盖测试法分为:语句覆盖、判定覆盖(分支覆盖)、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖六种。
//以下代码用于测试六种逻辑覆盖测试法
IntlogicExample(int x, int y){int magic=0;if(x>0&&y>0)magic=x + y + 10; //语句1else magic = x + y - 10; //语句2if(magic<) magic=0; //语句3return magic; //语句4
}
代码流程图如下
语句覆盖
定义
语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每条语句至少被执行一次。
实例
测试用例编号 | 输入数据 | 预期输出 | 覆盖语句 |
---|---|---|---|
CASE1 | x=3 y=3 | magic=16 | 语句1、4 |
CASE2 | x=-3 y=0 | magic=0 | 语句2、3 |
(测试用例不唯一)
在这个实例中,无法判断运算中逻辑关系错误。当第一个判断语句if(x>0&&y>0)
被错写成if(x>0||y>0)
也能达到100%的语句覆盖,所以语句覆盖不能发现上述的逻辑错误。
判定覆盖
满足判定覆盖,则满足语句覆盖。
定义
判定覆盖,又称”分支覆盖“;要求设计足够多的测试用例,运行被测程序,使得程序中每个判断的”真“和”假“都至少被执行一次。
实例
在本例共有两个判断条件:if(x>0&&y>)
和if(magic<0)
测试用例编号 | 输入数据 | 预期输出 | 执行路径 |
---|---|---|---|
CASE1 | x=3 y=3 | magic=16 | b–>c–>e |
CASE2 | x=-3 y=0 | magic=0 | a–>c–>d–>e |
通过着两个测试用例,两个判断的真、假分支都已经被执行过,所以满足了判定覆盖的标准。
在这个实例中,无法判断运算中逻辑关系错误。当第一个判断语句if(x>0&&y>0)
被错写成if(x>0||y>0)
也能达到100%的语句覆盖,所以判定覆盖也无法发现上面的逻辑错误。
条件覆盖
定义
条件覆盖要求设计足够多的测试用例,运行被测程序,使得判定中的每个条件获得各种可能的结果;即每个条件至少有一次为真,有一次为假。
实例
本例共有两个判断条件:if(x>0&&y>)
和if(magic<0)
共计三个条件x>0、y>0、magic<0
测试用例编号 | 输入数据 | 预期输出 | 执行路径 |
---|---|---|---|
CASE1 | x=3 y=0 | magic=0 | a–>c–>d–>e |
CASE2 | x=-3 y=15 | magic=2 | a–>c–e |
通过这两个测试用例,三个条件的各种可能取值都满足了一次,达到了100%条件覆盖的标准。
条件覆盖职能保证每个条件至少有一次为真,而不考虑所有的判定结果。因此条件覆盖不能保证满足判定覆盖。
判定-条件覆盖
同时满足判定覆盖和条件覆盖
定义
判定-条件覆盖要求设计足够多的用例,运行被测程序,使得被测程序中的每个判断本身的结果(真、假)至少满足一次,同时,每个逻辑条件的可能值也至少满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。
实例
测试用例编号 | 输入数据 | 预期输出 | 执行路径 |
---|---|---|---|
CASE1 | x=3 y=3 | magic=16 | b–>c–e |
CASE2 | x=-3 y=0 | magic=0 | a–>c–>d–>e |
通过这两个测试用例,所有条件的可能取值都满足了一次,而且所有的判断本身的判定结果也都满足了一次。
判定-条件覆盖满足了判定覆盖准则和条件覆盖准则,弥补了二者的不足。但未考虑条件组合的情况。
条件组合覆盖
条件组合覆盖同时满足语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖
定义
条件组合覆盖要求设计足够多的测试用例,运行被测程序,使得被测程序中每个判定中条件结果的所有可能组合至少执行一次。
其测试用例需要注意三点:
1. 条件组合只针对同一个判断语句内存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合;
2. 不同的判断语句内的条件取值之间无须组合;
3. 对于单条件的判断语句,只需要满足自己所有的取值即可。
实例
测试用例编号 | 输入数据 | 预期输出 | 执行路径 |
---|---|---|---|
CASE1 | x=3 y=3 | magic=16 | b–>c–e |
CASE2 | x=-3 y=0 | magic=0 | a–>c–>d–>e |
CASE3 | x=3 y=0 | magic=0 | a–>c–>d–>e |
CASE4 | x=-3 y=15 | magic=2 | a–>c–>e |
通过这四个测试用例,程序中所有条件取值的组合都被满足了一次。
路径覆盖
100%满足路径测试,一定能100%满足判定覆盖标准,单并不一定能100%满足条件覆盖,也就不能满足100%条件组合覆盖。
定义
路径覆盖要求设计足够的测试用例,运行被测程序,覆盖程序中所有可能的路径。
实例
测试用例编号 | 输入数据 | 预期输出 | 执行路径 |
---|---|---|---|
CASE1 | x=3 y=3 | magic=16 | b–>c–e |
CASE2 | x=-3 y=0 | magic=0 | a–>c–>d–>e |
CASE3 | x=-3 y=15 | magic=2 | a–>c–>e |
本例中共有4条路径,其中路径a-->c-->e
不可能实现,通过这三个测试用例,所有可能的路径都被满足了一次。
动态白盒测试——逻辑覆盖测试法相关推荐
- 软件测试—第五章白盒测试.逻辑覆盖法
一,逻辑覆盖 1,语句覆盖 (1)基本思路:设计测试用例,运行被测程序,使程序中每个可执行语句至少被执行一次. (2)只需要一个测试用例就可以测试所有语句 (3)优点:可以直观的从源代码得到测试用例, ...
- 详述白盒测试逻辑覆盖法的语句覆盖及其缺点
语句覆盖的定义: 语句覆盖就是设计若干个测试用例,使被测试程序中的每条可执行语句至少执行一次.比如说我们测试用例里面有10个语句,那么这10个语句都要被测试到. https://blog.csdn.n ...
- 【无标题】逻辑覆盖-路径覆盖(白盒测试)
本关任务:以闯关的模式,让学生在自己设计测试用例的过程中一步一步掌握逻辑覆盖的各个等级. 相关知识 路径覆盖 定义 路径覆盖(Path Coverage)的含义是,选取足够多的测试用例,覆盖程序中所有 ...
- 软件测评师之逻辑覆盖(二)
数据结构与算法 白盒测试 逻辑覆盖又可分为以下6种 判定覆盖(分支覆盖) 程序中每个判定至少有一次为真值,有一次为假值,使得程序中每个分支至少执行一次 特点 1.满足判定覆盖的测试用例一定满足语句覆盖 ...
- 详解软件测试中白盒测试基本概念及四种白盒测试方法以及六种逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)
在这篇文章中,我们将讲解白盒测试的基本概念,以及四大常用的白盒测试方法. 一.白盒测试基本概念 1.白盒测试的定义 白盒测试又称为结构测试或逻辑驱动测试,它是把测试对象看成一个透明的盒子,它允许测试人 ...
- 白盒测试简介与逻辑覆盖
概述 白盒测试是一种按照程序内部逻辑结构和编码结构设计测试数据或测试用例并完成测试的测试方法,又称为结构测试.透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被 ...
- 白盒测试——静态测试/逻辑覆盖/基本路径测试
一.实验目的 能够掌握白盒测试的静态测试.逻辑覆盖(语句覆盖.判定覆盖.条件覆盖.判定-条件覆盖.条件组合覆盖.路径覆盖).基本路径测试原理 能够运静态白盒测试.逻辑覆盖(语句覆盖.判定覆盖.条件覆盖 ...
- 详述白盒测试的逻辑覆盖的路径覆盖及其优缺点
详述白盒测试的逻辑覆盖的路径覆盖及其优缺点 定义: 与其他覆盖的关系: 路径覆盖率: 测试用例: 优缺点: 定义: https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢 ...
- 详述白盒测试的逻辑覆盖的条件覆盖及其优缺点
条件覆盖 详述白盒测试的逻辑覆盖的条件覆盖及其优缺点: 条件覆盖的定义: 与判定覆盖的区别: 条件覆盖率: 测试实例: 代码: 优缺点: 详述白盒测试的逻辑覆盖的条件覆盖及其优缺点: https:// ...
最新文章
- CentOS 7.7 安装cmake3
- jstl:sql标签介绍
- python 计时_Python time clock()方法
- php保存复制粘贴的网页内容,JS实现网站内容的禁止复制和粘贴、另存为
- 带用户名和密码的GitHub链接
- httpd配置文件详解(上)
- 【毕业设计】深度学习 python opencv 火焰检测识别
- Java中new一个对象是一个怎样的过程?JVM中发生了什么?
- 计算机主板USB接口介绍,如何解决计算机主板USB接口供电不足
- iOS开发企业版ipa分发
- dvanced Installer Architect
- 数据库MySQL语句期末复习 CTGU
- java程序员越来越多,为啥工资反而越来越高?
- hdmi怎么支持2k分辨率_27寸2k分辨率的护眼显示器推荐:飞利浦275E9使用测评
- 天龙八部服务端数据传递
- unity3D赛车游戏项目源代码
- Java web项目利用POI导出EXCEL表格
- 实战 本地服务器Confluence 7.13部署 一篇就够(从0开始安装配置 Debian11 + Mysql + Java)超详细
- 当前目录不对导致的错误
- Mvc 微信企业号开发之ACCESS_TOKE 获取
热门文章
- 如何区分MOS管、三极管(从MOS管、三极管的结构方面理解)
- 需求文档 | 产品需求文档(PRD)
- 华章1-2月份新书简介(2017年)
- Debug | jupyter notebok 500 : Internal Server Error
- java实习生简历模板
- 微型计算机主板最新发展,三镇学子齐瞩目——精英主板 Intel915P平台新技术体验营首选武汉...
- 都说it是吃青春饭的,那些35岁左右的it女技术人员(测试)都在做啥呢?转行了吗?
- 〖全域运营实战白宝书 - 高转化文案速成篇③〗- 高打开率标题型文案的10大黄金法则
- qmake:变量手册
- Azure 2 月新公布