01、因果图设计测试用例的步骤

1、分析需求

阅读需求文档,如果User Case很复杂,尽量将它分解成若干个简单的部分。这样做的好处是,不必在一次处理过程中考虑所有的原因。没有固定的流程说明究竟分解到何种程度才算简单,需要测试人员根据自己的经验和业务复杂度具体分析。

2、确定原因和结果

在每个已经分解好的块中,找出哪些是原因,哪些是结果。并且把原因和结果分别画出来。原因放在一列,结果放在一列

如下图所示:

3、确定逻辑关系

继续分析需求文档,找出原因和结果之间的关系,用逻辑运算符标出

4、确定约束关系

继续分析需求,找出原因和原因、结果与结果之间的约束限制,用上面说的约束关系标出

5、把因果图转换为决策表

给每个原因分别取真和假二种状态,用0和1表示。画一个有限项决策表,列出所有状态的状态组合。包含3个原因、2个结果的有限项决策表如下

根据原因给出结果,上面的决策表中,不一定每个原因的状态组合都是有效的。要根据因果图中的约束条件,去掉不可能出现的组合,从决策表中标记出来。并给出每个可能的原因组合对应的结果。

设计测试用例,上一步完成之后,决策表的每一个有效列都对应一个测试用例。

02、举例说明

下面用几个例子来说明因果图的用法:

例子1

某软件需求说明书:某段文本中,第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。由于此需求已经非常清晰,所以标准步骤中的第一步省略,从第二步开始分析。

  • 确定原因和结果:从大的方面看,第一列和第二列不同的字符会引起不同的结果,所以初步分析原因结果图如下

  • 确定因果逻辑关系:如果第一列和第二列都正确,则修改文件;如果第一列不正确,给出信息L;如果第二列不正确,给出M。可以得出下面的因果图

而根据需求描述,原因c1还可以细分为2个原因:第一列字符是A(c11),第一列字符是B(c12)。因此原因c1其实也可以看作成结果。把它用因果图表示出来如下:

根据上面的分析,其实总共有3个原因,3个结果

  • 确定约束关系:从需求描述中可知,原因c11和c12不可能同时为真,但可以同时为假,因此满足排他性约束。这三个结果之间没有掩码标记的约束。

    完整的因果图如下:

  • 根据因果图画决策表:列出3个原因所有的状态组合

  • 根据原因分析结果:分析每一种状态对应的结果,并根据约束关系,去掉不可能出现的状态。本例的c11和c12满足排他性约束,所以同时都为1的状态不会出现。

  • 设计测试用例:根据决策表,列出有效的状态组合和结果,给出对应的测试用例,可以单独画一个表,也可以直接加到决策表中。

    如下图:

到现在为止,使用因果图设计测试用例的一个简单的例子就完成了。

例子2

再以支付宝认证总流程为例,说明因果图的实际应用,支付宝个人认证中,分为两部分:个人身份认证银行卡认证。这两者都通过后,认为个人认证成功。

个人身份认证需要提交个人基本信息及身份证复印件。

银行卡认证分为两种:提现认证充值认证

  • 提现认证的流程是:用户提交正确的银行帐号——>支付宝给用户的银行卡中随机打款——>用户确认金额,认证成功。

  • 充值认证的流程是用户提交正确的银行帐号——>充值——>充值完成——>网银反馈,认证成功。

从上面的描述中,我们可以总结出2大原因和一个结果

  • 原因一:身份认证成功

    身份认证成功也是一个中间结果,它也有2个原因,提交基本信息成功 和 提交身份证成功。

  • 原因二:银行卡认证成功,包含2个原因:充值认证成功 和 提现认证成功。这2种原因也可以看做是中间结果,产生结果的原因在需求中可以也能明显看出来,不再赘述。

  • 一个结果:个人认证成功。

注意:为了简便起见,我们假设个人信息提交和身份证件提交成功后,身份认证则成功,忽略人工审核过程。

原因和结果表如下:

对于因果关系较为的复杂的逻辑,通过结果向前推原因是一个不错的方法。

  • 认证成功:身份认证成功和银行卡认证同时为真,认证成功才为真。

  • 身份认证成功:基本信息和身份证件同时为真,身份认证成功才为真。

  • 银行卡认证:提现认证和充值认证有一个成功,银行卡认证则成功。

提现认证、充值认证都是所有的原因都为真时,自己才为真。

确定约束关系

从业务流程可知:提现认证和充值认证是二择一的,满足唯一性约束条件。而充值认证的三个原因,有流程上的先后顺序,满足必要性约束条件。同样,提现认证的三个原因也满足必要性约束条件。

根据约束关系,我们画出因果图如下:

使用因果图的好处,综上所述,我认为因果图最大的好处有2点:

  • 考虑了多个输入之间的相互组合、相互制约关系

  • 帮助我们按一定步骤,高效率地选择测试用例

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


