一、因果图法简介
1.1 什么是因果图法?
因果图(Cuase-effect Graph)是一种描述输入条件的组合以及每种组合对应的输出的图形化工具。在因果图的基础上可以设计测试用例。
因果图法也是黑盒测试中非常重要的测试方法,一个游戏产品/软件中会存在大量的输入域、输出域,其中包括很多输入条件与输出条件,因果图法用线和不同的符号将输入和输出之间的因果关系、约束关系进行标记,形成一张网状图,对此我们称之为因果图法
1.2 因果图法的优缺点
优点:
1、因果图法能够对输入域与输出域的数据集合或子数据进行完整的关系逻辑梳理,设计多个输入条件的组合测试用例,可针对梳理后的结果选择对应数据进行高效的用例设计
2、因果图法能够帮助我们梳理出各类数据集合的逻辑关系,梳理后对比策划案,也同样能用于发现策划案中的遗漏内容,发现设计缺陷,以此保证需求的完整性
3、因果图法适用于各类的输入输出场景以及因果组合,在游戏领域中适用性高、范围广,不容易遗漏
缺点:
1、面对庞大的系统、玩法,拥有非常多的因果关系和集成内容时,因果图法依然能够列举,但测试用例数据会非常庞大,使用因果图法对于测试用例的选择是一个非常大的瓶颈,通常而言会与判定表一同使用,进行因果关系的简化
1.3 因果图法的使用条件
1、拥有较多的输入条件
2、拥有较强的逻辑关系(针对原因、结果)
3、拥有较强的约束关系或互斥关系
1.4 因果图法测试用例的设计步骤
1、确定策划所提及内容中的"原因"与"结果"
2、确定原因与结果之间的逻辑关系
3、确定因果图中的各个约束并列举
4、画出因果图产出最终结果设计测试用例
5、(拓展)依据因果图的最终产出结果转换为判定表
6、(拓展)简化判定表数据,依据最终数据设计测试用例
二、因果图法应用场景
在界面中有多个控件,控件之间有组合或限制关系,不同的输入组合会对应不同的输出结果,多个输入域、输出域以及数据集合,也可以使用因果图法进行整合
某游戏有酷爽夏日运营活动,酷爽夏日活动设立了一个自动售货机,售货机里售卖饮料、与啤酒,对其采用因果图方法设计测试用例。需求如下:
(1)若售货机没有零钱找,则一个显示 “零钱找完”的红灯亮,以提示顾客在此情况下不要投入1元钱,否则此红灯不亮。
(2)顾客投入5角硬币,然后按下“橙汁”或“啤酒”按钮,则相应的饮料被送出。
(3)顾客投入1元硬币并按下“橙汁”或“啤酒”按钮后,若售货机没有零钱找,则显示“零钱找完”的红灯亮,1元硬币被退出,且无饮料送出;若有零钱找,则五角硬币被退出且饮料被送出。
首先根据需求列举出原因:
其次根据原因列举出结果:
接着根据策划案需求设置中间节点:
根据列出的原因、结果以中间节点进行结合画出对应因果图:
2号与3号不能够同时出现,投入硬币的操作为互斥关系,4号与5号操作也不能够同时出现,同为互斥关系
将因果图转成判定表:
在构成的判定表中,原因、中间节点、结果的取值为0表示其代表的状态不出现;为1表示状态出现。
中间节点与结果没有值,代表因违反约束而不会出现的情况,16、32列没有做任何操作,8、12、24、28列不符合常理(投币却没有选择饮料)为无效列,14、15、30、31列不符合常理(只选择饮料却没投币)为无效列。
根据剩余列进行用例设计:
这个例子中,事实上在分析问题时进行了一些简化,主要有以下几点:
判定表中8,12,24,28列不符合常理(投币却没选饮料),但却是可能发生的。可以考虑对需求做一下完善:若投币N秒后仍没有选择饮料,售货机上“请选择饮料”灯亮。进而根据需求规格说明改进因果图和判定表。
判定表中14,15,30,31列表示只选择饮料却没投币。可以对需求做以下完善:只选择饮料却没有投币时,自动售货机上“请投币”的灯亮。进而根据需求规格说明改进因果图和判定表。
26、27表示在自动售货机没零钱找的情况下投入五角钱,此时自动售货机进入有零钱找状态,由于需求说明没有考虑这一特殊状态,故判定表中第26、27列的21号结果没有从1变成0实际上是不正确的。在需求规格说明书中应对此种情况加以考虑,进而改进因果图和判定表。
6、7列对应的是自动售货机在有零钱的情况下找了5角钱,此刻自动售货机有可能进入无零钱找的状态,由于需求说明没有考虑这一特殊状态,故判定表中第6、7列的21号结果没有从1变成0实际上是不一定正确的。在需求规格说明书中应对此种情况加以考虑,进而改进因果图和判定表。
好啦~以上就是本次文章分享的全部内容啦,你学会了吗?希望能给大家带来帮助哦!
以上部分内容来源参考文章:https://www.cnblogs.com/jitipaper/p/12690146.html