测试用例设计方法六脉神剑——第二剑:招式组合,因果判定出世 | 京东物流技术团队
1 引言
上篇讲了等价类划分和边界值分析法,而这两种方法只考虑了单个的输入条件,并未考虑输入条件的各种组合、输入条件之间的相互制约关系的场景。基于此短板,因果图法和判定表法应运而生。
2 因果图法
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 方法步骤
- 找出所有的原因,原因即输入条件或输入条件的等价类;
- 找出所有的结果,结果即输出条件;
- 明确所有输入条件之间的制约关系以及组合关系;哪些条件不能组合到一起,哪些条件可以组合到一起
- 明确所有输出条件之间的制约关系以及组合关系;哪些输出结果不能同时输出,哪些输出结果可以同时输出
- 找出什么样的输入条件组合会产生哪种输出结果;
- 画出因果图;
- 把因果图转换成判定表/决策表;
- 为判定表中的每一列表示的情况设计测试用例(每一列都是一条测试用例)。
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 方法步骤
- 列出所有的条件桩和动作桩(输入和输出);
- 填入条件项(输入项);
- 填入动作项,得到初始判定表;
- 简化判定表(合并相似规则(相同动作))。
3.3 举个栗子
场景:基础坐席认责or申诉
1.列判定表
2.对判定表进行简化
- 选择“认责”、选择“个人责任”,填写:责任人erp、描述-》认责个人责任
- 选择“认责”、选择“组织责任”,填写:描述-》认责组织责任
- 选择“认责”、选择“三方责任”,填写:责任人erp、三方名称、描述-》认责三方责任
- 选择“申诉”,填写:申诉原因、描述-》申诉
4 总结
但因果图和判定表法在变量值很多、排列组合数量极大的场景下,会生成非常庞大且冗余的测试用例,此时我们很难对所有组合场景进行全量测试用例覆盖,这个时候就是正交试验法大展神威的时候了,让我们一起来学习吧~
作者:京东物流 王鹏
来源:京东云开发者社区 自猿其说Tech 转载请注明来源

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何做好架构设计,架构设计有章可循吗?
设计一个系统的过程,就是建造一座大厦的过程,架构设计的质量直接决定了大厦的质量。 我们进行系统的架构设计时,总是会遇到一系列的问题,比如一个大型系统的架构应该如何起步,从哪里开始设计?系统是否应该划分成多个模块,应该怎么划分模块才更加的合理?亦或是觉得产品提出的需求非常不合理,完全影响我们正常的架构设计!对于非功能性的需求,我们是否可以得过且过,不去重视? 这些问题,让我们在刚开始架构设计时手足无措,但是随着我们完成一个又一个的系统架构设计以后,发现架构设计是有章法可循的,只要我们学习这些章法和套路,并且在工作过程中不断的积累与沉淀,就会形成一个完整的架构设计方法论,面对新的大型系统架构设计,也会一步一步有节奏进行,最终完成整体的架构设计。 一、架构设计的原则 架构设计需要遵循一些原则: 1、架构设计需要方法体系 架构设计并不是一个”单一的方法“,直接拿来进行架构设计,而是多个各具特色的方法,组成的“方法体系”,并且这个体系随着新技术的发展还会不断进化。 2、架构设计是质疑驱动 架构设计是质疑驱动的过程,在”需求驱动“的基础上,我们需要不断的质疑我们架构设计的中间成果,进一步通过“质疑...
- 下一篇
RocksDB 在 vivo 消息推送系统中的实践
作者:vivo 互联网服务器团队 - Zeng Luobin 本文主要介绍了 RocksDB 的基础原理,并阐述了 RocksDB 在vivo消息推送系统中的一些实践,通过分享一些对 RocksDB 原生能力的探索,希望可以给使用RocksDB的读者带来启发。 一、背景 在消息推送系统中,业务方服务器通过调用推送接口向 VPUSH 服务发送消息,请求中会包含一个 registerId,用于标识接收该消息的用户设备。当 VPUSH 服务接收到推送请求时,会使用 registerId 找到对应的用户,并将消息推送给其手机。然而,在 VPUSH 内部处理消息推送时,需要使用一个内部标识符 ClientId 来标识每个用户的设备,可以通过 ClientId 查找到对应的设备信息。 因此,系统中引入了一个映射存储服务 MappingTranformServer(后文简称MT),用于处理 registerId 和 ClientId 之间的转换。MT 服务缓存了所有用户的设备标识符,使用 RocksDB 作为底层存储引擎,RocksDB 可以提供高并发读写能力,以磁盘作为存储介质,节省存储成本。当 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7