测试用例设计方法之因果图详解

news2024/11/27 19:51:43

一、因果图概述

  • 因果图是从需求中找出因(输入条件)和果(输出或程序状态的改变),通过分析输入条件之间的关系(组合关系、约束关系等)及输入和输出之间的关系绘制出因果图,再转化成判定表,从而设计出测试用例的方法。
  • 该方法主要适用于各种输入条件之间存在某种相互制约关系或输出结果依赖于各种输入条件的组合时的情况
  • 注意: 1)所有的输入输出条件的相互制约关系以及组合关系 2)输出结果对输入条件的依赖关系。也就是什么样的输入组合会产生怎样的输出结果,即“因果关系”

二、因果图符号与关系

  1. 条件和结果之间的关系:左侧节点表示输入状态即原因,右侧节点表示输出状态即结果

  1. 条件与条件之间的关系

  • 要求案例:qq做自动登录时,勾选自动登录,那么就一定要求勾上记住密码。

 

三、因果图分析步骤

  1. 找出所有原因,原因即输入条件或输入条件的等价类;找出所有的结果,结果即输出结果;
  2. 明确所有输入条件之间的关系;明确所有输出结果之间的关系
  3. 找出什么样的输入条件组合会出现哪种输出结果,画出因果图;
  4. 把因果图转换成判定表(决策表);
  5. 为判定表(决策表)中的每一列表示的情况设计测试用例。

四、案例实战

交通一卡通自动充值软件系统需求:

系统只接收50元或100元纸币,一次充值自能使用一张纸币,一次充值金额只能为50元或100元
若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功;


若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元;
若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,并找零50元;
若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功;
若输入纸币后在规定时间内不选择充值按钮,退回输入的纸币,提示错误;
若选择充值按钮后不输入纸币,提示错误

  • 步骤一:找出所有条件和结果

  1. 步骤二:画出因果图

  1. 步骤三:根据因果图得出判定表

  1. 步骤四:根据判定表编写用例,每一列写一条用例

用因果图设计测试用例的方法你学会了没?

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

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

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

相关文章

composer-创建自己的依赖库

1.环境 码云账号(或者GitHub)码云地址composer 官方仓库账号 Packagist composer官方仓库安装composer 2.步骤 2.1 发行composer的依赖包是需要从git 或者svn里拉取的,所以得先在码云里创建一个仓库 2.2 依赖包中必须有composer.json配置标明名字依赖等信息,配置大概如下,配…

Vue基础第五篇

一、动态组件 1.基本使用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>动态组件</title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></sc…

华为安全专家带你入门安全多方计算

安全多方计算 从0到1 6月8日&#xff08;本周四&#xff09; 19:00—21:00&#xff0c;华为安全专家带你入门安全多方计算&#xff0c;欢迎参加&#xff01; 考虑以下应用场景&#xff1a; Alice认为她可能患有某种遗传病&#xff0c;Bob有一个包含DNA模式与各类疾病的数据库。…

Hive执行计划之hive依赖及权限查询和常见使用场景

文章目录 概述1.explain dependency的查询与使用2.借助explain dependency解决一些常见问题2.1.识别看似等价的SQL代码实际上是不等价的&#xff1a;2.2 通过explain dependency验证将过滤条件在不同位置的查询区别 3.查看SQL操作涉及到的相关权限信息 概述 Hive查看执行计划的…

RocketMQ-Request-Reply特性

源码版本号:版本号:4.9.4 使用场景 随着服务规模的扩大&#xff0c;单机服务无法满足性能和容量的要求&#xff0c;此时需要将服务拆分为更小粒度的服务或者部署多个服务实例构成集群来提供服务。在分布式场景下&#xff0c;RPC是最常用的联机调用的方式。 在构建分布式应用…

高考季,17岁VS人工智能,谁的作文更胜一筹?

又到一年高考日。想起十二年前我也曾和众多莘莘学子一样,在这场人生的史诗里挣扎奋斗。 那时的我满怀着期待和焦虑,站在人生的岔口,茫然纠结该循哪条道路。十二年光阴荏苒,岁月如梭, 如今我已不复当年学子的面容,更无法回首当时的迷茫与彷徨。 时过境迁,我如今以另一种身份再…

flask+scrapy

