因果图法设计测试用例

article/2025/8/26 20:49:57

等价类划分法、边界值分析法及错误推断法在对输入条件的考虑中并未重视输入条件的组合。事实上,当输入条件存在若干种可能的组合时,必须对这些组合加以考虑,以证实测试程序在某种输入组合的情况下恩能否完成规格说明书中预先规定的功能,否则所做的测试是不充分的。

因果图(Cuase-effect Graph)是一种描述输入条件的组合及每种组合对应的输出的图形化工具。在因果图的基础上可以设计测试用例。

因果图的画法:

 

(a)恒等。若原因出现,则结果出现;若原因不出现,则结果不出现。

(b)非。若原因出现,则结果不出现;若原因不出现,则结果出现。

(c)或。若几个原因中有一个出现,则结果出现;若几个原因均不出现,则结果不出现。

(d)与。若几个原因都出现,结果才出现;若几个原因中有一个不出现,则结果不出现。

为了表示因果图中的约束条件,可用一些符号在因果图中加以标识。

从原因方面考虑主要有4种约束条件:

(a)E(互斥、排他)。a、b两个原因不会同时出现,最多只有一个出现。

(b)I(包含、或)。a、b、c三个原因至少有一个出现。

(c)O(唯一)。a、b两个原因必须有一个出现,且仅有一个出现。

(d)R(需求)。a出现时b必定出现。

从结果方面考虑主要有1种约束条件:

(a)M(屏蔽)。a出现时,b必定不出现;a不出现时,b则不确定。

利用因果图设计测试用例应遵循的步骤:

1)分析程序的规格说明书中哪些事原因,哪些是结果。所谓原因,是指输入条件或输入条件的等价类,而结果是指输出条件。

  给每一个原因和结果赋一个标识符。

2)分析程序规格说明书中的语义,确定原因与原因,原因与结果之间的关系,画出因果图。

3)由于语法环境的限制,一些原因与原因之间,原因与结果之间的组合不能出现。对于这些特殊情况,在因果图中用一些记号标明约束或限制条件。

4)将因果图转化为判定表。

5)根据判定表的没一列设计测试用例。

当然,若能直接得到判定表,可以直接根据判定表设计测试用例。

因果图法设计测试用例举例:

有一个单价为五角钱的饮料自动售货机软件,对其采用因果图方法设计测试用例。需求如下:

1)若售货机没有零钱找,则一个现实“零钱找完”的红灯亮,以提示顾客在此情况下不要投入1元钱,否则此红灯不亮。

2)顾客投入5角硬币,然后按下“橙汁”或“啤酒”按钮,则相应的饮料被送出。

3)顾客投入1元硬币并按下“橙汁”或“啤酒”按钮后,若售货机没有零钱找,则显示“零钱找完”的红灯亮,1元硬币被退出,且无饮料送出;若有零钱找,则五角硬币被退出且饮料被送出。

列出原因

编号原因
1售货机有零钱找
2投入1元硬币
3投入五角硬币
4按“橙汁”按钮
5按“啤酒”按钮

 

列出结果:

编号结果
21售货机“零钱找完”灯亮
22退还1元硬币
23退还五角硬币
24送出橙汁饮料
25送出啤酒饮料

根据需求说明设置中间节点:

序号中间节点
11投入1元硬币且按饮料按钮
12按“橙汁”或“啤酒”按钮
13退还五角零钱且售货机有零钱找
14钱已付清

 

根据列出的原因、结果、中间节点花出因果图:

2、3号原因不能同时出现,4、5号原因不能同时出现。

将因果图转换为判断表:

在构成的判定表中,个原因、中间节点、结果的取值为0表示其代表的状态不出现;为1表示状态出现。

中间节点与结果没有值为因违反约束不会出现的情况,16、32列没有做任何操作。8、12、24、28列不符合常理(投币却没有选择饮料)为无效列。

根据剩下的列设计测试用例。

用例编号有无零钱投入金额饮料预期结果
C01有  1元橙汁退回五角、送出橙汁
C021元啤酒退回五角、送出啤酒
C035角橙汁送出橙汁
C045角啤酒送出啤酒
C051元橙汁灯亮、退出1元
C061元啤酒灯亮,退出1元
C075角橙汁灯亮,送出橙汁
C085角啤酒灯亮、送出啤酒

 

这个例子中,事实上在分析问题时进行了一些简化,主要有一下几点:

