因果图康玲基于决策表的测试是最严格的功能性测试,因为决策表具有逻辑严格性。与之相关连的方法:因果图法、决策表格法。缺点:使用麻烦,冗余多。自从20世纪60年代初以来,决策表一直被用来表示和分析复杂逻辑关系。决策表很适合描述不同条件集合下采取行动的若干组合的情况。因果图,是一种形式语言(有严格语法限制的语言,计算机语言都是形式语言),是将自然语言描述的规格说明转换为因果图。实质上,是一种数字逻辑电路(一个组合的逻辑网络),但没有使用标准的电子学符号,而是使用了稍微简单点的符号。一些程序的功能可以用判定表的形式来表示,并根据输入条件的组合情况规定相应的操作。从程序规格说明书的描述中找出因(输入条件)和果(输出结果或程序状态的改变)的关系,通过因果图转换为判定表,最后为判定表的每一列设计一个测试用例考虑到输入情况的各种组合以及各个输入情况之间的相互制约关系。使用了简单的逻辑符号,以直线连接左右节点。左节点表示输入状态(或称原因),右节点表示输出状态(结果)。c1e1(a)恒等c1e1~(b)非c2e1c1c3V(c)或c2e1c1V(d)与图中,ci表示原因,通常位于图的左部,ei表示结果,位于图的右部。ci与ei取值0或1,0表示某状态不出现,1表示某状态出现恒等:若c1是1,则e1也为1,否则e1为0;非:若c1是1,则e1为0,否则e1为1;或:若c1或c2或c3是1,则e1是1,否则e1为0,“或”可有任意个输入;与:若c1和c2都是1,则e1为1,否则e1为0,“与”也可有任意个输入。在实际问题当中输入状态相互之间还可能存在某些依赖关系,称为“约束”abE异(a)acI或babO唯一abR要求ab强制M(b)(c)(d)(e)对于输入条件的约束有4种:E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1;I约束(或):a、b、c中至少有一个必须是1,即a、b、c不能同时为0;O约束(唯一):a和b必须有一个且仅有一个为1;R约束(要求):a是1时,b必须是1;对于输出条件的约束只有M约束M约束(强制):若结果a是1,则结果b强制为0。分析程序规格说明中的原因及结果。分析程序规格说明中语义的内容,找出原因与结果之间、原因与原因之间的对应关系,将其表示成连接各原因与各结果的“因果图”。由于语法或环境限制,有些原因与原因之间或与结果之间的组合情况不能出现,用记号标明约束或限制条件;将因果图转换成决策表;根据决策表中每一列设计测试用例程序的规格说明要求:输入的第一个字符必须是“#”或“*”,第二个字符必须是一个数字,在此情况下进行文件的修改;如果第一个字符不是“#”或“*”,则给出信息N;如果第二个字符不是数字,则给出信息M。1.分析程序的规格说明,列出原因和结果;2.找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。3.将因果图转换成决策表;4.根据3中的决策表,设计测试用例的输入数据和预期输出。在明确了上述要求后,可以明确地将原因和结果分开。原因:c1-第一个字符是“#”c2-第一个字符是“*”c3-第二个字符是一个数字结果:a1-给出信息Na2-修改文件a3-给出信息Mc1c2c310a3a2a1V~~V因果图表示c1c2c310a3a2a1V~~VE具有E约束的因果图表示10-导出结果的进一步原因规则选项12345678条件c1c2c310111110101110010111010100100000动作a1a2a3不可能√√√√√√√√√测试用例#3#A*6*BA1GT最左边两列,原因c1和c2同时为1不可能,排除掉,根据表可设计出6个测试用例。Test1:输入数据-#3预期输出-修改文件Test2:输入数据-#A预期输出-给出信息MTest3:输入数据-*6预期输出-修改文件Test4:输入数据-*B预期输出-给出信息MTest5:输入数据-A1预期输出-给出信息NTest6:输入数据-GT预期输出-给出信息M和N考虑了多个输入之间的相互组合、相互制约关系;能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题有一个处理单价为1元5角的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”,“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。原因c1:投入1元5角硬币;c2:投入2元硬币;c3:按“可乐”按钮;c4:按“雪碧”按钮;c5:按“红茶”按钮;中间状态11:已投币12:已按钮结果a1:退还5角硬币;a2:送出“可乐”饮料;a3:送出“雪碧”饮料;a4:送出“红茶”饮料;VVVVC1C5C4C3C2E4E3E2E11211EEVV1234567891011c1:投入1元5角硬币c2:投入2元硬币c3:按“可乐”按钮c4:按“雪碧”按钮c5:按“红茶”按钮101001001010001100000110001010010010100000100000100000111:已投币12:已按钮1111111011111110010101a1:退还5角硬币a2:送出“可乐”饮料a3:送出“雪碧”饮料a4:送出“红茶”饮料√√√√√√√√√例如,有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,按下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并按下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。”某软件的一个模块的需求规格说明书中描述:(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。请绘制出因果图和判定表,并给出相应的测试用例。