• 12
  • 13
分享
  • 测试用例设计—自动售货机因果图分析——软件测试圈
  • 北极 2021-12-17 16:25:54 字数 2019 阅读 11588 收藏 13

命题

有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示“零钱找完”的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示“零钱找完”的红灯灭,在送出饮料的同时退还5角硬币。

分析

根据命题可以分析出,自动售货机的业务中一共存在5个条件和5个结果,分别是:

条件:

  1. 售货机有零钱找

  2. 投入1元硬币

  3. 投入5角硬币 

  4. 押下橙汁按钮

  5. 押下啤酒按钮 

结果: 

  1. 售货机〖零钱找完〗灯亮    当售货机中没有零钱的时候就有亮红灯

  2. 退还1元硬币                      当投入1元,而且售货机中没有零钱可找的时候

  3. 退还5角硬币                      当投入1元,而且售货机中有零钱可找的时候

  4. 送出橙汁饮料

  5. 送出啤酒饮料

因果图-画条件和结果

1.png

因果图-画简单关系

在画完空白的条件和结果之后,可以将题目中最直接和简单的因果条件标出。

  1. 条件“有零钱”和结果“红灯亮”是一个“非”的关系,当“有零钱”的时候,红灯是不亮的,而当售货机中“没有零钱”的时候,红灯必须要亮的。

  2. 条件“投1元”和条件“投5角”是一个“E”的关系,这两个动作不可能同时发生,即同时投入1元钱和5角钱(不能同时为真);但是我们允许即“不投入1元钱”也“不投入5角钱”(可以同时为假)。

  3. 条件“选啤酒”和条件“选橙汁”是一个“E”的关系,这两个动作不可能同时发生,即同时“选择啤酒”和“选择橙汁”(不能同时为真);但是我们允许即“不选择啤酒”也“不选择橙汁”(可以同时为假)。

  4. 条件“选啤酒”和条件“选橙汁”对于程序处理过程是等价的,即二者无论是价格还是系统的处理方法都是相同的,因此这两个条件可以合并为一个中间节点。而且这两个条件之间使用“或”的关系。

  5. 注意,条件“投1元”和条件“投5角”不是等价关系,表面上看,他们都是“钱”,好像差不多,但是对于程序的处理过程确实完全不同的,“投5角”后完全不用判断当前售货机中是否有零钱(因为题目中规定所有的商品都是5角钱),而“投1元”就不行了。

2.png

因果图-送出商品

现在我们从结果的角度考虑,要想“出啤酒”或者“出橙汁”,从现实买卖中分析必须要有什么先决条件呢?是的,就是“你的钱要付清”,而且你一定要选择了“啤酒”或者“橙汁”才行。而在上面的已有因果图中,我们无法找到“钱付清”的因素,因此这时候我们可以试着再加一个中间节点,就叫“钱付清”吧。

要想获得选中的商品,则条件“钱付清”和条件“选啤酒/选橙汁”必须要同时成立,因此是“与”的关系。

3.png

因果图-应该找零钱

根据题意,当投入1元钱,而且又选中了某一种商品的时候,系统是需要找零钱的。而现有条件和结果中并没有涉及到“应该找零钱”这种情况,因此我们还需要增加一个中间节点“应该找零钱”。

条件“投1元”和条件(中间节点)“选商品”与结果(中间)“应该找零钱”是“与”的关系,即这两个条件必须同时满足。

4.png

因果图-能够找零钱

上面已经确定了“投入1元钱”并且“选商品”,系统应该找给客户5角钱,那么接下来就要看当前售货机中是否有零钱可找了,庆幸的是,存在“有零钱”的条件;

现在系统“应该找零钱”给客户,而且恰恰又“有零钱”找给客户,那么就可以确定系统“能够找零钱”给客户了,所以这里我们又可以增加一个中间节点“能够找零钱”。

条件“有零钱”和条件(中间节点)“应该找零钱”与结果“能够找零钱”之间是“与”的关系。

5.png

因果图-1元钱付清

现在已经确定客户“投入1元钱”并且“选商品”后,系统“有零钱”可找,那么紧接着就可以找钱给客户了。

条件“能够找零钱”和结果“找5角”是“恒等”的关系;

条件“能够找零钱”和结果(中间节点)“钱付清”也是“恒等”的关系;

6.png

因果图-5角钱付清

考虑完投入1元钱后系统的处理情况,我们再来看投入5角钱后系统是如何处理的。因为售货机中的全部商品都是5角钱的,因此就不存在找零的问题了,只要客户“投入5角”并且按下相应的商品选择按钮就好了。

所以,条件“投5角”和结果(中间节点)“钱付清”直接是“恒等”的关系。

