所谓 原因,指的就是输入;所谓结果,指的就是输出。因果图法比较适合输入条件比较多的情况,测试所有的输入条件的排位组合。
题目:某奖金计算软件完成如下功能:
(1)该软件可以计算某公司的年终奖,该公司员工分为普通员工和管理人员。
(2)员工表现分为普通,优秀和特殊贡献奖。(普通员工和优秀员工都可以有特殊贡献,普通员工和管理人员表现相同,但工资是不同的)。
(3)根据员工的分类和表现,将奖金分为1类奖金,2类奖金,3类奖金, 输入员工类型和表现,就会输出相应的奖金类别。
员工类别:普通员工A1
管理人员A2
变现类别:普通B1
优秀B2
特殊贡献B3
奖金类别:1类奖金C1
2类奖金C2
....................................
测试用例如下表:
原因 | 结果 |
A2+B1==(管理人员普通表现) | C1==1类 奖金 |
A2+B2==(管理人员优秀表现) | C2==2类奖金 |
A2+B1+B3==(管理人员普通表现,且有特殊贡献) | C3==3类奖金 |
A2+B2+B3==(管理人员普通表现,且有特殊贡献) | C4==4类奖金 |
原因 | 结果 |
A1+B1==(普通员工表现普通) | C5==5类奖金 |
A1+B2==(普通员工表现优秀) | C6==6类奖金 |
A1+B1+B3==(普通员工表现普通,且有特殊贡献) | C7==7类奖金 |
A1+B2+B3==(普通员工表现优秀,且有特殊贡献) | C8==8类奖金 |
上面列举的题目可以分为4个步骤进行:
(1)找出所有输出条件和输出条件,并编号。
(2)分析输入条件之间的关系,是互斥还是可以同时满足。
(3)画出输入条件的排列组合情况。
(4)编写测试用例。
----------------------------------------------------------------------------------------------------------------
应用场合:
当软件的输入条件较多的时候,可以考虑用因果图法来设计测试用例。考虑输入的所有排列组合情况,防止遗漏。
因果图的局限性:
假如有n个条件。每个条件有真或假两种取值,理论上就有2的n次方钟排列组合。大大增加了测试用例的个数,不便于维护。
再来看一个例子。
例:某旅馆住宿系统可为游客办理房间选定、房间支付及房间管理相关任务,此系统默认房间资源始终保持充足的状态。其需求描述如下:
当支付房间全款(即预期入住天数内所有房款)或支付房间房款不足(仅支付定金),选择"单人间"、"双人间"或"豪华间",则相应类型的房间被开启。若游客支付房款不足,则在开启房门的同时系统提示房款支付不足。
问题:采用因果图进行测试用例设计
第一步:首先分析需求说明,找出原因和结果
原因:
1、游客支付房间全款
2、游客支付房款不足
3、游客选择单人间
4、游客选择双人间
5、游客选择豪华间
结果:
1、该类型的房间被打开,且提醒房款支付不足
2、单人间已经被开启
3、双人间已经被开启
4、豪华间已经被开启