因果图判定表法

news2024/12/24 2:53:22

因果图&判定表法

在了解了等价类和边界值比较适宜搭档的测试用例方法之后

接下来我们来了解另外一队就是因果图和判定表

因果图会产生判定表法

因果图法

  • 等价类划分法和边界值分析方法都是着重考虑输入条件
  • 而不考虑输入条件的各种组合、输入条件之间的相互制约关系。例如地区的选择
  • 如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字
  • 因此必须考虑采用一种适合于描述多种条件的组合、产生多个相应动作的测试方法,这就需要利用因果图(逻辑模型)

因果图-判定表

  • 因果图法基于这样的思想:一些程序的功能可以用决策表的形式来表示,并根据输入条件的组合情况规定相应的操作
  • 因此,可以考虑为决策表中的每一列设计一个测试用例,以便测试程序在输入条件的某种组合下的输出是否正确
  • 概括的说,因果图法就是从程序规格说明书的描述中找出因(输入条件)和果(输出结果或程序状态的改变)
  • 将因果图转换为判定表,为判定表(也叫做决策表)中的每一列设计一个测试用例
  • 这种方法考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系(那些有互斥,那些无互斥这种情况)

判定表

  • 判定表(decision table)是分析和表达多逻辑条件下执行不同操作的工具
  • 在程序设计发展的初期,判定表就已被当做编写程序的辅助工具
  • 因为他可以把复杂的逻辑关系和多种条件组合的情况表达得具体

image-20230311203914711

  • 判定表通常由四个部分组成
    • 条件桩:列出了问题的所有条件,通常认为列出的条件的次序无关紧要。类似于你感到疲惫吗?你对内容感兴趣吗?
    • 动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束,这些结果一般都是互相排斥的。例如请回到本章开头重读,继续读下去
    • 条件项:列出针对他左列条件的取值,在所有可能情况下的真假值
    • 动作项:列出在条件项的各种取值情况下应该采取的动作

设计步骤

  1. 分析软件规格说明中那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给予每个原因和结果赋予一个标识符
  2. 分析软件规格说明中语义的内容,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。==直接画出判定表
  3. 由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特定的情况,在因果图上使用一些记号表明约束或限制条件
  4. 把因果图转换为判定表
  5. 根据判定表中的每一列设计测试用例

注意,虽然这些都是约定速成的,但是我们可以进行简化

实战

  • 使用因果图+判定表设计测试用例测试两位数加法计算器
image-20230311213125475

当然,这个例子可能不是那么那么标准。但是不要紧,后面还用一些例子进行补充,

  • 输入1:
    • 条件1:0<=x<=99
    • 条件2: -99<=x<0
    • 条件3: x<-99
    • 条件4: x>99
  • 输入2:
    • 条件1:0<=x<=99
    • 条件2: -99<=x<0
    • 条件3: x<-99
    • 条件4: x>99
  • 输出
    • 正确计算
    • 错误提示

分析条件互斥

  • 输入
    • 输入1:
      • 1 2 3 4 互斥
    • 输入2:
      • 1 2 3 4 互斥
  • 输出
    • 输出结果正确和错误互斥

跳过因果图

分析、简化并画出判定表

image-20230311213721327

这里的“-”是具有普适性的。也就是说当条件3成立,输入2里不管什么值该输出结果都是错误提示。

条件1 2 是有效等价类, 条件 3 4 是无效等价类

有效等价类会产生4种结果,无效的也是4种结果

以列为单位,写出测试用例。比如第一列,可能取值为90 + 90 = 180

以此类推,取出8层测试用例额

image-20230311214023222

因果图法用例设计联系

image-20230311214239194
  • 同理我们将同一测试需求用因果图设计
  • 余额宝提现到银行卡增加新规则:快速到账(2小时)日限额1w元,超过1w元只能选择普通到账
  • 按照y因果图法设计测试用例

分析输入条件和输出条件

  • 输入
    • 输入1:
      • a1:快速体现
      • a2:普通体现
    • 输入2:
      • a1:0<x<=10000
      • a2: x<=0
      • a3: x>10000
  • 输出
    • b1:提现成功
    • b2:提现失败

分析、简化并画出判定表

image-20230311214555073

这三类条件都是互斥的

经典因果图-判定表面试题

  • 问题:某厂工资发放
  • 描述、分析:
    • 工资分为年薪制a1,月薪制a2
    • 错误程度分为普通a3,严重a4
    • 工资为a1的员工犯普通错误扣工资2%(b1),犯严重错误扣工资6%(b2)
    • 工资为a2的员工犯普通错误的扣工资4%(b3),犯严重错误扣工资8%(b4)
    • 其中a1和a2为互斥,b1 b2和 b3 b4是互斥,a3 a4可以同时具备