1)判定表中8,12,24,28列不符合常理(投币却没选饮料),但却是可能发生的。可以考虑对需求做一下完善:若投币N秒后仍没有选择饮料,售货机上“请选择饮料”灯亮。进而根据需求规格说明改进因果图和判断表。

2)判断表中14,15,30,31列表示只选择饮料却没投币。可以对需求做以下完善:只选择饮料却没有投币时,自动售货机上“请投币”的等亮。进而根据需求规格说明改进因果图和判断表。

3)26、27表示在自动售货机没零钱找的情况下投入五角钱,此时自动售货机进入有零钱找状态,由于需求说明没有考虑这一特殊状态,故判定表中第26、27列的21号结果没有从1变成0实际上是不正确的。在需求规格说明书中应对此种情况加以考虑,进而改进因果图和判断表。

4)6、7列对应的是自动售货机在有零钱的情况下找了5角钱,此刻自动售货机有可能进入无零钱找的状态,由于需求说明没有考虑这一特殊状态,故判定表中第6、7列的21号结果没有从1变成0实际上是不一定正确的。在需求规格说明书中应对此种情况加以考虑,进而改进因果图和判断表。


http://chatgpt.dhexx.cn/article/vtiutClR.shtml

相关文章

通俗的讲,Java后端到底是干什么的?语言工程师到底是啥?你是工程师吗?

新手程序员通常会走入一个误区 就是认为学习了一门语言,就可以称为是某某语言工程师了。但事实上真的是这样吗?其实并非如此。 今天我们就来聊一聊,Java 开发工程师到底开发的是什么东西。准确点来说,Java后端到底在做什么&…

Web开发从前端、后端、编程语言、到框架的初学指南

[导读] 作为一篇Web开发初学者指南,本文从学习什么出发到如何专攻。从前端、后端,到编程语言,再到框架,或许对打算进军Web开发的您有所帮助。如果你正在阅读这篇文章,你可能是对Web开发有某种兴趣,甚至你开…

数据库与后端语言

什么是数据库 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 什么是后端语言 后端语言,在Web应用中实际上就是向前端提供需要显示网页内容的数据,这些数据大多…

前端和后端分别是什么?

从技术工具来看: 前端:常见的 html5、JavaScript、jQuery... 后端:spring、tomcet、JVM,MySQL... 毕竟,如果这个问题问一个老后端,他掰掰手指可以给你罗列出一堆的名词来,比如设计模式、数据库…

前端 语言

前端语言 名称简介用法网址CSSCSS 是一种描述 HTML 文档样式的语言。CSS 描述应该如何显示 HTML 元素https://www.w3school.com.cn/css/index.aspCSS3CSS3 是最新的 CSS 标准。操作https://www.runoob.com/css3/css3-tutorial.htmlScss/SassScss是CSS的预处理器,一…

前后端语言简析

目录 什么HTML语言? 什么是CSS语言&#xff1f; 什么是Javascript语言&#xff1f; 什么是PHP语言&#xff1f; 什么是Mysql语言&#xff1f; 什么HTML语言? 作用&#xff1a;定义的是【网站显示的内容】。 表现形式&#xff1a;<标签名>内容</标签名> …

聊聊开发中经历的几种后端语言

前言 谈这个话题&#xff0c;没有任何语言之争&#xff0c;只是个人开发的经历。 适合 开发语言的选择只是当时条件下适合每个项目或者每个团队乃至每个公司的最佳选择&#xff0c;并不是说XXX公司也用这个我们用这个肯定没问题。 当时还在某手机公司&#xff0c;有次跟某公…

服务器后端的编程语言

本文为 csdn cedricliang 编纂翻译&#xff0c;如有转载&#xff0c;请于原文篇头出标明译者及原文出处&#xff0c;以示尊重&#xff01; 翻译&#xff1a;cedricliang 原文&#xff1a;http://blog.csdn.net/cedricliang/article/details/48437437 对于那些需要web服务的初创…

这么多语言,究竟哪个适合写后端,Java还是?

温馨提示 请拖动到文章末尾&#xff0c;长按识别「抽奖」小程序。现金红包等你来拿。 【公众号回复“1024”&#xff0c;送你一个特别推送】 9:10约会&#xff0c;真爱&#xff0c;请“星标” 前言 作为开发者我们都知道&#xff0c;开发后台语言可选择的方向会很多&#xff0c…

【编程语言】盘点当前主流的后端语言,随便选哪一种都能月薪过万!

