软测练习题讲解教学提纲.ppt
软测练习题讲解l22.已知有以下一段代码lInta,b,c;lIf(a0)lC=5;lElseif(b0)l l if(type=0)l break;l else l if(type=1)l x=x+10;l else l y=y+20;l ll程序段的控制流图程序段的控制流图环形复杂度计算如下:环形复杂度计算如下:1.流图中有流图中有4个区域;个区域;2.V(G)=E-N+2,V(G)=10(条边条边)-8(个节点个节点)+2=4;3.V(G)=P+1,V(G)=3(个判定节点个判定节点)14。因此,该函数的环形复杂度是因此,该函数的环形复杂度是4。更重要的。更重要的是,是,V(G)的值提供了组成基本集的独立的值提供了组成基本集的独立路径的上界,并由此得出覆盖所有程序路径的上界,并由此得出覆盖所有程序语句所需的测试设计数量的上界。语句所需的测试设计数量的上界。3、导出测试用例、导出测试用例l根据上面的计算方法,导出基本路径集,列出根据上面的计算方法,导出基本路径集,列出程序的独立路径。可得出程序段的基本路径集程序的独立路径。可得出程序段的基本路径集中有中有4条独立路径:条独立路径:l路径路径1:414l路径路径2:46714l路径路径3:4691013414l路径路径4:46912134144、设计测试用例、设计测试用例输入数据输入数据预期输出预期输出Test1num=0type=0 x=0y=0Test2num=1type=0 x=0y=0Test3num=1type=1x=10y=0Test4num=1type=2x=0y=204.8 最少测试用例数计算最少测试用例数计算l为实现测试的逻辑覆盖,必须设计足够多的测试用例,并使用这些测试用例执行被测程序,实施测试。我们关心的是:对于某个具体的程序来说,至少需要设计多少个测试用例。这里提供一种估算最少测试用例数的方法。l我们知道,结构化程序是由3种基本控制结构组成:顺序型(构成串行操作)、选择型(构成分支操作)和重复型(构成循环操作)。l为了把问题化简,避免出现测试用例极多的组合爆炸,把构成循环操作的重复型结构用选择结构代替。这样,任一循环便改造成进入循环体或不进入循环体的分支操作了。最少测试用例数计算最少测试用例数计算(续)(续)l用N-S图表示程序的3种基本控制结构:图中A、B、C、D、S均表示要执行的操作,P是可取真假值的谓词,Y表真值,N表假值。图中的(c)和(d)两种重复型结构代表了两种循环。在做了简化循环的假设以后,对于一般的程序控制流,我们只考虑选择型结构。事实上它已经能体现顺序型和重复型结构了。最少测试用例数计算最少测试用例数计算(续)(续)显然,要测试这个小程序,需要至少提供4个测试用例才能作到逻辑覆盖,使得ac、ad、bc及bd操作均得到检验。其实,这里的4是图中的第1个分支谓词引出的两个操作,及第2个分支谓词引出的两个操作组合起来而得到的,即22=4。并且,这里的2是由于两个并列的操作,即1+1=2而得到的。n例如,下图表达了两个顺序执行的分支结构。当两个分支谓例如,下图表达了两个顺序执行的分支结构。当两个分支谓词词P1和和P2取不同值时,将分别执行取不同值时,将分别执行a或或b及及c或或d操作。操作。最少测试用例数计算最少测试用例数计算(续)(续)n对于一般的、更为复杂的问题,估算最少测试用例个数的原对于一般的、更为复杂的问题,估算最少测试用例个数的原则也是同样的:则也是同样的:如果在如果在N-S图中存在有并列的层次图中存在有并列的层次A1、A2,A1和和A2的最少的最少测试用例个数分别为测试用例个数分别为a1、a2,则由,则由 A1、A2 两层所组合的两层所组合的 N-S图对应的最少测试用例数为图对应的最少测试用例数为a1a2。如果在如果在N-S图中不存在有并列的层次,则对应的最少测试用图中不存在有并列的层次,则对应的最少测试用例数由并列的操作数决定,即例数由并列的操作数决定,即N-S图中除谓词之外的操作框图中除谓词之外的操作框的个数。的个数。最少测试用例数计算最少测试用例数计算(续)(续)n例:如下图所示的两个N-S图,至少需要多少个测试用例完成逻辑覆盖?对于第一个对于第一个N-S图:图:由于图中并不存在并列的层次,由于图中并不存在并列的层次,最少测试用例数由并列的操作数最少测试用例数由并列的操作数决定,即为决定,即为1+1+1=3。对于第二个对于第二个N-S图:图:由于图中没有包含并列的层次,由于图中没有包含并列的层次,最少测试用例数仍由并列的操作最少测试用例数仍由并列的操作数决定,即为数决定,即为1+1+1+1+1=5。最少测试用例数计算最少测试用例数计算(续)(续)n例:如下图所示的例:如下图所示的N-S图,至少需要多少个测试用例完成图,至少需要多少个测试用例完成逻辑覆盖?逻辑覆盖?分析该N-S图:图中的2345和67是并列的两层。其中,2345层对应的最少测试用例数为1+1+1+1+1=5,67层对应的测试用例数为1+1+1=3,2345和67这两层组合后对应的测试用例数为53=15。最后,由于两层组合后的部分是不满足谓词1时所要做的操作,还要加上满足谓词1要做的操作,因此整个程序所需测试用例数为15+1=16。习题习题2、某程序所画出的N-S图如右图所示的,至少需要多少个测试用例才能对该程序实现逻辑覆盖?此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