软件测试用例经典方法 | 因果图法及案例

news2024/12/23 18:22:51

图片

典型的黑盒测试用例设计方法包括等价类划分法、边界值分析法、决策表法、因果图法等。

如果程序的输入条件之间相互存在联系,那么就会使情况变得复杂,因为要检查输入条件的组合情况并不是一件容易的事情,即使把所有输入条件划分为等价类,它们之间的组合情况也相当多,难以分析。因此,必须考虑采用因果图法,这种方法可以针对多种条件组合、产生多个动作的情况来设计测试用例。

01、因果图的画法

因果图法是一种黑盒测试方法,它能够帮助人们按照一定的步骤高效地选择测试用例,同时还能指出需求规格说明书中存在的不完整性和二义性。

 1. 输入条件与输出结果之间的因果关系

 如图1 描述了输入条件与输出结果间的关系,即“因果关系”。这种关系共有4种:恒等、非、或、与。

恒等: 若原因出现,则结果出现;若原因不出现,则结果也不出现。例如,若a=1,b=1;若a=0,则b=0。

非:若原因出现,则结果不出现;若原因不出现,则结果出现。例如,若a=1,则b=0;若a=0,则b=1。

或: 若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现。例如,若a=1或b=1或c=1,则d=1;若a=b=c=0,则d=0。

与:若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现。例如,若a=b=c=1,则d=1;若a=0或b=0或c=0,则d=0。

图片

■ 图1 因果图逻辑符号

2.输入或输出的约束关系

如图 2 所示,输入状态之间还可能存在某些依赖关系,或输出结果之间相互制约,这被称为约束。其所描述的这种制约关系一般可被分为 5 类:互斥、包含、唯一、要求和屏蔽。其中,输入条件的约束有以下4类。

图片

■ 图2 因果图的约束符号

互斥(E): 表示a、b、c这3个原因不会同时成立,最多有一个可能成立。

包含(I): 表示a、b、c这3个原因中至少有一个必须成立。

唯一(O): 表示a、b、c中必须有一个成立,且仅有一个成立。

要求(R): 表示当a出现时,b必须也出现。例如,若a=1,则b必须为1。 

而其中的输出条件约束类型只有1种,即屏蔽(M):若a=1,则b必须为0;而当a=0时,b的值不定。 

3. 因果图法设计测试用例的步骤

(1) 分析在程序规格说明的描述中哪些是原因,哪些是结果,并给每个原因和结果赋予一个标识符。原因常常是输入条件或是输入条件的等价类,而结果则是输出条件。

(2) 分析在程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”。

(3) 标明约束条件。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,可在因果图上使用若干个标准的符号标明约束或限制条件。

(4) 把因果图转换成决策表。

(5) 把决策表中每一列拿出来作为依据,设计测试用例。

因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取True与取False的情况,其构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而增加。在较为复杂的问题中,这个方法常常十分有效,它能有力地帮助测试者确定测试用例。当然,如果开发项目在设计阶段就采用了决策表,那么也就不必再画因果图了,此时可以直接利用决策表设计测试用例。

02、因果图法的测试用例

图3所示的是交通一卡通自动充值模拟系统,其需求描述如下。

(1) 系统只接收50元或100元纸币,一次充值只能使用一张纸币,一次充值金额只能为50元或100元。

(2) 若输入50元纸币,并选择充值50元,完成充值后退卡,提示充值成功。

(3) 若输入50元纸币,并选择充值100元,提示输入金额不足,并退回50元。

(4) 若输入100元纸币,并选择充值50元,完成充值后退卡,提示充值成功,找零50元。

(5) 若输入100元纸币,并选择充值100元,完成充值后退卡,提示充值成功。

(6) 若输入纸币在规定时间内不选择充值按钮,退回输入的纸币,并提示错误。

(7) 若选择充值按钮后不输入纸币,提示错误。

图片

■ 图3交通一卡通自动充值模拟系统

下面给出交通一卡通自动充值系统的测试用例设计过程。

1) 条件之间的制约及组合关系

根据上述描述,输入条件(原因)如下。

(1) 投币50元(1)。

(2) 投币100元(2)。

(3) 选择充值50元(3)。