输入
a1TTTTFFFF
a2FFFFTTTT
a3TFTFTFTF
a4FTTFFTTF
输出
b1××
b2××
b3××
b4××

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

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

相关文章

每天5分钟玩转机器学习算法:逆向概率的问题是什么?贝叶斯公式是如何解决的?

本文重点 前面我们已经知道了贝叶斯公式,以及贝叶斯公式在机器学习中的应用,那么贝叶斯公式究竟解决了一个什么样的问题呢?贝叶斯是为了解决逆向概率的问题。 正向的概率和逆向的概率 正向概率:假设袋子里面有N个白球,有M个黑球,你伸手一摸,那么问题就是你摸出黑球的概…

金三银四、金九银十 面试宝典 MySQL面试题 超级无敌全的面试题汇总(超万字的面试题,让你的MySQL无可挑剔)

MySQL数据库 - 面试宝典 又到了 金三银四、金九银十 的时候了&#xff0c;是时候收藏一波面试题了&#xff0c;面试题可以不学&#xff0c;但不能没有&#xff01;&#x1f941;&#x1f941;&#x1f941; 一个合格的 计算机打工人 &#xff0c;收藏夹里必须有一份 MySQL 八…

snmputilg和snmputil的下载 / Win10下SNMP服务的安装和配置

文章目录1. snmputilg和snmputil的下载2. 在Windows上安装SNMP服务3.在Windows上进行SNMP服务的相关配置4.测试是否配置成功1. snmputilg和snmputil的下载 snmputilg和snmputil的下载 该工具是学习和模拟SNMP协议的十分常用的工具。 2. 在Windows上安装SNMP服务 右键开始图标—…

【JVM篇2】垃圾回收机制

目录 一、GC的作用 申请变量的时机&销毁变量的时机 内存泄漏 垃圾回收的劣势 二、GC的工作过程 回收垃圾的过程 第一阶段&#xff1a;找垃圾/判定垃圾 方案1&#xff1a;基于引用计数(非Java语言) 引用计数方式的缺陷 方案2&#xff1a;可达性分析(基于Java语言) …

蓝桥杯嵌入式ADC与DAC(都不需要中断)

目录 1.原理图 &#xff08;1&#xff09;ADC的原理图 &#xff08;2&#xff09;DAC的原理图 2.STM32CubeMX的配置 &#xff08;1&#xff09;ADC的配置 &#xff08;2&#xff09;DAC配置 3.代码部分 &#xff08;1&#xff09;ADC代码 &#xff08;2&#xff09;DA…

【C语言深度剖析】关键字(全)

文章目录一.存储类型关键字前言补充1&#xff1a;内存思考&#xff1a;补充2&#xff1a;变量与内存的关系补充3&#xff1a;变量的分类补充4&#xff1a;存储类补充5&#xff1a;删除数据是怎么删除的&#xff1f;1.auto2.register3.static4.extern基本用法:基本功能5.typedef…

「计算机组成原理」数据的表示和运算(二)

文章目录五、奇偶校验码六、算术逻辑单元ALU6.1 电路的基本原理6.2 加法器的设计6.2.1 一位全加器6.2.2 串行加法器6.2.3 串行进位的并行加法器6.2.4 并行进位的并行加法器七、补码加减运算器八、标志位的生成九、定点数的移位运算9.1 算数移位9.2 逻辑移位9.3 循环移位五、奇偶…

Matlab生成sinc信号

Matlab生成sinc信号 在Matlab中生成sinc信号非常容易。首先&#xff0c;我们需要了解什么是sinc波形。 sinc波形是一种理想的信号&#xff0c;它在时域上是一个宽度为无穷的矩形函数&#xff0c;而在频域上则是一个平的频谱。它的公式为&#xff1a; sinc⁡(x)sin⁡(πx)πx\…

YOLOv5源码逐行超详细注释与解读(3)——训练部分train.py

前言 本篇文章主要是对YOLOv5项目的训练部分train.py。通常这个文件主要是用来读取用户自己的数据集&#xff0c;加载模型并训练。 文章代码逐行手打注释&#xff0c;每个模块都有对应讲解&#xff0c;一文帮你梳理整个代码逻辑&#xff01; 友情提示&#xff1a;全文近5万字…

