第十三讲第十三讲前面介绍的等价类划分和边界值分析法都没有考虑到输入情况的各种组合。这样虽然各个输入条件可能出错的情况已经看到了,但每个输入情况组合起来可能出错的情况都被忽略了。采用因果图方法能帮助我们按一定步骤,选择一组高效的测试用例。同时,还能为我们指出程序规格说明的描述中存在什么问题。©Silberschatz,KorthandSudarshan1.2DatabaseSystemConcepts3.3.因果图因果图©Silberschatz,KorthandSudarshan1.3DatabaseSystemConcepts3.3.因果图因果图利用因果图导出测试用例需要经过以下几个步骤:1)分析程序规格说明的描述中哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类。结果是输出条件。2)分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”。©Silberschatz,KorthandSudarshan1.4DatabaseSystemConcepts3.3.因果图因果图3)由于语法或环境的限制,有些原因和结果的组合情况时不可能出现的。为表明这些特定的情况,在因果图上使用特殊的符号表明约束条件。4)把因果图转换成判定表。5)把判定表的每一列写成一个测试情况。©Silberschatz,KorthandSudarshan1.5DatabaseSystemConcepts3.3.因果图因果图为了对该方法有进一步理解,需要对因果图作一说明。在因果图中出现的四个符号分别表示四种关系(参看图A所示,其中ci表示原因,通常在图的左部,ei表示结果,通常在图的右部。ci和ei都可取值0或1,0表示某状态不出现,1表示某状态出现)。©Silberschatz,KorthandSudarshan1.6DatabaseSystemConcepts3.3.因果图因果图图A因果图的基本符号C1e1e1C1C1C2C3e1C1C2e1(1)恒等(2)非(3)或(4)与∨∧©Silberschatz,KorthandSudarshan1.7DatabaseSystemConcepts3.3.因果图因果图1)恒等:若c1是1,则e1也是1,否则e1为0。2)非:若c1是1,则e1是0,否则e1为1。3)或:若c1或c2或c3是1,则e1是1,否则e1为0。“或”可有任意个输入。4)与:若c1和c2都是1,则e1是1,否则e1为0。“与”也可有任意个输入。©Silberschatz,KorthandSudarshan1.8DatabaseSystemConcepts3.3.因果图因果图因果图中使用了简单的逻辑符号,以直线连接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。我们注意到,在实际问题中,输入状态相互之间还可能存在某些依赖关系,我们称之为“约束”。比如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,以特定的符号标明这些约束(参看图B)。©Silberschatz,KorthandSudarshan1.9DatabaseSystemConcepts3.3.因果图因果图图B约束符号abC1C1C1C1C1C1C1C1C1EIORM异或唯一要求强制©Silberschatz,KorthandSudarshan1.10DatabaseSystemConcepts3.3.因果图因果图对于输入条件的约束有:1)E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。2)I约束(或):a、b和c中至少有一个必须是1,即a、b和c不能同时为0。3)O约束(唯一):a和b中必须有一个,且仅有一个为1。4)R约束(要求):a是1时,b必须是1,即不能a是1时b是0。输出条件的约束是M约束(强制):若结果a是1,则结果b强制为0。©Silberschatz,KorthandSudarshan1.11DatabaseSystemConcepts3.3.因果图因果图现在让我们以一个简单的实例来说明因果图方法。如果某程序的要求是这样规定的:“第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L。如果第二列字符不是数字,则给出信息M。”©Silberschatz,KorthandSudarshan1.12DatabaseSystemConcepts3.3.因果图因果图以下根据这一规格说明画出因果图。在分析以上的要求以后,我们列出原因:1——第一列字符是A2——第一列字符是B3——第二列字符是一数字结果则应是:21——修改文件22——给出信息L23——给出信息M12311222123图C因果图实例∨∧©Silberschatz,KorthandSudarshan1.13DatabaseSystemConcepts3.3.因果图因果图其因果图如C所示。图中左列为原因,右列为结果,编号为11的中间结果是导出结果的进一步原因。考虑到原因1和原因2不可能同时为1,可利用前...