(4) 选择充值100元(4)。

输出(结果)如下。

(1) 完成充值、退卡(a)。

(2) 提示充值成功(b)。

(3) 找零(c)。

(4) 提示错误(d)。

2) 明确所有条件之间的制约关系及组合关系

条件之间的制约关系及组合关系如图4所示。

图片

■ 图 4  条件之间的约束关系

3) 画出因果图

为了描述得更清楚,这里将每种情况单独画一个因果图说明。

(1) 条件1和条件3可以组合,输出a和b的组合,也就是投币50元,充值50元,会输出完成充值、退卡,提示充值成功的结果。其因果图如图5所示。

图片

■ 图5  条件1和条件3的组合

(2) 条件1和条件4可以组合,输出c和d的组合,也就是投币50元,充值100元,会输出找零、提示错误的结果。其因果关系如图6所示。

图片

图片

图片

图片

■ 图6  条件1和条件4的组合

(3) 条件2和条件3可以组合,输出a、b、c的组合,也就是投币100元,充值50元,会输出找零、完成充值、提示充值成功的结果。其因果图如图7所示。

图片

■ 图7  条件2和条件3的组合

(4) 条件2和条件4可以组合,输出a和b的组合,也就是投币100元,充值100元,会输出完成充值、退卡,提示充值成功的结果。其因果图如图8所示。

图片

 

■ 图8   条件2和条件4的组合

(5) 条件1、2、3、4均可以单独出现,其因果图如图9所示。

图片

■ 图9   各条件单独出现

4) 根据因果图写出决策表

根据上面的因果图,写出对应的决策表,如表1所示。

■ 表1 决策表

图片

5) 根据决策表写出测试用例

根据上面的决策表,写出对应的测试用例,如表2所示。

■ 表2 交通一卡通自动充值模拟系统测试用例

图片

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

【Go 基础篇】深入探索:Go语言中的二维数组

在计算机编程中,数组是一种基本的数据结构,用于存储相同类型的元素。而二维数组作为数组的一种扩展,允许我们以类似表格的方式存储和处理数据。在Go语言中,二维数组是一个重要的概念,本文将深入探讨Go语言中的二维数组…

兄弟,王者荣耀的段位排行榜是通过Redis实现的?

目录 一、排行榜设计方案1、数据库直接排序2、王者荣耀好友排行 二、Redis实现计数器1、什么是计数器功能?2、Redis实现计数器的原理(1)使用INCR命令实现计数器(2)使用INCRBY命令实现计数器 三、通过Redis实现“王者荣…

基于知识引入的情感分析研究综述

1.引文 情感分析知识 当training数据不足以覆盖inference阶段遇到的特征时,是标注更多的数据还是利用现有外部知识充当监督信号? 基于机器学习、深度学习的情感分析方法,经常会遇到有标注数据不足,在实际应用过程中泛化能力差的局…

C语言巧用联合体union判定数据的存储格式(大小端)

联合体大家可能比较陌生,但是大家对结构体稍微熟悉一点吧。其实它们二个类似,只不过结构体成员占用不同的地址,而联合体所有成员占用相同地址。利用这个特性我们就能判断在当前编译器下存储的数据的格式。那么如何确定呢? 我这里…

FPGA GTX全网最细讲解,aurora 8b/10b协议,OV5640板对板视频传输,提供2套工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、GTX 全网最细解读GTX 基本结构GTX 发送和接收处理流程GTX 的参考时钟GTX 发送接口GTX 接收接口GTX IP核调用和使用 4、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条视频数据组包GTX aurora 8b/10b数据对…

Java“牵手”天猫图片识别商品信息API接口数据,图片搜索商品接口,天猫拍立淘API接口申请指南

天猫平台按图搜商品接口(拍立淘)是开放平台提供的一种API接口,通过调用API接口,开发者可以获取天猫商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、最低价、当前价格、价格信息等详细信息 。 获取拍立淘接口API…

Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421

文章目录 0.前言1.参考文档2.基础介绍3.漏洞利用原理3.解决方案1. 升级Spring Boot版本2. 限制端点的访问3. 禁用环境端点4. 不公开敏感的Actuator端点5. 开启安全审计 0.前言 背景: Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421。被扫描到…