当前主流后端开发语言如下&#xff1a; Java 笔者目前是Java开发工程师。Java一般用来做应用的&#xff0c;它作为热门服务端语言活跃多年了&#xff0c;很多公司都有找Java程序员&#xff0c;市场有很多需求。所以说&#xff0c;选择学习Java&#xff0c;也许不是最好的&…

2021最热门的后端编程语言排行榜出炉!

三足鼎立 截止2020年底&#xff0c;后端编程语言中&#xff0c;java依然是市场的王者&#xff0c;C/C、python和go占据一部分江山&#xff0c;从2021年开始&#xff0c;未来十年&#xff0c;在后端编程语言中&#xff0c;各位觉得哪个编程语言会越来越流行&#xff0c;java会一…

当前主流的后端语言,谁能夺得桂冠,果然是后生可畏!

主流后端语言 如今编程语言遍地开花&#xff0c;烟花迷乱&#xff0c;小编整理了最流行的几种编程语言如下&#xff1a; 这几种语言都是经久不衰&#xff0c;占领着后端编程界的半壁江山。TIOBE上的语言排名&#xff1a; C、Java、python&#xff0c;C&#xff0c; C#鏖战榜首…

【项目】前端如何与后端交互

在项目开发中使用了前后端分离&#xff0c;当分离后前后端如何进行交互呢&#xff1f;结合项目做一些简单的实践&#xff0c;经过晓风姐的点拨有了本篇分享。 结构 简单的来说是我发现现在写不下去了&#xff0c;我先补好 REST的博客再来更新~~~ RESTful架构 REST全称是Repre…

【学习笔记】Web前端到后端数据的交互

【学习笔记】Web前端到后端数据的交互 &#x1f4d2;博客首页&#xff1a;*铁甲小宝同学* &#x1f4d2; &#x1f31e;文章目的&#xff1a;HTML—入门篇&#x1f31e; &#x1f64f;博主也在学习阶段&#xff0c;如若发现问题&#xff0c;请告知&#xff0c;非常感谢&#x1…

前端和后端的JSON数据交互

因为之前一直在学后端方面的内容&#xff0c;对于前端这块的知识一直半懂半不懂。昨天学了ajax&#xff0c;一些知识点记录下。 前端知识 最重要的两种请求方式&#xff1a;GET、POST。 GET : 有请求参数&#xff0c;无请求体 POST : 有请求体&#xff0c;但也可以有请求参数…

JAVA前端与后端交互面试题

1.前端与后端交互面试题 1.1. 描述Servlet调用过程&#xff1f; 答案&#xff1a; &#xff08;1&#xff09;在浏览器输入地址&#xff0c;浏览器先去查找hosts文件&#xff0c;将主机名翻译为ip地址&#xff0c;如果找不到就再去查询dns服务器将主机名翻译成ip地址。 &…

java后端与前端的交互_前端和后端数据交互的基本知识和常见方式

一。首先了解前端&#xff0c;后端&#xff0c;数据三者的关系。 1.前端常常是是html&#xff0c;css&#xff0c;js三者的构成的页面的总称。运行在客户端。以浏览器为例。 2.后端常常是后端语言。比如php&#xff0c;java等写的一些脚本。来操作服务器。 3.数据&#xff0c;数…

前后端数据交互

简单实现前后端数据交互 功能要求主要涉及框架后端新建项目新建数据库编写实体类编写映射类编写控制器 前端headbody1.用户接口 UI2. JS 交互 运行测试总结 功能要求 简单实现 员工信息 从 后端 服务器 数据库 加载 并 动态渲染 在Web端&#xff0c;以及Web端新增 员工信息 发…

前端和后端如何进行交互?

背景 目前互联网应用呈现方式基本都是app客户端和web端&#xff0c;其次是移动网站和小程序。以app客户端或web端为例子&#xff08;统一认为前端&#xff09;&#xff0c;前端负责用户的交互与数据收集与展示&#xff0c;数据经后台处理存储在数据库。设计师在参与项目时&…

新手入门前端与后端交互案例(HTML+Java+Axios)

需求分析 前端网页向后端发起相应请求,后端响应前端的请求,做出相关操作.如前端发出获取数据库用户表的请求,后端则将用户表的内容返回给前端.简而言之,前端发出对数据库访问的请求,后端需响应结果. 项目结构 后端项目结构 实现步骤 导入相关依赖包 <parent><grou…