在前面的等价类和边界值中,我们都重视的是输入条件,但是在实际测试中,许多操作时具有相互联系的,只有执行A动作才会产生B结果,像这种测试我们就需要使用今天的因果图了。还是用一个例子说明一下吧。
现在地铁一卡通充值,窗口越来越少了,都推荐自动充值机充值了,我们把它简化一下,只能投入50和100的人民币,相应的也只能充值50和100元。我们来分析一下他的流程吧:
1、投入50元,点充值50元,应该提示充值成功。
2、投入50元,点充值100元,应该提示金额不足,退回50元。
3、投入100元,点充值100元,应该提示充值成功。
4、投入100元,点充值50元,应该提示充值成功,并找零50元。
5、投入纸币后,没有选充值,应提示超时信息,并退还纸币。
这里假设不投币就无法选择充值。
首先我们先要分析因果关系,确定相互制约关系。因果图中的“因”就是各种输入条件,“果”就是输出结果。
1、 确定所有的输入条件
输入应该只有4种吧,(1)投入50元、(2)投入100元、(3)充值50元、(4)充值100元
2、 明确所有的输出结果
输出结果呢,(a)提示充值成功、(b)提示金额不足、(c)退50、(d)提示超时信息
3、 明确所有条件之间的制约关系以及组合关系
一次只能投50或100吧,所以条件1和条件2不能同时出现,同理条件3和条件4也不能同时出现;哪些可以同时出现呢?1和3、1和4、2和3、2和4也可以组合吧,1和2可以单独出现吧
4、 明确所有输出之间的制约关系以及组合关系
现在同样看输出之间的关系,输出a和d不能同时出现吧,b和d也不能同时出现,c和d也不行吧;a和c可以组合吧,b和c也可以组合吧。
5、 找出什么样的输入条件组合会产生哪种输出结果
1和3--->a
1和4--->b和c
1--->d
2和3--->a和c
2和4--->a
2--->d
6、 根据因果图,写出判定表
因果图就是左边画出条件,右边画出结果,用线的连接来表示他们的关系,这里就不画了,我会在附件里给大家详细的内容,因为有点多了。这里就直接给出判定表了
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| X | X |
|
|
|
|
这个表给大家说一下,T表示条件为真,就是执行这个输入,当然了你也可以用1和0或Y和N来表示,F就是不执行了,X代表这个结果会出现。
7、 根据判定表设计测试用例
判定表出来了,用例也就出来了吧。
序号 | 输入 | 结果 |
1 | 投入50元,不做其他操作 | 应该提示超时信息 |
这里就写一个了,对应着把每一列都写出来
下面就来看一下判定表的方法吧,刚才的案例里已经绘制了判定表了,他们是一样的了。判定表法就是略过因果图的绘制,直接列出所有组合进行筛选。(说实话绘制因果图也还是挺烦人的了,尤其是用根据,所以笔者通常都不画因果图的)
先来看一下关于判定表的一些术语吧,
条件桩:就是所有的输入了。动作桩:就是所有的输出结果了。条件项:就是针对条件桩的取值。动作项就是每列条件项产生的及结果了。还有一个术语就是规则,每一列就是一个规则了。
那就看一下怎么建立判定表吧:
- 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2的n次幂种规则
- ›列出所有的条件桩和动作桩
- ›填入条件项
- 填入动作项、制定初始判定表
- ›简化、合并相似规则或者相同动作