上次讲了因果图法的基本原理,这种方法是有因必有果,正是由于多个原因的不同组合,使得结果也不尽相同。由于组合情况很多,才用因果图法能大大简化测试用例的数量。
我们来看一个例子:
有一个饮料自动售货机(处理单价为5角钱)的控制处理软件,它的软件规格说明如下:
若投入5角钱的硬币,按下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。若投入1元钱的硬币,同样也是按“橙汁”或“啤酒”的按钮,则自动售货机在送出相应饮料的同时退回5角钱的硬币。
怎么分析这种具有一定实际意义的情况呢?
按照因果图的说法,我们先分析一下,把原因与结果先找出来:
原因是输入条件,在自动售货机里,硬币的投入、按钮的按下,都是输入,这样的话就有以下几个原因:
(1)投入5角硬币
(2)投入1元硬币
(3)按下“橙汁”按钮
(4)按下“啤酒”按钮
结果有哪些呢?
(1)送出“橙汁”饮料
(2)送出“啤酒”饮料
(3)找5角硬币
按照因果关系,把因果图的雏形画出来:
再加上因果图的约束关系,那么图形就成为以下:
根据最终的因果图生成判定表:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |||
投入1元硬币 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | |
输 入 | 投入5角硬币 | 2 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
按下"橙汁"按钮 | 3 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | |
按下"啤酒"按钮 | 4 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | |
中间节点 | 已投币 | 11 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
已按钮 | 12 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | |
输 出 | 退还5角硬币 | 21 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
送出"橙汁"饮料 | 22 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | |
送出"啤酒"饮料 | 23 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
最后把测试用例写出来:
用例编号 | 用例说明 | 输入数据 | 预期结果 |
SHJ-001 | (1)投入硬币 (2)按下按钮 | 1元 “橙汁”按钮 | 退还5角硬币 送出“橙汁”饮料 |
SHJ-002 | (1)投入硬币 (2)按下按钮 | 1元 “啤酒”按钮 | 退还5角硬币 送出“啤酒”饮料 |
SHJ-003 | (1)投入硬币 | 1元 | 给出提示信息 |
SHJ-004 | (1)投入硬币 (2)按下按钮 | 5角 “橙汁”按钮 | 送出“橙汁”饮料 |
SHJ-005 | (1)投入硬币 (2)按下按钮 | 5角 “啤酒”按钮 | 送出“啤酒”饮料 |
SHJ-006 | (1)投入硬币 | 5角 | 给出提示信息 |
SHJ-007 | (1)按下按钮 | “橙汁”按钮 | 给出提示信息 |
SHJ-008 | (1)按下按钮 | “啤酒”按钮 | 给出提示信息 |