




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、白盒测试技术案例详解 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。其中运用最为广泛的是基本路径测试法。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。包括以下4个步骤和一个工具方法:1. 程序的控制流图:描述程序控制流的一种图示方法。2. 程序圈复杂度:McCabe复杂性度量。从程
2、序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。3. 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。4. 准备测试用例:确保基本路径集中的每一条路径的执行。工具方法:图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。程序的控制流图:描述程序控制流的一种图示方法。圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。流图中的箭头称为边或连接,代表控制流任何过程设计都要被翻译成控制流图
3、。如何根据程序流程图画出控制流程图?在将程序流程图简化成控制流图时,应注意:n 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。n 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如下图所示n 如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。例如:1 if a or b2 x3 else4 y对应的逻辑为:独立路径:至少沿一条新的边移动的路径基本路径测试法的步骤:o 第一步:画出控制流图流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形
4、决定框中不包含复合条件)。在流图中,每一个圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。画出其程序流程图和对应的控制流图如下第二步:计算圈复杂度圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。有以下三种方
5、法计算圈复杂度:流图中区域的数量对应于环型的复杂性;给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。第三步:导出测试用例根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。)ü 路径1:4-14ü 路径2:4-6-7-14ü 路径3:4-6-8-10-13-4-14ü 路径4:4-6-8-11-13-4-
6、14根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。o 第四步:准备测试用例为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,满足上面例子基本路径集的测试用例是:举例说明:例:下例程序流程图描述了最多输入50个值(以1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。步骤1:导出过程的流图。步骤2:确定环形复杂性度量V(G):1)V(G)= 6 (个区域)2)V(G)=EN+2=1612+2=6其中E为流图中的边数,N为结点数;3)V(G)=P+1=5+1=6其中P为谓词结点的个数。在流图中,结点2、3
7、、5、6、9是谓词结点。步骤3:确定基本路径集合(即独立路径集合)。于是可确定6条独立的路径:路径1:1-2-9-10-12路径2:1-2-9-11-12路径3:1-2-3-9-10-12路径4:1-2-3-4-5-8-2路径5:1-2-3-4-5-6-8-2路径6:1-2-3-4-5-6-7-8-2步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。1)路径1(1-2-9-10-12)的测试用例:scorek=有效分数值,当k < i ;scorei=1, 2i50;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。2)路
8、径2(1-2-9-11-12)的测试用例:score 1 = 1 ;期望的结果:average = 1 ,其他量保持初值。3)路径3(1-2-3-9-10-12)的测试用例:输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;期望结果:n1=50、且算出正确的总分和平均分。4)路径4(1-2-3-4-5-8-2)的测试用例:scorei=有效分数,当i<50;scorek<0, k< i ;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。举例说明:例:下例程序流程图描述了最多输入50个值(以1作为输入结束标志),计算其中
9、有效的学生分数的个数、总分数和平均值。步骤1:导出过程的流图。步骤2:确定环形复杂性度量V(G):1)V(G)= 6 (个区域)2)V(G)=EN+2=1612+2=6其中E为流图中的边数,N为结点数;3)V(G)=P+1=5+1=6其中P为谓词结点的个数。在流图中,结点2、3、5、6、9是谓词结点。步骤3:确定基本路径集合(即独立路径集合)。于是可确定6条独立的路径:路径1:1-2-9-10-12路径2:1-2-9-11-12路径3:1-2-3-9-10-12路径4:1-2-3-4-5-8-2路径5:1-2-3-4-5-6-8-2路径6:1-2-3-4-5-6-7-8-2步骤4:为每一条独立
10、路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。1)路径1(1-2-9-10-12)的测试用例:scorek=有效分数值,当k < i ;scorei=1, 2i50;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。2)路径2(1-2-9-11-12)的测试用例:score 1 = 1 ;期望的结果:average = 1 ,其他量保持初值。3)路径3(1-2-3-9-10-12)的测试用例:输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;期望结果:n1=50、且算出正确的总分和平均分。4)路径4(1-2-3-4-5
11、-8-2)的测试用例:scorei=有效分数,当i<50;scorek<0, k< i ;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。 连接权为“1”表示存在一个连接,在图中如果一行有两个或更多的元素“1”,则这行所代表的结点一定是一个判定结点,通过连接矩阵中有两个以上(包括两个)元素为“1”的个数,就可以得到确定该图圈复杂度的另一种算法。案例讲解:基本路径测试如下程序:1. void ReadPara( CString temp)2. 3. if ( temp = = ">=")4.
12、m_oper.SetCurSel(0);5. else6. 7. if (temp = = ">")8. m_oper.SetCurSel(1);9. else10. 11. if ( temp = = "= =")12. m_oper.SetCurSel(2);13. else14. 15. if( temp = = "<=")16. m_oper.SetCurSel(3);17. else18. 19. if ( temp = = "<")20. m_oper.SetCurSel(4);21.
13、 else22. m_oper.SetCurSel(5);23. 24. 25. 26. 27. return;28. 1画出这段代码的控制流图,如4-9所示:2根据控制流图,计算环路复杂度V(G)=22-18+2=6。3导出测试用例,列出路径:Path1:2-3-4-27-28Path2:2-3-7-8-26-27-28Path3:2-3-7-11-12-25-26-27-28Path4:2-3-7-11-15-16-24-25-26-27-28Path5:2-3-7-11-15-19-20-23-24-25-26-27-28Path6:2-3-7-11-15-19-22-23-24-25-
14、26-27-284设计测试用例根据第3步中给出的路径,下面设计测试用例列在表4-9中。 传入参数预期调用Path 1ReadPara(”>=”)m_oper.SetCurSel(0)Path 2ReadPara(”>”)m_oper.SetCurSel(1)Path 3ReadPara(”=”)m_oper.SetCurSel(2)Path 4ReadPara(”<”)m_oper.SetCurSel(3)Path 5ReadPara(”<=”)m_oper.SetCurSel(4)Path 6ReadPara(”+”)m_oper.SetCurSel(5)5
15、.图形矩阵的画法在前面我们已经讲过,这里不再赘述。(请同学们自行画出)九、最少测试用例数计算(参考)n 为实现测试的逻辑覆盖,必须设计足够多的测试用例,并使用这些测试用例执行被测程序,实施测试。我们关心的是:对于某个具体的程序来说,至少需要设计多少个测试用例。这里提供一种估算最少测试用例数的方法。n 我们知道,结构化程序是由 3 种基本控制结构组成:顺序型(构成串行操作)、选择型(构成分支操作)和重复型(构成循环操作)。n 为了把问题化简,避免出现测试用例极多的组合爆炸,把构成循环操作的重复型结构用选择结构代替。这样,任一循环便改造成进入循环体或不进入循环体的分支操作了。 用N-S图表示程序的
16、3种基本控制结构:Ø 图中A、B、C、D、S均表示要执行的操作,P是可取真假值的谓词,Y表真值,N表假值。Ø 图中的 (c) 和 (d) 两种重复型结构代表了两种循环。在做了简化循环的假设以后,对于一般的程序控制流,我们只考虑选择型结构。事实上它已经能体现顺序型和重复型结构了。n 例如,下图表达了两个顺序执行的分支结构。当两个分支谓词P1和P2取不同值时,将分别执行a或b及c或d操作。显然,要测试这个小程序,需要至少提供4个测试用例才能作到逻辑覆盖,使得ac、ad、bc及bd操作均得到检验。其实,这里的4是图中的第1个分支谓词引出的两个操作,及第2个分支谓词引出的两个操作组
17、合起来而得到的,即 2×2=4。并且,这里的2是由于两个并列的操作,即1+1=2 而得到的。n 对于一般的、更为复杂的问题,估算最少测试用例个数的原则也是同样的:Ø 如果在N-S图中存在有并列的层次A1、A2,A1和A2的最少测试用例个数分别为a1、a2,则由 A1、A2 两层所组合的 N-S图对应的最少测试用例数为a1×a2。Ø 如果在N-S图中不存在有并列的层次,则对应的最少测试用例数由并列的操作数决定,即N-S图中除谓词之外的操作框的个数。Ø 例:如下图所示的两个N-S图,至少需要多少个测试用例完成逻辑覆盖?Ø 对于第一个N-S
18、图:由于图中并不存在并列的层次,最少测试用例数由并列的操作数决定,即为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这两层组合后对应的测试用例数为5×3=15。最后,由于两层组合后的部分是不满足谓词1时所要做的操作,还要加上满足谓词1要做的操作,因此整
19、个程序所需测试用例数为15+1=16。思考题:1、将下图所示的流程图转换为N-S图,并估算至少需要多少个测试用例完成逻辑覆盖?2、某程序所画出的N-S图如右图所示的,至少需要多少个测试用例才能对该程序实现逻辑覆盖?白盒测试简单归纳1、白盒测试基本技术词法分析与语法分析、静态错误分析、表达式分析、接口分析白盒测试又称为逻辑驱动测试,根据软件概要设计和详细设计说明文档生成用于白盒测试的测试用例。2、程序插桩技术程序插桩方法:是借助往被测程序中插入操作,来实现测试目的的方法。插桩时需要考虑哪些问题:1)、探测哪些信息2)、在程序的什么部位设置探测点3)、需要设置多少个探测点3、代码检查方式桌面检查、
20、代码审查、走查4、静态结构分析由于可能没有在所有的出口进行动态内存的释放与回收操作,困些这样的结构存在内存泄漏的可能。5、逻辑覆盖法白盒测试的动态测试要根据程序的控制结构设计测试用例,原则是1)、保证一个模块中的所有独立路径至少被使用一次2)、对所有逻辑值均需测试true和false3)、在上下边界及可操作范围内运行所有循环4)、检查内部数据结构以确保其有效性。6、逻辑覆盖的标准:l Foster的ESTCA覆盖标准l Woodward等人的层次LCSAJ覆盖标准n 基于LCSAJ与路径的关系,提出了层次LCSAJ覆盖准则。它是一个分层的覆盖准则,可以概括的描述为:Ø 第一层 语句覆
21、盖。Ø 第二层 分支覆盖。Ø 第三层 LCSAJ覆盖,即程序中的每一个LCSAJ都至少在测试中经历过一次。Ø 第四层 两两LCSAJ覆盖,即程序中的每两个相连的LCSAJ组合起来在测试中都要经历一次。Ø 第n+2层 每n个首尾相连的LCSAJ组合在测试中都要经历一次。 n 在实施测试时,若要实现上述的层次LCSAJ覆盖,需要产生被测程序的所有LCSAJ。n 例:找出下面DoWork函数的所有LCSAJ和LCSAJ路径。void DoWork (int x,int y,int z)1. 2. int k=0,j=0;3. if ( (x>3)&
22、;&(z<10) )4. k=x*y-1; 5. j=sqrt(k); 6. /语句块1 7. if ( (x=4)|(y>5) )8. j=x*y+10; /语句块2 9. j=j%3; /语句块310. Ø LCSAJ(5个): (1)int k=0,j=0; if ( (x>3)&&(z<10) ) (2)k=x*y-1; j=sqrt(k); if ( (x=4)|(y>5) ) (3)if ( (x=4)|(y>5) ) (4)j=x*y+10; j=j%3 (5)j=j%3Ø LCSAJ路径(4条):
23、(1)-(2)-(4) (1)-(2)-(5) (1)-(3)-(4) (1)-(3)-(5)7、为什么要进行白盒测试?原因有三,如下:l 逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。l 我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的基础上被执行。l 印刷上的错误是随机的。8、白盒测试用例测试方法1、 语句(statement)覆盖:语句覆盖是最起码的结构覆盖要求,要求设计足够多的测试用例,使得程序中每条可执行语句至少被执行一次。2、判定(branches)覆盖/分支覆盖:要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支
24、至少执行一次。3、条件(condition)覆盖:要求设计足够多的测试用例,使得判定中的每个条件至少有一次为真值,有一次为假值。4、判定/条件(branches/condition)覆盖:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。5、组合覆盖:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。6、路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径下面举例说明:语句覆盖(SC):程序中的每条词句至少执行一次如针对以下程序段,对于变量 c 的取值,至少需要(61)个测试用例才能够满足语句覆盖的要求。c
25、= (u8_t *)q->payload)i; switch (c) case SLIP_END: sio_send(SLIP_ESC, netif->state); sio_send(SLIP_ESC_END, netif->state);break; case SLIP_ESC: sio_send(SLIP_ESC, netif->state); sio_send(SLIP_ESC_ESC, netif->state); break; default: sio_send(c, netif->state); break; (61)A4 B.3 C2 D 1
26、 判定覆盖(DC)设计足够测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或都 说使得程序中的每一个取“真”或“假”分支至少经历一次,因些判定覆盖又称分支覆盖。A&&(B|C),A|(B|C)A=T,B=T,C=TA=F,B=F,C=F针对以下 C 语言程序段,对于(MaxNum,Type)的取值,至少需要(62)个测试用例能够满足判定覆盖的要求。while ( MaxNum- > 0 ) if ( 10 = Type ) x = y * 2; else if ( 100 = Type ) x = y + 10; else x = y - 20; (62)
27、A5B 4 C 3 D 2 测试用例:(1,10),(1,100),(1,200)条件覆盖(CC):构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次A&&(B|C),A|(B|C)A=T,B=F,C=TA=F,B=T,C=F针对下列程序段,对于(A,B)的取值,以下(57)测试用例组合能够满足条件覆盖的要求。 IF ( ( A - 10 ) = 20 AND ( B + 20 ) > 10 ) THEN C = 0 IF ( ( A - 30 ) < 10 AND ( B - 30 ) < 0 ) THEN B = 30A=50 B=-10
28、 A=40 B=40 A=30 B=-10 A=30 B=30 (57)ABCDABA - 10 = 20 B + 20 > 10A - 30 < 10 B - 30< 0150-10FFFT24040FTFF330-10TTTT43030TTTF条件判定组合覆盖(CDC)设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。A&&(B|C),A|(B|C)A=T,B=T,C=TA=F,B=F,C=F多条件覆盖(MCC)使得每个判定中条件的各种可能组合都至少出现一次。A&&(
29、B|C),A|(B|C)A-B-CT-T-TT- T- FT-F-TT-F-FF-F-FF-F-TF-T-FF-T-T(2006) 多条件覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次,满足多条件覆盖级别的测试用例也是满足_(26)_级别的:针对布尔表达式A&&(B|C) 执行逻辑覆盖测试,测试用例至少需要_(27)_种组合才能满足多条件覆盖的要求。(26)A语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖B判定覆盖、条件覆盖;条件判定组合覆盖、修正条件判定覆盖C语句覆盖、判定覆盖、条件判定组合覆盖、修正条件判定覆盖D路径覆盖、判
30、定覆盖、条件覆盖、条件判定组合覆盖 (27)A6 B4 C8 D12修正条件判定覆盖(MCDC)两个条件:每一个程序模块的入口和出口都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的bool条件,每个条件对于判定的结果值是独立的。假设 A、B 为布尔变量,对于逻辑表达式( A && B ),至少需要(63)个测试用例才能完成 MCDC 覆盖。(63)A4 B3 C2 D1 用例集:(T,T),(T,F),(F,T)ABA&&B1TTT2TFF3FTF4FFF(2009)
31、针对程序段:IF( A|B|C )THEN W=W/X,对于(A,B,C)的取值,(57)测试用例能够满足MCDC(修正条件逻辑判定)的要求。 (57)A(F,T,T) (T,F,T) (T,F,F) (T,T,F) B(T,F,F) (T,T,F) (F,T,T) (F,F,F) C(T,F,F) (T,T,F) (F,T,T) (F,F,T) D(T,F,F) (F,T,F) (F,F,T) (F,F,F)序号ABCA|B|CABC1T
32、TTT2TTFT43TFTT4TFFT25FTTT6FTFT77FFTT68FFFF6、基本路径法(环路复杂度)l 通常环路复杂性可用以下三种方法求得:1、将环路复杂性定义为控制流图中的区域数。2、设E为控制流图的边数,N为图的结点数,则环路复杂性为 V(G)EN2。3、若设P为控制流图中的判定结点数,则有 V(G)P1。n 但即使每条路径都测试过了,仍然可能存在错误。因为:Ø 穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。Ø 穷举路径测试不可能查出程序因为遗漏路径而出错。Ø 穷举路径测试发现不了一些与数据相关的错误。n 测试覆盖率
33、:用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。n 测试覆盖率可以表示出测试的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是目标,只是一种手段。 n 测试覆盖率包括功能点覆盖率和结构覆盖率:Ø 功能点覆盖率大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例关系。Ø 结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、路径覆盖率等等。白盒测试历年考试类型(实战你能做多少?):一、选择题:2006年 多条件覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判定中条
34、件的各种可能组合都至少出现一次,满足多条件覆盖级别的测试用例也是满足_(26)_级别的:针对布尔表达式A&&(B|C) 执行逻辑覆盖测试,测试用例至少需要_(27)_种组合才能满足多条件覆盖的要求。(26)A语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖B判定覆盖、条件覆盖;条件判定组合覆盖、修正条件判定覆盖C语句覆盖、判定覆盖、条件判定组合覆盖、修正条件判定覆盖D路径覆盖、判定覆盖、条件覆盖、条件判定组合覆盖(27)A6 B4 C8 D12 逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语句覆盖法是较为常用的方法,针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见
35、下表,对表中的空缺项(True或者False),正确的选择是_(60)_。语句段:if (A && (B|C) x=l;else x=O;用例表: 用例1用例2ATRUEFALSEBFALSECTRUEA &&(B|C)FALSE(60)ATRUE FALSE TRUE BTRUE FALSE FALSECFALSE FALSE TRUEDTRUE TRUE FALSE _(61)_方法根据输出对输入的依赖关系设计测试用例。(61)A路径测试B等价类 C因果图D边界值 针对下面程序段,边界值问题可以定位在_(62)_。1:Rem Create a 10 elem
36、ent integer array2:Rem lnitialize each element to -13:Dim data(10) As Integer4:Dim i As Integer5:For i=1 TO 106:data(i)=-17:Next i8:End(62) A. data(1)B. data(0)C. data(9)D. data(10) 以下控制流图的圈复杂度V(g)和基本圈复杂度EV(g)是_(63)_ (63)AV(g)=5 EV(g)=1BV(g)=6 EV(g)=6CV(g)=5 EV(g)=5DV(g)=6 EV(g)=1 2007年阅读下列流程图:当用判定覆
37、盖法进行测试时,至少需要设计(44)个测试用例。当用判定覆盖法进行测试时,至少需要设计(44)个测试用例。(44)A. 2 B. 4 C. 6 D. 8 以下控制流程图的环路复杂性 V(G)等于(54)。(54) A4 B5 C6 D1 针对下列程序段,对于(A,B,C)的取值,以下(56)测试用例组合能够满足语句覆盖的要求。 IF ( ( A + 10 ) = 2 OR ( B -20 ) < 3 ) THEN C = 0 IF ( ( A+30 ) > 10 AND ( C - 30 ) < 0 ) THEN B = 30 (56)A(2,30,1) B(-20,0,30
38、) C(-30,20,30)D(2,20,3) 针对下列程序段,对于(A,B)的取值,以下(57)测试用例组合能够满足条件覆盖的要求。 IF ( ( A - 10 ) = 20 AND ( B + 20 ) > 10 ) THEN C = 0 IF ( ( A - 30 ) < 10 AND ( B - 30 ) < 0 ) THEN B = 30A=50 B=-10 A=40 B=40 A=30 B=-10 A=30 B=30 (57)ABCD(A-10)=20 B+20>10ANDA-30<10 B-30<0ANDA=50 B=-10FTFTTTA=40
39、 B=40FTFFFFA=30 B=-10TFFTTTA=30 B=30TTTTFF针对逻辑覆盖有下列叙述,(58)是不正确的。(58) A达到 100DC 要求就一定能够满足 100SC 的要求 B达到 100CC 要求就一定能够满足 100SC 的要求 C达到 100CDC 要求就一定能够满足 100SC 的要求
40、60; D达到 100MCDC 要求就一定能够满足 100SC 的要求以下所示程序控制流程图中有(59)条线性无关的基本路径。(59)A1B.2 C3D4 下列叙述中,(60)是正确的。(60) A白盒测试又称为逻辑驱动测试 B穷举路径测试可以查出程序中因遗漏路径而产生的错误 C一般而言,黑盒测试对结构的覆盖比白盒测试高
41、D必须根据软件需求说明文档生成用于白盒测试的测试用例针对以下程序段,对于变量 c 的取值,至少需要(61)个测试用例才能够满足语句覆盖的要求。c = (u8_t *)q->payload)i; switch (c) case SLIP_END: sio_send(SLIP_ESC, netif->state); sio_send(SLIP_ESC_END, netif->state);break; case SLIP_ESC: sio_send(SLIP_ESC, netif->state); sio_send(SLIP_ESC_ESC, netif->state
42、); break; default: sio_send(c, netif->state); break; (61)A4 B.3 C2 D 1 针对以下 C 语言程序段,对于(MaxNum,Type)的取值,至少需要(62)个测试用例能够满足判定覆盖的要求。while ( MaxNum- > 0 ) if ( 10 = Type ) x = y * 2; else if ( 100 = Type ) x = y + 10; else x = y - 20; (62)A5B 4 C 3 D 2 假设 A、B 为布尔变量,对于逻辑表达式( A && B ),至少需要(63
43、)个测试用例才能完成 MCDC 覆盖。(63)A4 B3 C2 D1 用例1用例2用例3用例4ATTFFBFTTFA&&BFTFF(2008年)(43) 下面为C语言程序,边界值问题可以定位在(45)。 int data(3), int i, for (i=1,i<=3,i+) data(i)= 100 A. data(0) B. data(1) C. data(2) D. data(3)(46)叙述是正确的。测试用例应由测试设计人员来制定测试点应由测试人员确立测试工作展开于项目立项后,而不是代码开发完成之后测试对象是源代码A B C D 通常测试用例很难100
44、覆盖测试需求,因为(47)。 输入量太大 输出结果太多 软件实现途径多 测试依据没有统一标准A B C D 假定X为整数类型变量,X>=1并且X<=10,如果用边界值分析法,X在测试中应该取(48)值。A1,10 B0,1,10,11 C1,11 D1,5,10,11 针对下列程序段,需要(52)个测试用例可以满足语句覆盖的要求。 switch ( value ) case 0: other = 30; break; case 1: other = 50; break; case 2: other = 300; case 3: other = other / value; brea
45、k; default: other = other * value; A2 B3 C4 D 5 针对逻辑覆盖(53)叙述是不正确的。A达到100CC要求就一定能够满足100DC的要求B达到100CDC要求就一定能够满足100DC的要求C达到100MCDC要求就一定能够满足100DC的要求D达到100路径覆盖要求就一定能够满足100DC的要求 以下控制流程图的环路复杂性V(G)等于(54)。A. 5 B. 6 C. 9 D 12 在程序控制流图中,有8条边,6个节点,则控制流程图的环路复杂性V(G)等于(55)。A. 2 B. 4 C. 6 D. 8 针对程序段: IF(X>10)AND(
46、Y<20)THEN W=W/A,对于(X,Y)的取值,以下(56)组测试用例能够满足判定覆盖的要求。A. (30,15) (40,10) B. (3,0) (30,30)C. (5,25) (10,20) D. (20,10) (1,100)X>10Y<20AND(30,15) (40,10)TTTTTT(3,0) (30,30)FTTFFF(5,25) (10,20)FFFFFF(20,10) (1,100)TFTFTF(2009年) 关于白盒测试的测试用例设计方法叙述,正确的是(55) 。(55)A完成SC(语句判定)所需的测试用例数目一定多于完成DC(逻辑判定)所需的测
47、试用例数目 B达到100CC(条件判定)要求就一定能够满足100SC的要求 C达到 100CDC(条件判定组合覆盖)要求就一定能够满足 100CC的要求 D任何情况下,都可以达到100路径覆盖的要求 以下控制流图的圈复杂度V(g)为(56) 。 (56)A4 B6 C8
48、60; D10 针对程序段:IF( A|B|C )THEN W=W/X,对于(A,B,C)的取值,(57)测试用例能够满足MCDC(修正条件逻辑判定)的要求。 (57)A(F,T,T) (T,F,T) (T,F,F) (T,T,F) B(T,F,F) (T,T,F) (F,T,T) (F,F,F) C(T,F,F) (T,T,F) (F,T,T) (F,F,T) D(T,F,F) (F,T,F) (F,F
49、,T) (F,F,F)序号ABCA|B|CABC1TTTT2TTFT43TFTT4TFFT25FTTT6FTFT77FFTT68FFFF 针对下列程序段,需要(58)个测试用例可以满足分支覆盖的要求。 int IsLeap(int year) if ( year % 4 = 0 ) if ( ( year % 100 = 0 ) if (
50、year % 400 = 0 ) leap = 1; else leap = 0; else leap = 1; else leap = 0; return leap;
51、60; (58)A3 B4 C6 D7 RUP 在每个阶段都有主要目标,并在结束时产生一些制品。在 (30) 结束时产生“在适当的平台上集成的软件产品” 。 (30)A. 初期阶段 B. 精化阶段 C. 构建阶段 D. 移交阶段
52、 根据ISO/IEC 9126软件质量度量模型定义,一个软件的时间和资源质量子特性属于 (31) 质量特性。 (31)A. 功能性 B. 效率 C. 可靠性 D. 易使用性 McCabe度量法是通过定义环路复杂度,建立程序复杂性的度量,它基于一个程序模块的程序图中环路的个数。计算有向图
53、G 的环路复杂性的公式为:V(G)=m-n+2,其中 V(G)是有向图 G 中的环路个数,m是 G 中的有向弧数,n 是 G 中的节点数。下图所示程序图的程序复杂度是 (32) 。 (32)A. 2 B. 3 C. 4 D. 5 在开发信息系统时,用于系统开发人员与项目管理人
54、员沟通的主要文档是 (33) 。 (33)A. 系统开发合同 B. 系统设计说明书 C. 系统开发计划 D. 系统测试报告 软件工程每一个阶段结束前,应该着重对可维护性进行复审。在系统设计阶段复审期间,应该从 (34) 出发,评价软件的结构和过程。
55、160; (34) A. 指出可移植性问题以及可能影响软件维护的系统界面 B. 容易修改、模块化和功能独立的目的 C. 强调编码风格和内部说明文档 D. 可测试性 当用分支覆盖法对以下流程图进行测试时,至少需要设计 (35) 个测试用例。 (35)A. 4 B. 5 C. 6 D. 8 某银行为了使其网上银行系统能够支持信用卡多币种付款功能而进行扩充升级,这需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025沙石料购销合同模板
- 2025版权转让合同样式
- 2025届湖北省部分学校高三下学期考前信息卷一政治试题(原卷版+解析版)
- 农民技术合作与培训服务协议
- 房产出租与物业管理的合同
- 贵阳水务笔试试题及答案
- 2025湖南省各市州湘能农电服务有限公司联合招聘780人笔试参考题库附带答案详解
- 2025山东万创智能装备科技有限公司招聘17人笔试参考题库附带答案详解
- 《纳米科技简介》课件
- 土地合同转让三方协议书
- 内膜癌病例讨论
- 第24课《蛟龙探海》课件
- 医院感染与医疗质量管理
- 新农村太阳能路灯照明设计方案
- 计算机网络安全毕业答辩
- 带货主播经纪合同范本3篇
- 装饰装修方案
- 2024年度货运代理服务合同运输安全与事故预防3篇
- 高校实验室双重预防机制方案
- 幼儿园教师资格考试面试试题与参考答案(2025年)
- 燃气管道项目审计要点
评论
0/150
提交评论