您好,欢迎访问三七文档
学习目标什么是因果图?因果图的组成(关系和约束)因果图法设计测试用例的步骤因果图与判定表的关系引言等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况都已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图(逻辑模型)。因果图法能帮助测试人员按照一定的步骤,高效的开发测试用例,以检测程序输入条件的各种组合情况,它是将自然语言转化为形式语言规格说明的一种严格方法。注:与判定表法区别?我们知道,当被测对象的输入条件相互依赖、相互制约的时候,适合用判定表法进行测试!练习一某软件的一个模块的需求规格说明书中描述:(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。请用判定表法设计出相应的测试用例。找出条件桩与动作桩根据题意,原因和结果如下:原因结果C1:年薪制员工A1:扣年终风险金的4%C2:非年薪制员工A2:扣年终风险金的2%C3:严重过失A3:扣当月薪资的8%C4:过失A4:扣当月薪资的4%(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。输入条件项和动作项c1:年薪制员工TFTTTFFFTTTFFFTFc2:非年薪制员工TTFTTFTTFFTFFTFFc3:严重过失TTTFTTFTFTFFTFFFc4:过失TTTTFTTFTFFTFFFFA1:扣年终风险金的4%√A2:扣年终风险金的2%√A3:扣当月薪资的8%√A4:扣当月薪资的4%√存在大量不可能的情况!当输入条件过多时,使用判定表会产生大量测试用例,而且也不能表达条件之间的各种(先后)关系。在一定情况下,那还有没有其他适合的方法呢?步骤一:列出原因和结果根据题意,原因和结果如下:原因结果C1:年薪制员工A1:扣年终风险金的4%C2:非年薪制员工A2:扣年终风险金的2%C3:严重过失A3:扣当月薪资的8%C4:过失A4:扣当月薪资的4%(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。步骤2:画出因果图原因结果C1:年薪制员工A1:扣年终风险金的4%C2:非年薪制员工A2:扣年终风险金的2%C3:严重过失A3:扣当月薪资的8%C4:过失A4:扣当月薪资的4%步骤3:施加相应的约束原因结果C1:年薪制员工A1:扣年终风险金的4%C2:非年薪制员工A2:扣年终风险金的2%C3:严重过失A3:扣当月薪资的8%C4:过失A4:扣当月薪资的4%步骤4:将因果图转换为决策表c1:年薪制员工FFTTc2:非年薪制员工TTFFc3:严重过失FTFTc4:过失TFTFA1:扣年终风险金的4%√A2:扣年终风险金的2%√A3:扣当月薪资的8%√A4:扣当月薪资的4%√用例员工类型过失程度预期输出1年薪制员工严重过失扣年终风险金的4%2年薪制员工过失扣年终风险金的2%3非年薪制员工严重过失扣当月薪资的8%4非年薪制员工过失扣当月薪资的4%步骤5:设计测试用例什么是因果图法?因果图法(Cause-EffectGraphics)是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。因果图提供了一个把需求转化为判定表的系统化方法因果图法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。原因:输入条件结果:输出因果图的关系符号因果图中使用简单的关系符号,以直线联接左右结点。左结点表示输入状态(原因),右结点表示输出状态(结果)。左边的节点表示原因右边的节点表示结果因果图的关系符号恒等:表示原因与结果之间一对一的对应关系。若原因出现,则结果出现;若原因不出现,则结果也不出现。如图,若ci是1,则ei也是1;否则ei为0。非:表示原因与结果之间的一种否定关系。若原因出现,则结果不出现;若原因不出现,反而结果出现。如图,若ci是1,则ei是0;否则ei是1。4种符号表示4种因果关系:恒等、非、或、与ci表示原因,通常在图的左部;ei表示结果,通常在图的右部。ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。c1e1恒等c1e1非因果图的关系符号或:表示若几个原因中有一个出现,则结果出现;只有当这几个原因都不出现时,结果才不出现。如图,若c1或c2是1,则ei为1;否则ei为0。“或”可有任意个输入。c1e1或c2c3Vc1e1与c2∧与:表示若几个原因都出现,结果才出现;若几个原因中有一个不出现,结果就不出现。如图,若c1和c2都是1,则ei为1;否则ei为0。“与”可有任意个输入。因果图的约束符号在实际问题当中,输入状态相互之间还可能存在某些依赖关系,称为约束。例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。因果图的约束符号E约束(异/互斥):表示几个原因不会同时成立;可能他们都不成立,但最多有一个成立。如图,a和b中至多有一个可能为1,即a和b不能同时为1。abEacIbI约束(或/包含):表示几个原因中至少有一个必须成立,当然也可能都成立。如图,a、b和c中至少有一个必须是1,即a、b和c不能同时为0。输入条件的4种约束类型:(Exclusive)(In)因果图的约束符号O约束(唯一):表示几个原因中必须有且仅有一个成立。如图,a和b必须有一个,且仅有1个为1。R约束(要求):表示当a出现时,b必须也出现。如图,a是1时,b必须是1,即不可能a是1时b是0。abOabR(Only)(Request)因果图的约束符号M约束(屏蔽):表示当a是1时,b必须是0;而当a为0时,b的值不一定abM输出条件的约束类型:(Mandate)因果图的约束符号约束类型英文解释约束说明E互斥Exclusive排外的原因a和b中至多有一个可能为1,即a和b不能同时为1。I包含In在…之内原因a、b和c中至少有一个必须是1,即a、b和c不能同时为0。O唯一Only唯一原因a和b必须有一个,且仅有1个为1。R要求Requst要求原因a是1时,b必须是1,即不可能a是1时b是0。M屏蔽Mandate授权;命令结果a是1,则结果b强制为0。因果图中,关系与约束的一样吗?acIbI约束(或/包含):表示几个原因中至少有一个必须成立,当然也可能都成立。如图,a、b和c中至少有一个必须是1,即a、b和c不能同时为0。关系与约束的不同!或:表示若几个原因中有一个出现,则结果出现;只有当这几个原因都不出现时,结果才不出现。如图,若c1或c2是1,则ei为1;否则ei为0。“或”可有任意个输入。c1e1或c2c3V1.找出输入输出并进行标识因果图法设计用例步骤2.分析输入输出的关系3.画出因果图4.因果图转换为判定表5.生成测试用例转换输出关联分析需求因果图法设计用例的步骤1.分析软件需求规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。2.分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。3.由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。4.把因果图转换为判定表。5.根据判定表中的每一列设计测试用例。案例一某软件的一个模块的需求规格说明书中描述:(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。请绘制出因果图和判定表,并给出相应的测试用例。步骤1:分析原因和结果根据题意,原因和结果如下:原因结果C1:年薪制员工A1:扣年终风险金的4%C2:非年薪制员工A2:扣年终风险金的2%C3:严重过失A3:扣当月薪资的8%C4:过失A4:扣当月薪资的4%(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。步骤2:画出因果图原因结果C1:年薪制员工A1:扣年终风险金的4%C2:非年薪制员工A2:扣年终风险金的2%C3:严重过失A3:扣当月薪资的8%C4:过失A4:扣当月薪资的4%步骤3:施加相应的约束原因结果C1:年薪制员工A1:扣年终风险金的4%C2:非年薪制员工A2:扣年终风险金的2%C3:严重过失A3:扣当月薪资的8%C4:过失A4:扣当月薪资的4%步骤4:将因果图转换为决策表c1:年薪制员工FFTTc2:非年薪制员工TTFFc3:严重过失FTFTc4:过失TFTFA1:扣年终风险金的4%√A2:扣年终风险金的2%√A3:扣当月薪资的8%√A4:扣当月薪资的4%√用例Ab预期输出1年薪制员工严重过失扣年终风险金的4%2年薪制员工过失扣年终风险金的2%3非年薪制员工严重过失扣当月薪资的8%4非年薪制员工过失扣当月薪资的4%步骤5:设计测试用例因果图法与判定表法的关系?不同角度因果图法判定表法联系位置黑盒测试技术中,设计测试用例的方法适用于程序的输入条件存在不同的组合,执行相应的操作弥补了等价类、边界值的不足基本思想把程序功能的描述性语言形象的图表(直观、清晰)使用二者往往结合使用,使用因果图可以得到判定表,它可以看作判定表法的前期阶段,也可以直接应用判定表。区别定义用于描述输入之间,输入输出之间的约束关系和因果关系用于表达多逻辑条件下执行不同操作的情况的工具本质考虑输入条件之间的联系、各种组合,相应产生多个动作。考虑输入条件之间的各种组合,相应产生多个动作。当输入条件过多时用例数量相对少(无效用例)可以覆盖到条件之间的先后关系会产生大量测试用例不能覆盖条件之间的先后关系因果图与判定表的选择考虑条件和动作间的联系——先使用因果图如果需求是以判定表形式给出的、项目在设计阶段就采用了判定表——直接用判定表设计测试用例案例2某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息N;如果第二列字符不是数字,则给出信息M。用因果图法测试上述程序。步骤1:分析原因和结果根据题意,原因和结果如下:原因结果c1:第一个字符是Ae1:给出信息Nc2:第一个字符是Be2:修改文件c3:第二个字符是一个数字e3:给出信息M某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息N;如果第二列字符不是数字,则给出信息M。步骤2:画出因果图10为中间节点。c1c2c3e110e2e3~∨~∧步骤3:施加相应的约束考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束;10为中间节点。c1c2c3e110e2e3~∨E~∧步骤4:将因果图转换为决策表规则桩12345678条件C111110000C211001100C31010101010111100动作e1000011e2101000e3010101不可能11测试用例A5A#B9B?X2Y%步骤5:根据决策表设计测试用例编号输入数据预期输出TC1A5修改文件TC2A#给出信息MTC3B9修改文件TC4B?给出信息MTC5X2给出信息NTC6Y%给出信息N和信息M案例3例如,有一个饮料自动售货机(处理单价为5元)的控制处理软件,它的软件规格说明如下:若投入5元钱,按下“橙汁”或“啤酒”的按钮,则相应的饮
本文标题:第02章-因果图法
链接地址:https://www.777doc.com/doc-1791484 .html