测试用例设计方法:招式组合,因果判定出世

1 引言

上篇讲了等价类划分和边界值分析法,而这两种方法只考虑了单个的输入条件,并未考虑输入条件的各种组合、输入条件之间的相互制约关系的场景。基于此短板,因果图法和判定表法应运而生。

因果图法

2.1 概念及原理
2.1.1 定义

一种描述输入条件的组合以及每种组合对应的输出的图形化工具,它适合于检查程序输入条件的各种组合情况。

2.1.2 方法的原则

画因果图时,原因在左,结果在右,由上而下排列,并根据功能说明书中规定的原因和结果之间的关系,用下述基本符号连接起来,在因果图中还可以引入一些中间节点。

1.因果图的基本图形符

2.因果图中的约束条件

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

  • E(互斥、排他):a、b两个原因不会同时出现,最多只有一个出现
  • I(包含、或):a、b、c三个原因至少有一个出现
  • O(唯一):a、b两个原因必须有一个出现,且仅有一个出现
  • R(需求):a出现时b必定出现

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

  • M(屏蔽):a出现时,b必定不出现;a不出现时,b则不确定
2.2 方法步骤
  1. 找出所有的原因,原因即输入条件或输入条件的等价类;
  2. 找出所有的结果,结果即输出条件;
  3. 明确所有输入条件之间的制约关系以及组合关系;哪些条件不能组合到一起,哪些条件可以组合到一起
  4. 明确所有输出条件之间的制约关系以及组合关系;哪些输出结果不能同时输出,哪些输出结果可以同时输出
  5. 找出什么样的输入条件组合会产生哪种输出结果;
  6. 画出因果图;
  7. 把因果图转换成判定表/决策表;
  8. 为判定表中的每一列表示的情况设计测试用例(每一列都是一条测试用例)。
2.3 举个栗子

场景:基础坐席认责or申诉

1.先列出输入条件和输出条件

输入条件:

  • 1——认责or
  • 2——申诉
  • 3——个人责任
  • 4——组织责任
  • 5——三方责任
  • 6——责任人erp
  • 7-申诉原因
  • 8-描述

输出条件:

  • a——认责个人责任
  • b——认责组织责任
  • c——认责三方责任
  • d——申诉

2.画出因果图

3.将因果图转换为判定表,并将判定表的每一列拿出来就可作为一个测试用例

  • 选择“认责”、选择“个人责任”,填写:责任人erp、描述-》认责个人责任
  • 选择“认责”、选择“组织责任”,填写:描述-》认责组织责任
  • 选择“认责”、选择“三方责任”,填写:责任人erp、三方名称、描述-》认责三方责任
  • 选择“申诉”,填写:申诉原因、描述-》申诉

3 判定表法

3.1 概念及原理
3.1.1 定义

判定表是分析和表达多逻辑条件下执行不同操作的情况的工具,是指一个表格,用于显示条件和条件导致动作的集合。

3.1.2 方法的原则

主要包含五部分:

  • 条件桩:问题的所有条件
  • 条件项:所有条件的取值组合
  • 动作桩:所有可能的操作
  • 动作项:在每一种条件取值组合的情况下,执行动作桩中的哪些动作
  • 规则:一种条件取值组合与其对应的动作组合一种条件取值组合与其对应的动作组合(即判定表中贯穿条件项和动作项的一列)构成判定表的一个规则
3.2 方法步骤
  1. 列出所有的条件桩和动作桩(输入和输出);
  2. 填入条件项(输入项);
  3. 填入动作项,得到初始判定表;
  4. 简化判定表(合并相似规则(相同动作))。
3.3 举个栗子

场景:基础坐席认责or申诉

1.列判定表
2.对判定表进行简化
  • 选择“认责”、选择“个人责任”,填写:责任人erp、描述-》认责个人责任
  • 选择“认责”、选择“组织责任”,填写:描述-》认责组织责任
  • 选择“认责”、选择“三方责任”,填写:责任人erp、三方名称、描述-》认责三方责任
  • 选择“申诉”,填写:申诉原因、描述-》申诉

4 总结

但因果图和判定表法在变量值很多、排列组合数量极大的场景下,会生成非常庞大且冗余的测试用例,此时我们很难对所有组合场景进行全量测试用例覆盖,这个时候就是正交试验法大展神威的时候了,让我们一起来学习吧~

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

 

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式光伏监控系统功能模块详解

目前,分布式光伏发电系统的总容量比较小,并且光伏电站的功率受外界环境影响容易出现大起大落的现象。这使电压调整变得很困难。光伏电站运行维护人员不足,长时间不保养维护会影响光伏电站的发电效率。针对上述问题,鹧鸪云基于无线…

汇聚荣科技:拼多多开店没有流量应该怎么办?

拼多多开店没有流量是一个常见的问题,许多新手商家都会遇到这样的困境。那么,如何解决这个问题呢?下面从四个方面进行详细阐述。 一、优化店铺和商品 首先,要确保店铺和商品的质量。店铺要有自己独特的风格和特色,商品要有高质量…

Airtest核心API汇总

2024.2.25更新:新增剪切板、Airtest1.3.3touch/swipe支持绝对坐标和相对坐标 2023.9.3更新:Airtest1.2.7新增14个断言、断开连接API;Airtest1.2.10.2新增录屏API; 以下基于airtest1.2.0(截止2021.7.12,最新版本) https…

如何将公众号添加到CSDN个人主页

1. 创作中心- 推广管理 输入个人公众号名字并开启微信公众号推广 2. 将公众号的二维码图片加入拓展信息 个人主页的左下角就能看到推广 如果希望能看到是二维码 操作如下: 写篇文章贴上二维码 然后点击鼠标右键获得此页面链接 ,例如我的个人公众号 htt…

