条件覆盖和条件组合覆盖测试设计-实验八例题

news2024/11/21 0:37:36

目录

条件覆盖

判定-条件覆盖

条件组合覆盖

实验内容:         以银行内部转账为实例,针对内部转账业务逻辑代码进行分析,运用条件覆盖和条件组合覆盖进行测试用例设计。

实验过程:


条件覆盖

条件覆盖(Condition Coverage指的是设计足够多的测试用例,使判定语句中的每个逻辑条件取真值与取假值至少出现一次,例如,在上一个实验的案例中,对于判定语句IF(a>1 OR c<0)中存在a>1c<0 2个逻辑条件,设计条件覆盖测试用例时,要保证a>1c<0”“值至少出现一次。下面设计条件覆盖测试用例,在该程序中,有2个判定语句,每个判定语句有2个逻辑条件,共有4个逻辑条件,使用标识符标识各个逻辑条件取真值与取假值的情况,如表1所示。


在表1中,使用S1标记x>0取真值(即x>0的情况,-S1标记x>0取假值(即x>0不成的情况。同使S2S3S4y<0x>2z>0取真值,使用-S2-S3-S4标记y<0x>2z>0取假值,最后得到执行条件判断语句的8种状态,设计测试用例时,要保证每种状态都至少出现一次。设计测试用例的原则是尽量以最少的测试用例达到最大的覆

盖率,则该段程序的条件覆盖测试用例如表2


判定-条件覆盖

         判定-件覆盖(Condition/Decision Coverage求设计足够多的测,使得定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次。

例如IF(a>1 AND c<1)a>1c<1测试用例时,要保证a>1c<1两个条件取“真”“假”值至少一次,同时,判定语句IF(a>1 AND c<1)假”值也至少出现一次。这就是判定-条件覆盖,它弥补了判定覆盖和条件覆盖的不足之处。

根据判定-条件覆盖原则,为该程序段设计判定-条件覆盖测试用例,如表3所示。

3   判定-条件覆盖测试用例

在表3中,条件1是指判定语句“IF x>0 AND y<02是指判定语句“IF x>2 OR z>0,条件判断的值0表示“假”,1表示“真”。表3-43个测试用例满足了所有条件可能取值至少出现一次,以及所有判定语句可能结果也至少出现一次的要求。

相比于条件覆盖、判定覆盖,判定-覆盖弥补了两者的不足之处,但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况,其覆盖范围并没有比条件覆盖更全面,判定-条件覆盖也没有覆盖acd路径,因此判定-覆盖仍旧存在遗漏测试的情况。

条件组合覆盖

条件组合(Multiple Condition Coverage指的是设计足够多的测试用例,使判定语句中每个条件的所有可能至少出现一次,并且每个判定语句本身的判定结果也至少出现一次,它

判定-条件覆的差别是,条合覆盖不简单地要求每个条件都现“真”与“假两种结果,而是要求让这些结果的所有可能组合都至少出现一次。

仍以之前案例程序为例,该程序中共有4个条件:x>0y<0x>2z>0我们依然用S1S2S3S4记这4条件成立,用-S1-S2-S3-S4记这些条件不成立。由于这4个条件每个条件都有取“真”“假”两个值,因此所有条件结果的组合有24=16种,如4所示。


44所有果的组情况过分可以268134种情况是不存在的,这几种情况要求x>0不成立,x>2成立,这2果相悖,因此最终所有条件组合情况有12种。根据这12种情况设计测试用例,具体如表5所示。


512试用例,12个测试例覆盖4个条结果的所组合,与-条件覆盖相比,条件组合覆盖包括了所有判定-条件覆盖,此它的盖范围广。但是当程序中条件比较多时,条件组合的数量会呈指数型增长,组合情况非常多,要设计的测试用例也会增加,这样反而会使测试效率降低。

验内容:
         以银行内部转账为实例,针对内部转账业务逻辑代码进行分析,运用条件覆盖和条件组合覆盖进行测试用例设计。

         内部转账用于处理发起户口号和接收户口号都是内部账户的系统内资金转账业务,主要用于财务资金的划拨、未实现自动清算业务的清算资金的划拨。

         1内部转账发起是指:发起行发出内部资金交易,并换人复核,满足条件时需会计主管授权。

         2内部转账接收是指:内部资金交易接收方根据接收方确认方式,对交易进行接收经办,满足条件的需复核或授权。

         确定接收方的入账流程,“确认方式”分为以下三种:
         1不需接收方确认,即发起方发起后自动记发起方和接收方的一套账务,接收方无须再做接收动作。

        (2需接收方确认,即接收方接收时不能更改接收信息,只能依据发起方输入的信息入账或退发起方。以目前的处理方式,接收经办→入账(金额小于100元),大于100万元时为接收经办+接收授权→入账。

        (3需接收方经办,即接收方接收时可以更改接收信息,执行入账或退发起行。以目前的处理方式,接收经办+接收复核→入账(金额小于100元),大于100元时为接收经办+接收复核+接收授权→入账。

内部转账权限控制如表6所示。

以下为银行内部转账控制的部分伪代码实现:

验过程:

1. 测试分析
1根据银行内部转账业务描述,分析内部转账流程,包括主流程、分支流程以及正常流程、异常流程。

2)模拟内部转账场景:触发内部转账的条件,不同条件是否走不同的转账流程。(3)数据项检查:数据项的计算规则,数据项后台判断逻辑。

2. 测试设计
根据内部转账业务需求,设计出程序流程图,并对程序流程图做节点标记,分析流程图

的判定条件与结果。

A~Q为测试路径编号,在下面的测试用例分析中将根据测试路径编号确定测试用例的业务流向。

         根据图2-1所示的流程图,标记出节点。根据条件覆盖方法来进行分析,得到如表2所示的符合条件覆盖标准的测试用例。

S(2)条件组合覆盖

对于判定1

条件转账金额>100W   取真为T1

条件转账金额<=100W  取假为F1

对于判定2

条件“确认方式”==1

取真为T2

条件“确认方式”==2

取真为T3

条件“确认方式”==3

取真为T4

条件T2T3T4都不成立

取假为F2

对于判定3

        ①条件“确认方式”==2  取真为T5

        ②条件“确认方式”==3  取真为T6

        ③条件T5T6都不成立 取假为F3
通过设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合

少出现一次。在这个银行内部转账流程上,判定1条件和判定23的条件分别构成组合。由于业务特定的逻辑,其组合简化为7而不是14

         判定1的条件T1和判定3中的各个条件构成组合,即3个组合,而不是2×3=6个组合;

         判定1的条件F1和判定2中的各个条件构成组合,即4合,而不是2×4=8个组合。

因此根据条件组合覆盖,总共有7试用例完成组合覆盖,如表3所示。这里不考虑异常情况,如转账金额<=0的情况。遇到这种况会异常退出,也法进入下一判定2或判定3,和组合也没关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1337577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

官宣定了!2024年举办4次PMP认证考试,每个季度一次

就在刚刚&#xff0c;2023年12月26日14:05分&#xff0c;PMI和中国国际人才交流基金会通过官微&#xff0c;联合发布了2024年PMI认证考试计划的通知&#xff0c;正式宣告了2024年的PMP考试初步安排。 这个通知发布之后&#xff0c;有一些伙伴问华研荟一些细节问题&#xff0c;…

挑战Python100题(6)

100+ Python challenging programming exercises 6 Question 51 Define a class named American and its subclass NewYorker. Hints: Use class Subclass(ParentClass) to define a subclass. 定义一个名为American的类及其子类NewYorker。 提示:使用class Subclass(Paren…

vue-awesome-swiper轮播组件

安装版本&#xff1a;"swiper": "^6.0.0", 安装版本&#xff1a;"vue-awesome-swiper": "^4.1.1", <div class"swiper_conter"><swiper class"swiper" :options"swiperOption" ref"mySw…

怎么实现Servlet的自动加载

在实际开发时&#xff0c;有时候会希望某些Servlet程序可以在Tomcat启动时随即启动。但在默认情况下&#xff0c;第一次访问servlet的时候&#xff0c;才创建servlet对象。 如果servlet构造函数里面的代码或者init方法里面的代码比较多&#xff0c;就会导致用户第一次访问serv…

浅谈能效管理平台在污水处理厂中的应用

摘要&#xff1a;《“十四五”城镇污水处理及资源化利用发展规划》指出&#xff0c;2021—2025 年合理减缓我国城镇污水收集处理设施发展不平衡不充分的矛盾&#xff0c;系统推动补短板强弱项&#xff0c;全方面提升污水收集处理效能&#xff0c;加速推进污水资源化利用&#x…

溴乙腈,2028年将以4.5%左右的复合年增长率增长

溴乙腈是一种化合物&#xff0c;主要用作合成各种药物、农用化学品和其他特种化学品的中间体。近年来&#xff0c;受医疗保健、农业和化学制造等各种最终用途行业对溴乙腈的需求不断增加的推动&#xff0c;全球溴乙腈市场一直在稳步增长。全球市场分析&#xff1a; 在制药和农业…

【Unity地形】使用地形工具创建场景环境-Terrain

如上图Unity的地形工具可以让我们实现创建复杂、丰富的3D室外环境。 我们创建地形很简单&#xff0c;在层级面板中右键-3Dobject-Terrain 就可以创建一个默认的地形模型&#xff01;这个模型是Unity内置的。 接下来的地形编辑功能全部集中在这个地形的组件上 主要功能如下&…

怎么修复MSVCR110.dll文件?全面解析MSVCR110.dll缺失修复方法

MSVCR110.dll文件缺失问题在Windows操作系统用户中相当普遍&#xff0c;经常导致应用程序启动失败或崩溃。MSVCR110.dll是Microsoft Visual C Redistributable for Visual Studio 2012的一部分&#xff0c;且应用程序通常依赖这个DLL文件来执行C库中的代码。文件的丢失可能源自…

Rabbit加密算法

一、引言 随着信息技术的快速发展&#xff0c;数据安全已成为越来越受到重视的领域。加密算法作为保障数据安全的重要技术手段&#xff0c;在通信、存储等领域得到了广泛应用。Rabbit加密算法作为一种新型的加密算法&#xff0c;凭借其简单易懂的原理、高速的运算性能以及良好…

isEmpty 和 isBlank 的用法区别,居然一半的人答不上来.....

亲爱的小伙伴们&#xff0c;由于微信公众号改版&#xff0c;打乱了发布时间&#xff0c;为了保证大家可以及时收到文章的推送&#xff0c;可以点击上方蓝字关注测试工程师成长之路&#xff0c;并设为星标就可以第一时间收到推送哦&#xff01; 也许你两个都不知道,也许你除了is…

MuJava提供的方法级别的7类变异算子总结

MuJava简洁 Java (muJava) 是 Java 程序的变异系统。 它自动生成用于传统突变测试和类级别突变测试的突变体。 Java 可以测试单个类和多个类的包。 用户以对封装在单独 JUnit 类的方法中的被测类的方法调用序列的形式提供测试。 官网地址&#xff1a;Java Home Page 归档表格…

【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; Mybatis ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 一、概述 MyBatis简介 主要特性 1. 动态SQL 2.结果映射 3 .插件机制 二、MyBatis配置文件 1.配置文件结构 数据库连…

力扣-收集足够苹果的最小花园周长[思维+组合数]

题目链接 题意&#xff1a; 给你一个用无限二维网格表示的花园&#xff0c;每一个 整数坐标处都有一棵苹果树。整数坐标 (i, j) 处的苹果树有 |i| |j| 个苹果。 你将会买下正中心坐标是 (0, 0) 的一块 正方形土地 &#xff0c;且每条边都与两条坐标轴之一平行。 给你一个整…

labelme目标检测数据类型转换

1. labelme数据类型 LabelMe是一个开源的在线图像标注工具&#xff0c;旨在帮助用户创建和标记图像数据集。它提供了一个用户友好的界面&#xff0c;让用户可以直观地在图像上绘制标记框、多边形、线条等&#xff0c;以标识和注释图像中的对象或区域。 GitHub&#xff1a;http…

[linux]高级IO

文章目录 高级IO0. IO介绍1. 五种IO模型1.0 感性理解(故事版)1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 IO多路转接1.5 异步IO 2. 高级IO重要概念2.1 同步通信 vs 异步通信2.2 阻塞 vs 非阻塞 3. 其他高级IO4. 非阻塞IO4.1 fcntl4.2 实现函数SetNoBlock4.2.0 阻塞方式读取标准输…

Shell 脚本应用(四)

正则表达式概述 正则表达式又称正规表达式&#xff0c;常规表达式。在代码中常简写为regex&#xff0c;regexp 或RE.正则表达式 是使用单个字符串来描述&#xff0c;匹配一系列符合某个句法规则的字符串&#xff0c;简单来说&#xff0c;是一种匹配字符串 的方法&#xff0c;通…

矩估计定义及例题

一、总体、样本、统计量 总体&#xff1a;在一个统计问题中&#xff0c;我们把研究对象的全体称为总体&#xff0c;构成总体的每个成员称为个体。 样本&#xff1a;在总体中抽取样本的过程称之为抽样&#xff0c;得到样本。 统计量&#xff1a; 二、矩估计 1.矩估计原理 估…

IRIS、Cache系统类汉化

文章目录 系统类汉化简介标签说明汉化系统包说明效果展示类分类%Library包下的类重点类非重点类弃用类数据类型类工具类 使用说明 系统类汉化 简介 帮助小伙伴更加容易理解后台系统程序方法使用&#xff0c;降低代码的难度。符合本土化中文环境的开发和维护&#xff0c;有助于…

浅析兼容性测试主要过程

兼容性测试是软件开发的重要环节&#xff0c;旨在验证软件在不同操作系统、浏览器、设备以及其他相关组件之间的兼容性和互操作性。下面是兼容性测试的主要过程&#xff1a; 1. 确定测试对象&#xff1a;需要确定要进行兼容性测试的软件或应用程序。这可以是一个网站、移动应用…

Android画布Canvas绘制手指MotionEvent.ACTION_MOVE 事件矩形方框,Kotlin

Android画布Canvas绘制手指MotionEvent.ACTION_MOVE 事件矩形方框&#xff0c;Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Rect import android.os.Bundle …