1、2位数字。试用等价类划分法设计测试用例。,22.已知有以下一段代码Int a,b,c;If(a0)C=5;Else if(b-3)C=4;Else C=3 请分别采用语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、条件组合覆盖的方法设计测试用例,.某航空公司规定,乘客可以免费托运不超过20公斤的行李。当行李重量超过20公斤时,对头等舱的乘客超重部分每公斤收费4元,其它舱的乘客收费6元。对残疾乘客超重部分在舱位等次相同的情况下收费减半。用判定表描述行李托运费的处理过程并写出相应的测试用例。,根据给出的程序,完成以下要求:(1)画出相应的控制流图。(2)计算环形复杂度。(3)找出程序的独立路径集合。(
2、4)为每条路径设计测试用例。,void fun(int num,int type)int x=0;int y=0;while(num-0)if(type=0)break;else if(type=1)x=x+10;else y=y+20;,程序段的控制流图,环形复杂度计算如下:,流图中有4个区域;V(G)=E-N+2,V(G)=10(条边)-8(个节点)+2=4;V(G)=P+1,V(G)=3(个判定节点)14。因此,该函数的环形复杂度是4。更重要的是,V(G)的值提供了组成基本集的独立路径的上界,并由此得出覆盖所有程序语句所需的测试设计数量的上界。,3、导出测试用例,根据上面的计算方法,导出
3、基本路径集,列出程序的独立路径。可得出程序段的基本路径集中有4条独立路径:路径1:414路径2:46714路径3:4691013414路径4:4691213414,4、设计测试用例,4.8 最少测试用例数计算,为实现测试的逻辑覆盖,必须设计足够多的测试用例,并使用这些测试用例执行被测程序,实施测试。我们关心的是:对于某个具体的程序来说,至少需要设计多少个测试用例。这里提供一种估算最少测试用例数的方法。我们知道,结构化程序是由 3 种基本控制结构组成:顺序型(构成串行操作)、选择型(构成分支操作)和重复型(构成循环操作)。为了把问题化简,避免出现测试用例极多的组合爆炸,把构成循环操作的重复型结构
4、用选择结构代替。这样,任一循环便改造成进入循环体或不进入循环体的分支操作了。,最少测试用例数计算(续),用N-S图表示程序的3种基本控制结构:,图中A、B、C、D、S均表示要执行的操作,P是可取真假值的谓词,Y表真值,N表假值。图中的(c)和(d)两种重复型结构代表了两种循环。在做了简化循环的假设以后,对于一般的程序控制流,我们只考虑选择型结构。事实上它已经能体现顺序型和重复型结构了。,最少测试用例数计算(续),显然,要测试这个小程序,需要至少提供4个测试用例才能作到逻辑覆盖,使得ac、ad、bc及bd操作均得到检验。其实,这里的4是图中的第1个分支谓词引出的两个操作,及第2个分支谓词引出的两
5、个操作组合起来而得到的,即 22=4。并且,这里的2是由于两个并列的操作,即1+1=2 而得到的。,例如,下图表达了两个顺序执行的分支结构。当两个分支谓词P1和P2取不同值时,将分别执行a或b及c或d操作。,最少测试用例数计算(续),对于一般的、更为复杂的问题,估算最少测试用例个数的原则也是同样的:如果在N-S图中存在有并列的层次A1、A2,A1和A2的最少测试用例个数分别为a1、a2,则由 A1、A2 两层所组合的 N-S图对应的最少测试用例数为a1a2。如果在N-S图中不存在有并列的层次,则对应的最少测试用例数由并列的操作数决定,即N-S图中除谓词之外的操作框的个数。,最少测试用例数计算(
6、续),例:如下图所示的两个N-S图,至少需要多少个测试用例完成逻辑覆盖?,对于第一个N-S图:由于图中并不存在并列的层次,最少测试用例数由并列的操作数决定,即为1+1+1=3。对于第二个N-S图:由于图中没有包含并列的层次,最少测试用例数仍由并列的操作数决定,即为1+1+1+1+1=5。如下图所示的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图如右图所示的,至少需要多少个测试用例才能对该程序实现逻辑覆盖?,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1