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

一、因果图概述

  • 因果图是从需求中找出因(输入条件)和果(输出或程序状态的改变),通过分析输入条件之间的关系(组合关系、约束关系等)及输入和输出之间的关系绘制出因果图,再转化成判定表,从而设计出测试用例的方法。
  • 该方法主要适用于各种输入条件之间存在某种相互制约关系或输出结果依赖于各种输入条件的组合时的情况
  • 注意: 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.mzph.cn/news/835549.shtml

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

相关文章

C++中的异常处理方式

目录 一、异常 二、C语言中对错误的处理 三、C中的异常处理 四、异常的抛出和捕获 五、异常的重新抛出 六、C标准库中的异常体系 七、异常的规范 一、异常 在C中,异常是程序运行期间发生的意外或错误情况。这些情况可能会导致程序无法继续正常执行,…

二维视觉尺寸测量简单流程

代码示例:opencv实战---物体尺寸测量_opencv尺寸测量精度-CSDN博客 灰度化 简化图像处理:灰度图像只包含亮度信息,不包含颜色信息,因此数据量比彩色图像小,处理起来更加简单和快速。这对于需要实时处理大量图像数据的场…

XTuner笔记

为什么要微调: 1. 模型不具备一些私人定制的知识 2。模型回答问题的套路你不满意。 对应衍生出来两种概念 增量预训练微调: 使用场景:让基座模型学习到一些新知识,如某个垂类领域的常识训练数据:文章、书籍、代码等…

Mac电脑安装打开APP显示问题已损坏 问题解决

当MAC电脑安装完软件打开时,显示文件已损坏,无法打开。搜了很多教程终于找到解决方案,记录下方便以后再用。 我的mac电脑是intel芯片的,如果你遇到这个问题,可以参考我的这个方案。 1.首先当打开软件后出现 “xx软件已…

Python 框架安全:SSTI 模板注入漏洞测试.

什么是 SSTI 模板注入 SSTI (Server-Side Template Injection) 是一种Web应用程序安全漏洞,它发生在应用程序使用模板引擎渲染用户输入时。当应用程序将用户输入直接插入到模板中而不进行充分的过滤和验证时,就可能导致SSTI漏洞。攻击者可以利用这个漏洞…

Selenium 保存会话信息避免重复登录实战!

前言 • 在一些实际开发场景中,我们在使用 Selenium 做自动化测试时需要保留用户的会话信息,从而避免重复登录,今天这篇文章就带大家实战如何使用 Selenium 保存会话信息。 版本 • Python 3.x 整体思路 • 当我们打开页面时,…

Colab/PyTorch - 002 Pre Trained Models for Image Classification

Colab/PyTorch - 002 Pre Trained Models for Image Classification 1. 源由2. 图像分类的预训练模型3. 示例 - AlexNet/ResNet1013.1 模型推断过程3.2 使用TorchVision加载预训练网络3.3 使用AlexNet进行图像分类3.3.1 Step1:加载预训练模型3.3.2 Step2&#xff1a…

1.分布式-理论

目录 一、什么是分布式系统 二、CAP理论 1.一致性Consisency 2.可用性(Availability) 3.分区容错性(Partition tolrance) 三、BASE理论 1.Basically Available(基本可用) 2.Soft state(软状态) 3.Eventually consistent(最终一致性&a…

【JavaSE】/*初识Java*/

目录 一、了解 Java 语言 二、Java 语言的重要性 2.1 使用程度 2.2 工作领域 三、Java 语言的特性 四、Java 的基础语法 五、可能遇到的错误 六、第一个 java 程序代码解析 七、Java 注释 八、Java 标识符 九、Java 关键字 一、了解 Java 语言 Java 是由 Sun Micr…

15. 三数之和(双指针+去重优化)

文章目录 前言一、题目描述二、代码原理1.暴力解法2.双指针优化 三.代码编写总结 前言 在本篇文章中,我们将会讲到leetcode中15. 三数之和,我们将会用到双指针的方式解决这道问题,同时注意掌握算法原理的去重操作。 一、题目描述 给你一个…

PHP高级教程

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:PHP 📚参考教程:菜鸟\编程网❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、PHP 多维数组 二、PHP date(&#…

免费获取!图论+灰色系统+混合优化算法程序代码!

前言 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法优化是指对算法的有关性能进行优化,如时间复杂度、空间复杂度、正确性、健壮性…

MongoDB聚合运算符:$toLower

MongoDB聚合运算符&#xff1a;$toLower 文章目录 MongoDB聚合运算符&#xff1a;$toLower语法使用举例角度的双曲正切 $toLower聚合运算符用于将字符串转换为小写。 语法 { $toLower: <expression> }<expression>为可被解析为字符串的表达式。如果参数解析为null…

安卓实现连接wesokcet

在build.gradle里引入依赖&#xff1a; implementation org.java-websocket:Java-WebSocket:1.5.2 在Androidmanifest.xml 文件里加入网络权限&#xff1a; <uses-permission android:name"android.permission.INTERNET" /> 代码&#xff1a; package com.x…

Vue与Java使用AES加密与解密

CBC模式&#xff08;通过偏移值进行加密&#xff0c;更具安全性&#xff09; 一、VUE&#xff1a; 1、安装 npm install crypto-js 2、编写公用js&#xff08;在common文件夹下创建一个crypto.js&#xff09; 注意&#xff1a;key最少要有16个字符&#xff0c;iv最少6个字符…

Java | Leetcode Java题解之第79题单词搜索

题目&#xff1a; 题解&#xff1a; class Solution {public boolean exist(char[][] board, String word) {char[] words word.toCharArray();for(int i 0; i < board.length; i) {for(int j 0; j < board[0].length; j) {if (dfs(board, words, i, j, 0)) return t…

Linux·基本指令

从本节开始将新开一个关于Linux操作系统的板块&#xff0c;其实Linux也没什么太神秘的&#xff0c;就是一个操作系统(OS)嘛&#xff0c;跟Windows操作系统是一个概念&#xff0c;只不过Windows中的大部分操作都是用光标点击来进行人机交互&#xff0c;但是Linux是通过输入命令行…

Symfony DomCrawler库在反爬虫应对中的应用

在当今信息爆炸的时代&#xff0c;互联网上的数据量巨大&#xff0c;但这也带来了一些问题&#xff0c;比如恶意爬虫可能会对网站造成严重的影响&#xff0c;导致资源浪费和服务不稳定。为了解决这个问题&#xff0c;许多网站采取了反爬虫策略。Symfony DomCrawler库是一个强大…

学历:敲门砖还是枷锁?

导言&#xff1a; 近日&#xff0c;“孔乙己文学”引发热议&#xff0c;其中一句“学历不仅是敲门砖&#xff0c;也是我下不来的高台&#xff0c;更是孔乙己脱不下的长衫”触动了许多人的心弦。关于学历究竟是敲门砖还是枷锁的讨论在社会中一直存在着&#xff0c;让我们…

fmt::arg的使用

来自&#xff1a; https://hackingcpp.com/cpp/libs/fmt.html #include <fmt/format.h> // literalsint main () { int i 2; double d 4.567; fmt::print("{x} {x}\n", fmt::arg("x",d)); fmt::print("{pi} * {0}\n", i, fmt::arg(&…