因果图判定表法
因果图&判定表法
在了解了等价类和边界值比较适宜搭档的测试用例方法之后
接下来我们来了解另外一队就是因果图和判定表
因果图会产生判定表法
因果图法
- 等价类划分法和边界值分析方法都是着重考虑输入条件
- 而不考虑输入条件的各种组合、输入条件之间的相互制约关系。例如地区的选择
- 如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字
- 因此必须考虑采用一种适合于描述多种条件的组合、产生多个相应动作的测试方法,这就需要利用因果图(逻辑模型)
因果图-判定表
- 因果图法基于这样的思想:一些程序的功能可以用决策表的形式来表示,并根据输入条件的组合情况规定相应的操作
- 因此,可以考虑为决策表中的每一列设计一个测试用例,以便测试程序在输入条件的某种组合下的输出是否正确
- 概括的说,因果图法就是从程序规格说明书的描述中找出因(输入条件)和果(输出结果或程序状态的改变)
- 将因果图转换为判定表,为判定表(也叫做决策表)中的每一列设计一个测试用例
- 这种方法考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系(那些有互斥,那些无互斥这种情况)
判定表
- 判定表(decision table)是分析和表达多逻辑条件下执行不同操作的工具
- 在程序设计发展的初期,判定表就已被当做编写程序的辅助工具
- 因为他可以把复杂的逻辑关系和多种条件组合的情况表达得具体
- 判定表通常由四个部分组成
- 条件桩:列出了问题的所有条件,通常认为列出的条件的次序无关紧要。类似于你感到疲惫吗?你对内容感兴趣吗?
- 动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束,这些结果一般都是互相排斥的。例如请回到本章开头重读,继续读下去
- 条件项:列出针对他左列条件的取值,在所有可能情况下的真假值
- 动作项:列出在条件项的各种取值情况下应该采取的动作
设计步骤
- 分析软件规格说明中那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给予每个原因和结果赋予一个标识符
- 分析软件规格说明中语义的内容,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。==直接画出判定表
- 由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特定的情况,在因果图上使用一些记号表明约束或限制条件
- 把因果图转换为判定表
- 根据判定表中的每一列设计测试用例
注意,虽然这些都是约定速成的,但是我们可以进行简化
实战
- 使用因果图+判定表设计测试用例测试两位数加法计算器
当然,这个例子可能不是那么那么标准。但是不要紧,后面还用一些例子进行补充,
- 输入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 互斥
- 输入1:
- 输出
- 输出结果正确和错误互斥
跳过因果图
分析、简化并画出判定表
这里的“-”是具有普适性的。也就是说当条件3成立,输入2里不管什么值该输出结果都是错误提示。
条件1 2 是有效等价类, 条件 3 4 是无效等价类
有效等价类会产生4种结果,无效的也是4种结果
以列为单位,写出测试用例。比如第一列,可能取值为90 + 90 = 180
以此类推,取出8层测试用例额
因果图法用例设计联系

- 同理我们将同一测试需求用因果图设计
- 余额宝提现到银行卡增加新规则:快速到账(2小时)日限额1w元,超过1w元只能选择普通到账
- 按照y因果图法设计测试用例
分析输入条件和输出条件
- 输入
- 输入1:
- a1:快速体现
- a2:普通体现
- 输入2:
- a1:0<x<=10000
- a2: x<=0
- a3: x>10000
- 输入1:
- 输出
- b1:提现成功
- b2:提现失败
分析、简化并画出判定表
这三类条件都是互斥的
经典因果图-判定表面试题
- 问题:某厂工资发放
- 描述、分析:
- 工资分为年薪制a1,月薪制a2
- 错误程度分为普通a3,严重a4
- 工资为a1的员工犯普通错误扣工资2%(b1),犯严重错误扣工资6%(b2)
- 工资为a2的员工犯普通错误的扣工资4%(b3),犯严重错误扣工资8%(b4)
- 其中a1和a2为互斥,b1 b2和 b3 b4是互斥,a3 a4可以同时具备
输入 | ||||||||
---|---|---|---|---|---|---|---|---|
a1 | T | T | T | T | F | F | F | F |
a2 | F | F | F | F | T | T | T | T |
a3 | T | F | T | F | T | F | T | F |
a4 | F | T | T | F | F | T | T | F |
输出 | ||||||||
b1 | × | × | ||||||
b2 | × | × | ||||||
b3 | × | × | ||||||
b4 | × | × |
相关文章:

因果图判定表法
因果图&判定表法 在了解了等价类和边界值比较适宜搭档的测试用例方法之后 接下来我们来了解另外一队就是因果图和判定表 因果图会产生判定表法 因果图法 等价类划分法和边界值分析方法都是着重考虑输入条件而不考虑输入条件的各种组合、输入条件之间的相互制约关系。例…...
Oracle 数据库相关信息清单列表
Oracle 数据库相关信息清单列表 一、设置Oracle安装目录 Oracle基目录(ORACLE_BASE):D:\databases\oracle\oracle_11g\app\Administrator 软件位置(ORACLE_HOME):D:\databases\oracle\oracle_11g\app\Administrator\product\11.2.0\dbhome_1 数据库文件位置:D:\databa…...