洗地机哪款好用?希亦、追觅、顺造、米家等高品质洗地机推荐

家用洗地机已经成为家庭清洁的重要利器,其多功能性能帮助您轻松应对各种清洁任务,从而保持家居环境的清洁整洁。然而,市场上品牌繁多、功能各异的洗地机让人眼花缭乱。为了帮助大家做出明智的选择,我们将在本文中提供全面的选购指…

力扣98.验证二叉搜索树

法一(自己思路,复杂了): from collections import dequeclass Solution(object):def isValidBST(self, root):""":type root: TreeNode:rtype: bool"""queue deque()if root.left!None:queue.app…

凸优化理论学习三|凸优化问题(一)

系列文章目录 凸优化理论学习一|最优化及凸集的基本概念 凸优化理论学习二|凸函数及其相关概念 文章目录 系列文章目录一、优化问题(一)标准形式的优化问题(二)可行点和最优点(三)局部最优点(四…

地平线X3开发板Intel Realsense深度相机调试记录

1. 预编译包 编译这个SDK花费了5.6个小时,为了方便各位后续使用, 各位可以直接下载编译好的文件,包含C和Python的库,相关文件已经上传至百度云(提取码:awe4 )。 在提供的这些文件中&#xf…

思科模拟器学习1--Vlan Trunk

实验说明:将三台电脑的vlan 加到一台交换机里面,为了验证什么是虚拟局域网,把一个设备隔成三个空间,三个电脑互相不能通讯;目的是:vlan 1的通讯不可以向vlan 2传送,就是消息传送互不干扰的&…

独家揭秘:亲历清华大学答辩现场,惊喜万分 名校答辩不简单

会议之眼 快讯 五月,对于学术界来说,迎来了答辩的高潮!是收获的季节!今天,趁着阳光明媚,小编怀揣着对学术探索的无限热情和好奇心,决定亲自踏入中国顶尖学术殿堂——清华大学深圳国际研究生院&…

【核弹】我的第一款IDEA插件

SuperHotSwap 插件名称叫做:SuperHotSwap(超级热更新) 开发初心:旨在做出一款最便捷的IDEA热更新插件,减少用户操作步骤,提供零配置的可视化操作更新。 为什么要写这个插件: 每次改一下Mappe…

Linux内核发送网络数据

前言 我们开始今天对 Linux 内核⽹络发送过程的深度剖析。还是按照我们之前的传统,先从⼀段代码作为切⼊。 上述代码中,调⽤ send 之后内核是怎么样把数据包发送出去的。本⽂基于Linux 3.10,⽹卡驱动采⽤Intel的igb举例。 基础框架 我们看…

08 必会框架 - Spring全家桶

本课时主要介绍 Java 中常用的应用框架,重点讲解如下三部分内容。 Spring 框架中的主要知识点; NIO 框架 Netty 以及基于 Netty 实现的主流 RPC 框架 Motan、Dubbo 和 gRPC; ORM 框架 MyBatis。 常用框架汇总 先来看常用框架的知识点汇总…

AuroraFOC使用指南一(STM32F405双路FOC)

一. 简介 哈喽,感谢各位选择AuroraFOC开发板,在这里将对其进行一个详细的介绍,方便大家使用。并且对提供的工程文件和上位机的操作也进行了详细的说明。 有什么疑问或者好的建议 可以微信联系: WU1356742146 最后再次感谢大家的支持。 Aur…

番外篇 | 手把手教你利用YOLOv8进行热力图可视化 | 针对视频

前言:Hello大家好,我是小哥谈。YOLOv8的热力图可视化可以帮助我们更加直观地了解模型在图像中的检测情况,同时也可以帮助我们进行模型的调试和优化。热力图是一种颜色渐变的图像,不同颜色的区域表示不同程度的关注度或者置信度。在YOLOv8中,可以通过设置阈值来控制热力图的…

产品品牌CRUD

文章目录 1.renren-generator生成CRUD1.数据库表设计1.数据表设计2.分析 2.代码生成器生成crud1.查看generator.properties(不需要修改)2.修改application.yml 连接的数据库修改为云数据库3.启动renren-generator模块4.浏览器访问 http://localhost:81/5…

能聚合各站热点的DailyHot

什么是 DailyHot ? 今日热榜(DailyHot)是一个获取各大热门网站热门头条的聚合网站,能追踪全网热点、实现简单高效阅读。项目分为前、后端,其中后端提供了一个聚合热门数据的 API 接口。 🚩 后端 API 特性 极快响应&a…

vue3+ts(<script setup lang=“ts“>)刷新页面后保持下拉框选中效果

效果图&#xff1a; 代码&#xff1a; <template><div class"app-layout"><div class"app-box"><div class"header"><div class"header-left"></div><div class"title">室外智…

css实现围绕中心进行圆形旋转

效果如下 通过css animation属性能实现以上效果 先试用定位&#xff0c;将每一项设置一个初始位置 {cursor: pointer;left: 50%;width: 144px;height: 144px;display: flex;align-items: center;justify-content: center;margin-left: -72px;top: 228px;position: absolute;a…

Cesium 3DTileset Style 原理简析

Cesium 3DTileset Style 原理简析 应用层会看到这样的使用。那么原理是什么, 为啥写 height, 除了这个还有啥? const tileset await Cesium.Cesium3DTileset.fromUrl("../../public/tileset/building/tileset.json"); tileset.style new Cesium.Cesium3DTileSty…