测试用例设计方法六脉神剑——第二剑:招式组合,因果判定出世 | 京东物流技术团队

京东云开发者
• 阅读 297

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 方法步骤

  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 总结

测试用例设计方法六脉神剑——第二剑:招式组合,因果判定出世 | 京东物流技术团队

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

作者:京东物流 王鹏

来源:京东云开发者社区 自猿其说Tech 转载请注明来源

点赞
收藏
评论区
推荐文章
Kubrnete Kubrnete
3年前
初步了解01背包问题(分治篇)
目录问题描述(问题描述)输入格式(输入格式)输出格式(输出格式)基于0/1背包的迭代算法(基于01背包的动态规划算法)0/1背包问题的分析(01背包问题的分析)分治法(分治法)总结(总结)问题描述Coda非常喜欢玩“NewWorldOnline”,受到某部动画的影响,他
Stella981 Stella981
3年前
Linux Mint 17 下安装搜狗拼音输入法
LinuxMint不像Ubuntu那样默认配置了中文输入法,需要我们自己安装,下面给出安装方法及输入法所需依赖:1.sudoaddaptrepositoryppa:fcitxteam/nightly2.sudoaptgetupdate3.sudoaptgetinstallf
Wesley13 Wesley13
3年前
DNF包管理器不升级指定包的配置
使用fedora作为日常系统使用有一年了,上半年开始使用搜狗输入法作为系统的输入法,最近使用系统的升级命令sudodnfupdatey进行升级,然后就自动的把搜狗输入法升级到2.1的新版本了,然后就不能使用了,切换回老版本2.0,就一切正常了,然后就开始了探索让dnf不升级搜狗输入法的方法。经过观察,指导搜狗输入法主要需要单独安装
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
C++编程题#1:含k个3的数
描述输入二个正整数m和k,其中1<m<100000,1<k<5,判断m能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。例如,输入:438333满足条件,输出YES如果输入393313尽管有3个3,但不能被19整除,也不满足条件,应输出NO输入m和k
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Stella981 Stella981
3年前
ELK学习笔记之ElasticSearch的索引详解
0x00ElasticSearch的索引和MySQL的索引方式对比Elasticsearch是通过Lucene的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在18和30之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,但是其比关系型
京东云开发者 京东云开发者
10个月前
测试用例设计方法六脉神剑——第三剑:倚天屠龙,正交试验冲锋 | 京东物流技术团队
1引言上篇讲了因果图和判定表法,而这两种方法在变量值很多、排列组合数量极大的场景下,会生成非常庞大且冗余的测试用例,此时我们很难对所有组合场景进行全量测试用例覆盖,基于此短板,正交试验法应运而生。2概念及原理2.1定义正交试验法是研究多因素、多水平的一种试
京东云开发者 京东云开发者
10个月前
测试用例设计方法六脉神剑——第四剑:石破天惊,功能图法攻阵| 京东物流技术团队
1引言前面几篇文章为我们讲述了因果图、判定表、正交试验等几种方法,主要是针对于不同条件输入输出的组合进行测试,但在实际需求中,我们也常会遇到需要对被测对象的状态流转进行验证的情况,此时前面几种方法将不再适用,对于这种状态转换类问题,功能图法则可大展身手。2
京东云开发者 京东云开发者
10个月前
测试用例设计方法六脉神剑——第五剑:化气为型,场景用例破云 | 京东物流技术团队
当拿到一个测试任务时,并非先关注某个功能的细节测试,而是先要使用场景法对主要业务流程和主要功能展开测试,当业务场景没有问题后,再使用等价类、边界值、判定表等方法对细节功能进行测试(先整体后细节)。