另外,条件“投5角”和条件(中间节点)“能够找零钱”都代表金额的计算已经结束,即“钱付清”,因此条件“投5角”和条件(中间节点)“能够找零钱”与结果(中间节点)“钱付清”之间是“或”的关系。

7.png

因果图-退还1元

我们考虑完了投入5角钱及投入1元钱并找零后,最后在考虑一下退还1元钱的情况。毫无疑问,当投入1元钱,并且选择了某种商品的时候,如果当前售货机中没有零钱可找,那么只能退还用户这1元钱了。

因此,条件“没零钱”和条件“应该找零钱”与结果“找1元”之间应该是“与”的关系,而且我们的条件中关于零钱是用了肯定的描述,即“有零钱”,要想表示没有零钱,直接使用一个“非”关就可以了。

8.png

判定表

9.png

去除无效用例

10.png

合并判定表

11.png


文章来源:百度文库

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 主流自动化框架selenium :web端自动化框架  ,(行业里面最核心的框架)appium   :手机app端框架requests :接口测试selenium 工具类封装selenium提供了很多方法供我们去完成网页元素的操作, 在实际开发中,我们的变量只有元素定位 和对元素的操作,其他的都是重复的,为了减少代码量,我们需要将selenium进行二次封装,这就是工具类。工具类就是我们的工具箱,里面的方法就是我们的工具创建常用工具创建一个模块,在项目文件夹下面创建一个模组 new ->Python Package系统会生成一个带init文件的python ...
            12 12 1149
            分享
          • 北京时间8月23日早间消息,据报道,当地时间周一,被控在跳槽小鹏汽车前窃取苹果汽车部门商业机密的苹果前员工张晓浪(XiaolangZhang)向美国圣何塞联邦法院认罪。法庭文件显示,张晓浪与美国政府达成的认罪协议为保密状态。在承认盗窃商业机密的重罪后,他将面临最多10年刑期以及25万美元罚款。本案的量刑宣判计划于11月进行。张晓浪被控下载关于苹果汽车项目的内部文件。这批文件总共25页,包含了一款汽车电路板的工程原理图。张晓浪还被控窃取了有关苹果原型产品及原型产品需求的参考手册和PDF文档。根据美国联邦调查局(FBI)和检察官办公室的指控文件,他自2015年开始效力于苹果,后来主要在汽车团队担任...
            0 0 1084
            分享
          • 测试小白如何进行接口测试?Postman从入门到上手就这么简单!在我们日常的测试工作中,接口测试其实很普遍,无论你是做什么测试,功能、自动化亦或是性能测试,都会或多或少接触到接口。最近也有许多人来询问我:接口测试怎么测?接口测试工具有哪些?其实要想学会接口测试,真的可以很简单。下面我来帮你一一剖析:一.什么是接口?可以简单理解成用来连接而开放的入口,比如前端和后端的连续需要用接口,移动端和后台的链接也需要用到接口。连接前端后端和移动端。二.接口都有哪些类型?接口一般分为两种:程序内部的接口系统对外的接口系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他...
            0 0 1491
            分享
          • 在天网查上看了一下全国软件公司有1000多万家,其中上市的公司有7万多家,也就是占比0.7%通过这个数据可以发现,大部分公司从实力和规模上都偏向中型或者小型也就说其中的流程不一定很健全,设置没有流程而言。下图窃取了两张数据的图片供参考 为什么要指出这个问题,笔者目前在二线城市,工作10年经历过几家公司,很少有公司把流程指定的很正规和完善基本上的形式是 常规瀑布模式和敏捷模式 相结合,赶上功能已上线,出现Bug时  常见的状态开发快速定位问题进行修改测试抓紧时间进行测试,测完后上线发布 所以得出的结论是流程不重要,重要的是大家同心协力把问题解决,产品快速上线那么问题...
            0 0 1804
            分享
          •   在软件测试过程当中,大多数缺陷怎么定位都可以采用分层测试解决。  所谓的分层测试就是我们会根据一个 case的覆盖范围将测试分成不同的种类。  一个测试用例覆盖范围最广的是系统测试,覆盖最窄的是单元测试。虽然在学术界对他们有非常清晰的定义,但是在实际的工作过程当中并没有明显的界限。从上到下可以分为系统测试,集成测试,组件测试,单元测试等等。  我们平时接触的比较多的可能就是系统测试,也就是我们常说的点点点功能。但是这种方式是不利于问题的定位的。  而越到后面因为一个测试覆盖的范围越小,所以更能精准的定位到问题的所在。  如何定位是前端问题还是后端问题?基本上介于集成测试和组件测试之间,我们...
            0 0 1198
            分享
      • 51testing软件测试圈微信