射频资料搜集--推荐几个网站和链接
https://picture.iczhiku.com/resource/eetop/wHKYFQlDTRRShCcc.pdfhttps://picture.iczhiku.com/resource/eetop/wHKYFQlDTRRShCcc.pdfVCO pulling的资料 模拟滤波器与电路设计手册 - 射频微波仿真 - RF技术社区 Practical RF Amplifier Design Using the Available Gain Pr…...
B1048 数字加密
decription 本题要求实现一种数字加密方法。首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 J 代表 10、Q 代表 11、K 代表 …...
Qt使用FFmpeg播放视频
一、使用场景 因为项目中需要加载MP4播放开机视频,而我们的设备所使用的架构为arm架构,其中缺乏一些多媒体库。安装这些插件库比较麻烦,所以最终决定使用FFmpeg播放视频。 二、下载编译ffmpeg库 2.1 下载源码 源码下载路径:http…...

Win32 ListBox控件
Win32 ListBox控件 创建ListBox控件 创建窗口函数 HWND CrateWindowEx(DWORD dwExStyle , // 窗口的扩展风格,基本没用LPCTSTR lpClassName, // 已经注册的窗口类名称LPCTSTR lpWindowName, // 窗口标题栏的名字DWORD dwStyle, // 窗口的基本风格int x, // 左上角水平坐标int …...

最大值池化与均值池化比较分析
1 问题在深度学习的卷积网络过程中,神经网络有卷积层,池化层,全连接层。而池化层有最大值池化和均值池化两种情况,而我们组就在思考,最大值池化和均值池化有什么区别呢?两者的模型准确率是否有所不同&#…...
统计学 多元线性回归
文章目录统计学 多元线性回归多元线性回归模型拟合优度显著性检验线性关系检验回归系数检验多重共线性及其处理多重共线性的问题多重共线性的识别与处理变量选择利用回归方程进行预测哑变量回归统计学 多元线性回归 多元线性回归模型 多元线性回归模型:设因变量为…...

tar和gzip压缩和解压
打包和压缩的区别:打包:将多文件 封装在一起压缩:将多文件 封装在一起 通过特定的算法 将冗余的数据 进行删除tar默认是打包命令,如果想用tar进行压缩 必须加选项1、gzip格式压缩:tar zcvf 压缩包包名 文件1 文件2 文件…...

搭建Docker企业私有仓库
什么是仓库 仓库(Repository)是存储和分发 Docker 镜像的地方。镜像仓库类似于代码仓库,Docker Hub 的命名来自 GitHub,Github 是我们常用的代码存储和分发的地方。同样 Docker Hub 是用来提供 Docker 镜像存储和分发的地方。 谈…...

[NOIP2009 提高组] 最优贸易(C++,tarjan,topo,DP)
题目描述 $C 国有国有国有 n 个大城市和个大城市和个大城市和 m$ 条道路,每条道路连接这 nnn个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 mmm 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的…...

计算机网络:移动IP
移动IP相关概念 移动IP技术是移动结点(计算机/服务器)以固体的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游中不发生任何改变。移动结点:具有永久IP地址的设备。归属代理(本…...
binutils工具集——GNU binutils工具集简介
以下内容源于网络资源的学习与整理,如有侵权请告知删除。 GNU binutils是一个二进制工具集,主要包括: ld,GNU链接器。as,GNU汇编器。addr2line,把地址转化为文件名和行号。nm,列出目标文件的符…...
Golang编译选项(ldflags)有趣应用
本文介绍如何在构建时使用ldflags选项给Golang应用程序注入变量,用于给Go可执行文件增加版本标识或GIT提交摘要等信息。 应用程序的版本信息 我们首先查看Docker Cli 包含的提交信息: docker version 返回结果: Server: Docker Engine - Co…...
AIR32F103(十一) 在AIR32F103上移植微雪墨水屏驱动
目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告AIR32F103(二) Linux环境和LibOpenCM3项目模板AIR32F103(三) Linux环境基于标准外设库的项目模板AIR32F103(四) 27倍频216MHz,CoreMark跑分测试AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码AIR32F103(六) ADC,I2S…...
Uipath Excel 自动化基础系列文章
Uipath Excel 自动化基础系列文章已发布到CSDN,网址:https://blog.csdn.net/Marshaljun?typeblog (3月份会在CSDN博客发布Uipath Excel 实战课程及经验分享) Uipath Studio流程设计器介绍 https://blog.csdn.net/Marshaljun/article/details/128699022 Uipath St…...
神经网络优化器之随机梯度下降法的理解
随机梯度下降法(SGD)随机梯度下降方法,在每次更新时用1个样本,随机也就是说我们用样本中的一个例子来近似我所有的样本,由于计算得到的并不是准确的一个梯度,因而不是全局最优的。但是相比于批量梯度&#…...

记录一次WIN11开机在登录页面循环的问题
记录一次由于未进行win密码设置,导致开机后卡在登录界面无法登录进去的问题。最后完美解决了。 1. 背景 开机后,显示用户登录界面,但是和以往不同,没有了密码输入框,只有一个“登录”按钮孤零零地显示在屏幕中间&…...
始终从最不易改变的方面开始
在你刚开始新工作、转换职业或者是加入新项目时,始终从最不易改变的方面开始。 在工作中,这可能意味着与团队成员建立关系,了解公司的流程和文化,或者熟悉公司的产品或服务。 在一项新项目中,这可能意味着了解项目范…...
4、Httpclient源码解析之HTTP协议
初始化CloseableHttpClient过程中涉及ExecChainHandler & DefaultHttpProcessor,即典型客户端责任链中的请求执行处理器。 责任链中各节点涉及请求处理器【ExecChainHandler】顺序如下:RedirectExec、ContentCompressionExec、HttpRequestRetryExec…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...