最后基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源在下方公众号免费获取~

【测试入门】测试用例经典设计方法 —— 因果图法相关推荐

  1. 软件测试用例设计方法-因果图法

    边界值法是等价类划分法的补充,所以,它们是一对搭档. 那么,判定表法有没有它的搭档呢? 答案是,有的.那就是本篇文章分享的用例设计方法-- 因果图法 . 定义 因果图法: 用来处理等价类划分和边界值考 ...

  2. 测试用例设计方法——因果图法

    从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出或程序状态的改变),可以通过因果图转换为判定表. 因果图法即因果分析图,又叫特性要因图.石川图或鱼翅图,它是由日本东京大学教授石川馨提 ...

  3. 测试用例设计方法---因果图法

    学习目标 掌握因果图法的核心 掌握因果图的基本符号了解因果图的画法 1.什么是因果图法 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适用于检查程序输入条件的各种组合情况 ...

  4. 测试用例设计方法-因果图法

    因果图法 定义:因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况. 应用: 等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输 ...

  5. 测试用例经典设计方法之 因果图法

    01 因果图设计测试用例的步骤 1.分析需求 阅读需求文档,如果User Case很复杂,尽量将它分解成若干个简单的部分.这样做的好处是,不必在一次处理过程中考虑所有的原因.没有固定的流程说明究竟分解 ...

  6. 学习软件测试(三)测试用例、测试用例的设计方法(等价类划分法、边界值分析法、判定表法、因果图法、正交排列法、场景法、错误推测法)

    目录 测试用例 测试用例八大要素 测试用例的设计方法 等价类划分法 等价类操作步骤 边界值分析法 边界范围 边界值法的操作步骤 案例1 案例2 判定表法 为什么使用判定表法 判定表法的四个组成部分 判 ...

  7. 黑盒测试用例设计方法-因果图

    常用测试用例设计方法-因果图 因果图测试用例设计 因果图理论 因果图设计过程 举个经典的例子:象棋的走马规则 因果图的优缺点 通过因果图发现过的BUG 个人心得 因果图测试用例设计 因果图理论 因果图 ...

  8. (转)测试用例的设计方法(全)之二 错误推断、因果图

    测试用例的设计方法(全)之二 (3)错误推测方法 一.    方法简介 1.         定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法. 2.      ...

  9. 测试篇(三):测试用例的万能公式、对水杯和登录页面设计测试用例、测试用例的设计方法

    目录 一.测试用例的万能公式 二.对登录页面设计测试用例 三.测试用例的设计方法 3.1 基于需求的设计方法 3.2 等价类 3.3 边界值 3.4 判定表 3.5 正交排列 3.6 场景设计法 3. ...

最新文章

  1. 微信小程序多项选择器_微信小程序三级联动之多列选择器
  2. 用python画猫咪怎么画-如何用Python实现可视化地图
  3. 属性与意图识别_解密宝能汽车智能驾舱的“未来属性”
  4. 一起谈.NET技术,Visual Studio自定义调试窗体两个小技巧
  5. BugkuCTF-WEB题速度要快
  6. keeko机器人_机器人零距离,创意搭建编程妙趣多!——瑞云社区开展全国科普日活动...
  7. mac 上iterm终端显示中文为乱码解决方案
  8. idea增强for循环
  9. java简单实现一个缓存_java简单实现缓存的三种方法
  10. Effective java读后感
  11. 服务器的显示器无信号怎么解决办法,显示器无信号怎么办?显示器无信号解决办法大全...
  12. 信用卡怎么付款给PayPal?
  13. 基于JAVA社区养老服务管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  14. 单片机驱动LM75采集温度
  15. 你知道如何判定一个大整数为素数吗?——米勒拉宾素数判定算法
  16. 2015百度面试题--对10亿个32位整数去重和排序
  17. FXTZ 1.10 小爱使用
  18. 毛戈平VS完美日记,“国货美妆第一股“新战争
  19. 超级终端之常用AT命令与错误码
  20. 2017大学计算机基础书,2017大学计算机基础试题「含答案」

热门文章

  1. Mac系统Mysql密码重置的问题
  2. 耶鲁大学开放课程:《金融市场》课程介绍
  3. vue 实现分钟倒计时
  4. 亲们 ,paypal账户您们都是怎么提现结汇呢?
  5. 地形渲染之彩色地形图(Painted Relief Map)
  6. HTML span标签如何居中和右对齐?这里有HTML span标签的样式解析
  7. 坚果云和亿方云有什么区别?
  8. #git操作#拉取远程分支到本地,克隆远程分支的代码(指定分支)
  9. 【Objective_C】基础学习—兴趣小组demo
  10. 闭着眼睛复现Metapath2vec(Stellargraph)