学习电气自动化PLC编程最基础的十大知识点详解

这篇文章其实是学习PLC自动化过程中必须要理解的基础问题&#xff0c;不管是西门子PLC还是三菱PLC&#xff0c;抑或欧姆龙PLC&#xff0c;以及国产品牌的PLC&#xff0c;这些问题都必须理解透&#xff0c;才能更好的开始自动化编程。不然指令学完了梯形图的逻辑可能还是搞不懂&…

Datatables展示数据(表格合并、日期计算、异步加载数据、分页显示、筛选过滤)

系列文章目录 datatable 自定义筛选按钮的解决方案Echarts实战案例代码(21)&#xff1a;front-endPage的CJJTable前端分页插件ajax分页异步加载数据的解决方案 文章目录系列文章目录前言一、html容器构建1.操作按钮2.表格构建二、时间日期计算三、dataTables属性配置1.调用2.过…

java多线程与线程池-03线程池与阻塞队列

第6章 线程池与阻塞队列 6.1 Queue接口 队列是一种特殊的集合,一般队列都具有先进先出(FIFO)的特性(并不绝对要求)。优先级队列(PriorityQueue)按照元素的比较方法排序,其他队列基本采用自然序排队。 队列Queue接口实现了Collection接口,offer()方法负责把元素插入…

带头双向循环链表及链表总结

1、链表种类大全 1、链表严格来说可能用2*2*28种结构&#xff0c;从是否带头&#xff0c;是否循环&#xff0c;是否双向三个角度区分。 2、无头单向循环链表一般不会在实际运用中直接存储数据&#xff0c;而会作为某些更复杂结构的一个子结构&#xff0c;毕竟它只在头插、头删…

【数据结构之二叉树】——二叉树的概念及结构,特殊的二叉树和二叉树性质

文章目录一、二叉树的概念及结构1.概念2.现实中的二叉树3. 特殊的二叉树&#xff1a;3.二叉树的性质二、二叉树练习题总结一、二叉树的概念及结构 1.概念 一棵二叉树是结点的一个有限集合&#xff0c;该集合: 或者为空由一个根节点加上两棵别称为左子树和右子树的二叉树组成…

线性表的链式表示

文章目录1.单链表1.1单链表的表示1.1.1构建 带头结点的单链表1.2基本操作1.2.1 头插法1.2.2 尾插法1.2.3 按序号查找结点1.2.4 按值查找表结点1.2.5 插入结点操作扩展&#xff1a;前插操作1.2.6 删除结点操作扩展&#xff1a;删除结点*p1.2.7 求表长操作2.双链表2.1 双链表的表…

JVM相关知识

JVM类加载过程类什么时候被加载什么情况下会发生栈内存溢出JVM内存模型常量池回收方法区垃圾回收流程圾收集算法分代收集理论标记-清除算法标记-复制算法标记-整理算法类加载过程 加载–验证–准备–解析–初始化–使用–卸载 ​ 加载&#xff1a;通过全类名获取类的二进制流…

【C++】非类型的模板参数,特化

目录 1.类型模板参数和非类型模板参数 2.特化 3. 模板的分离编译 4.模板的优缺点 1.类型模板参数和非类型模板参数 之前写模板传的都是类型——类型模板参数 现在想定义两个静态数组&#xff0c;数组长度不同&#xff0c;就可以用模板参数传数值而不是传类型 非类型模板…

Docker与微服务实战2022

基础篇(零基小白)1.Docker简介1.1 是什么问题&#xff1a;为什么会有docker出现&#xff1f;您要如何确保应用能够在这些环境中运行和通过质量检测&#xff1f;并且在部署过程中不出现令人头疼的版本、配置问题&#xff0c;也无需重新编写代码和进行故障修复&#xff1f; 答案就…

Android源码分析 - View的触摸事件分发

0. 相关分享 Android源码分析 - InputManagerService与触摸事件 1. 接收Input系统发送来的事件 时序图源&#xff1a;稀土掘金 在注册Window的时候&#xff0c;来到ViewRootImpl&#xff0c;其中不仅发起窗口注册&#xff0c;还开启了输入事件的监听&#xff1a; //ViewRoo…

nuxt3使用总结

目录 背景 安装 项目配置 路由 Tailwindcss引入 全局样式配置 css预处理器 安装 Tailwindcss 项目的配置 部署上线 seo优化 背景 新入职了一家公司&#xff0c;刚进入公司第一个需求就是先做一个公司的官网&#xff0c;需要使用vue写&#xff0c;作为祖师爷的粉丝…