管道数据库 class SpiderBookPipeline:def __init__(self):host localhostuser rootpassword hdp020820db 警察大学信息检索self.conn pymysql.connect(hosthost, useruser, passwordpassword, dbdb)self.cursor self.conn.cursor()def process_item(self, item, spider…

【Python】Python系列教程-- Python3 元组(十三)

文章目录 前言访问元组修改元组删除元组元组运算符元组索引&#xff0c;截取元组内置函数关于元组是不可变的 前言 往期回顾&#xff1a; Python系列教程–Python3介绍&#xff08;一&#xff09;Python系列教程–Python3 环境搭建&#xff08;二&#xff09;Python系列教程–…

项目中的Echarts图表统计

数据可视化 一、Echarts二、前端&#xff08;VueEcharts&#xff09;HomeView.vue&#xff08;完整代码&#xff09; 三、后端&#xff08;SpringBootMyBatis&#xff09;BorrowController.javaIBorrowService.javaBorrowService.javadatetimeToDateStr()函数countList()函数 B…

同样是产品经理 段位差别大

同样是产品经理&#xff0c;段位差别大 趣讲大白话&#xff1a;做人的差距大 【趣讲信息科技189期】 **************************** 市场越内卷 对产品的要求越来越高 不管叫不叫产品经理这个头衔 产品开发的重要性不会降低 《人人都是产品经理》总结的段位 姑且一看&#xff…

java线程多线程并发

文章目录 对java线程的认识wait&#xff08;&#xff09;和sleep&#xff08;&#xff09;区别&#xff1f;wait&#xff0c;notify为什么要放在同步代码块中&#xff1f; 多线程**什么时候使用多线程**&#xff1a;**多线程的优缺点**&#xff1a;**线程安全问题**&#xff1a…

MATLAB应用

目录 网站 智能图像色彩缩减和量化 网站 https://yarpiz.com/ 智能图像色彩缩减和量化 使用智能聚类方法&#xff1a;&#xff08;a&#xff09;k均值算法&#xff0c;&#xff08;b&#xff09;模糊c均值聚类&#xff08;FCM&#xff09;和&#xff08;c&#xff09;自组织神…

Mysql—存储过程

简介 存储过程就是类似于MySQL触发器&#xff0c;经过事先编写好相应语句&#xff0c;通过编译后存储在数据库上。触发器不需要手动调用即可实现相应SQL功能。MySQL存储过程&#xff0c;需要自己去调用得到相应的结果。 语法 创建存储过程 CREATE DEFINER CURRENT_USER PR…

git---->团队开发神器,一篇文章直接掌握

git---->团队开发神器&#xff0c;一篇文章直接掌握 一 学习git的原因概念版本的概念1 版本控制软件的基础功能2 集中式版本控制软件3 分布式版本控制 二 git的安装三 GitHub Desktop的使用四 团队操作五 中央服务器--github从github上下载文件到本地仓库传输文件 六 国内中…

chatgpt赋能python:Python如何实现自增

Python如何实现自增 在Python编程中&#xff0c;自增是一种非常常用的操作&#xff0c;它可以让我们在循环、计数等场景中更加方便地进行操作。实际上&#xff0c;在Python中&#xff0c;实现自增非常简单&#xff0c;本文将介绍Python中常用的自增操作&#xff0c;并分享自增…

时间复杂度 空间复杂度

概览 时间复杂度与空间复杂度的作用是在衡量一个算法的优劣性&#xff0c;以及在二者之间进行权衡&#xff0c;寻找二者的平衡点。 时间复杂度是指执行算法所需时间的增长率&#xff0c;而空间复杂度则是指执行算法所需存储空间的增长率。 高时间复杂度的算法可能需要在短时间…

LayUI前框框架普及版

LayUI 一、课程目标 1. 【了解】LayUI框架 2. 【理解】LayUI基础使用 3. 【掌握】LayUI页面元素 4. 【掌握】LayUI内置模块二、LayUI基本使用 2.1 概念 layui&#xff08;谐音&#xff1a;类UI) 是一款采用自身模块规范编写的前端 UI 框架&#xff0…

Nginx+Tomcat 负载均衡、动静分离

目录 一、Nginx代理服务器概念 1.正向代理 2.反向代理 二、动静分离 三、负载均衡 四、Nginx七层代理实验 1.部署Nginx服务 2. 部署Tomcat服务 2.1在192.168.88.50 虚拟机上部署双实例 2.2在192.168.88.60 上部署Tomcat服务器3 3.动静分离配置 3.1Tomcat1 server 配…

RecyclerView的回收缓存均由内部类Recycler完成

1. RecyclerView的三级缓存 通常在RecyclerView中存在着四级缓存&#xff0c;从低到高分别为&#xff1a; 可直接重复使用的临时缓存&#xff08;mAttachedScrap/mChangedScrap&#xff09; mAttachedScrap中缓存的是屏幕中可见范围的ViewHoldermChangedScrap只能在预布局状态…

Material—— 常用材质节点

目录 Coordinates Absolute World Position Actor Position Object Position Utility SphereMask Coordinates 表示坐标类的节点&#xff1b; Absolute World Position 别名为WorldPosition&#xff0c;此节点输出当前像素在世界空间内的位置&#xff1b;常用于查找相机到…