软件工程(二十) 系统运行与软件维护

1、系统转换计划 1.1、遗留系统的演化策略 时至今日,你想去开发一个系统,想完全不涉及到已有的系统,基本是不可能的事情。但是对于已有系统我们有一个策略。 比如我们是淘汰掉已有系统,还是继承已有系统,或者集成已有系统,或者改造遗留的系统呢,都是不同的策略。 技术…

雪花假设:训练deep GNN 新思路

本文由中科大数据智能实验室联合阿卜杜拉国王科技大学(KSUST)、同济大学、新加坡国立大学、深圳科技大学、香港科技大学等多家院校联合提出了一种全新的训练深度GNN的策略—雪花假设,旨在帮助未来训练深度GNN并克服其中可能出现的over-smooth…

让敌人分兵,就能创造局部优势

让敌人分兵,就能创造局部优势 【安志强趣讲《孙子兵法》第22讲】 【原文】 故备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。寡者,备人者也;众者,使…

软件工程(十八) 行为型设计模式(四)

1、状态模式 简要说明 允许一个对象在其内部改变时改变它的行为 速记关键字 状态变成类 类图如下 状态模式主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。比如订单从待付款到待收货的咋黄台发生变化,执行的逻辑是不一样的。 所以我们将状态抽象为一…

软件工程(十七) 行为型设计模式(三)

1、观察者模式 简要说明 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 速记关键字 联动,广播消息 类图如下 基于上面的类图,我们来实现一个监听器。类图中的Subject对应我们的被观察对象接口(IObservable),…

软件工程(十六) 行为型设计模式(二)

1、迭代器模式 简要说明 提供一种方法来顺序访问一个聚合对象中的各个元素,而不是暴露该对象的内部状态 速记关键字 数据集,迭代,循环 类图如下 其实迭代器模式在我们的不同语言中,均对其实现了,就是我们的各种集合,List,Set等都是迭代器模式的实现。 就是把一个集…

09 mysql fetchSize 所影响的服务器和客户端的交互

前言 这是一个 之前使用 spark 的时候 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded 因为一个 OOM 的问题, 当时使用了 fetchSize 的参数 应用服务 hang 住, 导致服务 503 Service Unavailable 在这个问题的地方, 出现了一个查询 32w 的数据…

【javaweb】学习日记Day6 - Mysql 数据库 DDL DML

之前学习过的SQL语句笔记总结戳这里→【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用_Roye_ack的博客-CSDN博客 目录 一、概述 1、如何安装及配置路径Mysql? 2、SQL分类 二、DDL 数据定义 1、数据库操作 2、IDEA内置数据库使用 (1&…

特征工程 – Feature Engineering

特征工程是机器学习工作流程中重要的组成部分,他是将原始数据「翻译」成模型可理解的形式。 特征工程的重要性 基于大量数据的简单模型优于基于少量数据的复杂模型。 更多的数据优于聪明的算法,而好的数据优于多的数据。 所以,如何基于给定数…

CSS中如何实现背景图片的平铺和定位?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 平铺背景图片⭐ 背景图片定位⭐ 同时设置平铺和定位⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是…

AcWing 2058. 笨拙的手指(每日一题)

大家好 我是寸铁 如果你觉得这篇题解对你有用,可以动动手点个赞或关注,谢谢~ 题目描述 输入的第一串字母,存在一位错误。 输入的第二串字母,存在一位错误。 答案保证唯一解 我们需要去枚举每一位,找到二进制和三进制…

pytest笔记: pytest单元测试框架

第一步:安装 和查看版本 pycharm settings 查看 第二步: 编写test_example.py def inc(x):return x1 def test_answer():assert inc(4) 5 第三步:在当前路径下执行pytest 命令 PS E:\data\web测试\Selenium3自动化测试实战——基于Pyth…

web浏览器使用FileSystem的API进行本地文件的存储

作者:程序员CKeen 博客:http://ckeen.cn 长期坚持做有价值的事!积累沉淀,持续成长,升维思考!希望把编码作为长期兴趣爱好😄 目录 1. 背景2. Web端本地File操作的API3. File and Directory Entri…