白盒测试技术案例详解_第1页
白盒测试技术案例详解_第2页
白盒测试技术案例详解_第3页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、白盒测试技术案例详解旦盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、 根本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。其中运用最为广泛的是根本路径测试法。根本路径测试法是在程序控制流图的根底上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。在程序控制流图的根底上, 通过分析控制构造的环路复杂性,导出根本可执行路径集合,从而设计测试用例。包括以下4个步骤和一个工具方法:1. 程序的控制流图:描述程序控制流的一种图示方法。2. 程序圈复杂度:McCabe复杂性度量。从

2、程序的环路复杂性可导出程序根本路径集合 中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的 上界。3. 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。4. 准备测试用例:确保根本路径集中的每一条路径的执行。工具方法:图形矩阵:是在根本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个根本路径集。程序的控制流图:描述程序控制流的一种图示方法。圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句圖佯纯构-IF选揮结枸*亡循薛整粕*雾分芟结构流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。流图中的箭头称为

3、边或连接,代表控制流 任何过程设计都要被翻译成控制流图。如何根据程序流程图画出控制流程图?在将程序流程图简化成控制流图时,应注意: n在选择或多分支结构中,分支的会聚处应有一个会聚结点。n边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。 如以下图所示n如果判断中的条件表达式是由一个或多个逻辑运算符(OR, AND, NAND, NOR)连接的复合条件表达式,那么需要改为一系列只有单条件的嵌套的判断。例如:1 if a or b2 x3 else4 y对应的逻辑为:独立路径:至少沿一条新的边移动的路径根本路径测试法的步骤:路径1:路径 2: 1-2-3-4-B-10-1

4、-11 路径3: J 玄二3P89T0il11 *路径4: l2-3-6-70-lO'-l-lL对以上路径的遍历"就 是至少一次地执疔了 程序中的所有语句o第一步:画出控制流图流程图用来描述程序控制结构。可将流程图映射到一个相应的流图 假设流程图的菱形 决定框中不包含复合条件。在流图中,每一个圆,称为流图的结点, 代表一个或多个语句。 一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接, 代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任 何语句例如:if-else-then 结构。由边和结点限定的范围称为区域。计算区

5、域时应包括 图外部的范围。画出其程序流程图和对应的控制流图如下規用阳暇ts3U第二步:计算圈复杂度圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的根本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。有以下三种方法计算圈复杂度:流图中区域的数量对应于环型的复杂性;给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结 点的数量;给定流图G的圈复杂度V(G),定义为V(G)=P+1, P是流图G中判定结点的数量。对应上面圏中的圏良朵虞,计算如下:, 流蹈申有四个区壇* V(G&g

6、t;=3判定结点 41 = 4. 2第三步:导出测试用例根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。)U路径1:4-14U路径2:4-6-7-14U路径3:4-6-8-10-13-4-14U路径4:4-6-8-11-13-4-14根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。0第四步:准备测试用例为了确保根本路径集中的每一条路径的执行,根据判断结点给出的条件, 选择适当的数据以保证某一条路径可以被测试到,满足上面例子根本路径集的测试用例是:举例说明

7、:例:下例程序流程图描述了最多输入50个值以-1作为输入结束标志,计算其中有效的学生分数的个数、总分数和平均值。步骤2:确定环形复杂性度量V(G):1) V(G)= 6 ( 个区域)2) V(G)=E - N+2=16- 12+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-

8、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,2 < i < 50;期望结果:根据输入的有效分数算出正确的分数个数n 1、总分sum和平均分average。2) 路径2(1-2-9-11-12)的测试用例:score 1 =- 1 ;期望的结果:average =- 1 ,其他量保持初值。3) 路径3(1-2-3-9-10-12)的测试用例:输入多于

9、50个有效分数,即试图处理51个分数,要求前51个为有效分数;期望结果:n1=50、且算出正确的总分和平均分。4) 路径4(1-2-3-4-5-8-2)的测试用例:scorei= 有效分数,当i<50;scorek<0 , k< i ;期望结果:根据输入的有效分数算出正确的分数个数n 1、总分sum和平均分average。举例说明:例:下例程序流程图描述了最多输入50个值(以-1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。步骤1:导出过程的流图。步骤2:确定环形复杂性度量 V(G):1) V(G)= 6 ( 个区域)2) V(G)=E - N+2=16-

10、 12+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 :为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一 次。1) 路径1(1-2-9-10-12)的测试用例:scorek=

11、 有效分数值,当 k < i ;scorei= - 1,2 < i < 50;期望结果:根据输入的有效分数算出正确的分数个数n 1、总分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-8-2)的测试用例:scorei= 有效分数,当i<50;n1、总分

12、sum和平均分 average 。scorek<0 , k< i ;期望结果:根据输入的有效分数算出正确的分数个数467 e 101113 14连接权为“ 1表示存在一个连接, 在图中如果一行有两个或更多的元素“ 1,那么这行 所代表的结点一定是一个判定结点,通过连接矩阵中有两个以上(包括两个)元素为“ 1的812162152022个数,就可以得到确定该图圈复杂度的另一种算法。案例讲解:根本路径测试如下程序:1.void ReadPara( CStri ng temp)2.3.if ( temp =">=")4.m_oper.SetCurSel(0);5.

13、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.SetCurSe l(4)21.else22.m_oper.SetCurSel(5)23.24.25.26.27.return;28.1

14、 画出这段代码的控制流图,女口4-9所示:2 .根据控制流图,计算环路复杂度V(G)=22-18+2=6。3导出测试用例,列出路径:Pathl : 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-26-27-284 设计测试用例根据第3步中给出的路径,下面设计测试用例列在表4-9中。传

15、入参数预期调用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. 图形矩阵的画法在前面我们已经讲过,这里不再赘述。请同学们自行

16、画出九、最少测试用例数计算参考为实现测试的逻辑覆盖,必须设计足够多的测试用例,并使用这些测试用例执行被 测程序,实施测试。我们关心的是:对于某个具体的程序来说,至少需要设计多少 个测试用例。这里提供一种估算最少测试用例数的方法。、选我们知道,结构化程序是由 3种根本控制结构组成:顺序型构成串行操作 择型构成分支操作和重复型构成循环操作。为了把问题化简,防止出现测试用例极多的组合爆炸,把构成循环操作的重复型结 构用选择结构代替。这样,任一循环便改造成进入循环体或不进入循环体的分支操 作了。 用N-S图表示程序的3种根本控制结构:图中A、B C D S均表示要执行的操作,P是可 取真假值的谓词,Y

17、表真值,N表假值。图中的c和d两种重复型结构代表了两种 循环。在做了简化循环的假设以后,对于一般的程序 控制流,我们只考虑选择型结构。事实上它已经能体 现顺序型和重复型结构了。例如,以下图表达了两个顺序执行的分支结构。当两个、P1p:¥厂Cd显然,要测试这个小程序,需要至少提供4个测试用例才能作到逻辑覆盖,使得 ac、ad、be及bd操作均得到检验。其实, 这里的4是图中的第1个分支谓词引出的两个操作,及第2个分支谓词引出的两个操作组合起来而得到的,即2 X 2=4。并且,这里的2是由于两个并列的操作,即1 + 1=2而得到的。对于一般的、更为复杂的问题,估算最少测试用例个数的原那么

18、也是同样的:? 如果在N-S图中存在有并列的层次A1、A2, A1和A2的最少测试用例个数分别为al、a2,那么由A1、A2两层所组合的N-S图对应的最少测试用例数为al X a2。? 如果在N-S图中不存在有并列的层次,那么对应的最少测试用例数由并列的操作数决定,即N-S图中除谓词之外的操作框的个数。1-? 例:如以下图所示的两个N-S图,至少需要多少个测试用例完成逻辑覆盖??对于第一个N-S图:由于图中并不存在并列的层次,最少测试用例数由并列的操作数决定,即为1+1+1=3。?对于第二个N-S图:由于图中没有包含并列的层次,最少测试用例数仍由并列的操作数决定,即为1+1+1 + 1 +仁5

19、。例:如以下图所示的 N-S图,至少需要多少个测试用例完成逻辑覆盖? 分析该N-S图:图中的2345和67是并列的两层。其中,2345层对应的最少测试用例数为1+1 + 1 + 1+仁5, 67层对应的测试用例数为1+1+1=3, 2345和67这两层组合 后对应的测试用例数为 5X 3=15。最后,由于两层 组合后的局部是不满足谓词1时所要做的操作,还要加上满足谓词1要做的操作,因此整个程序所需 测试用例数为15+1=16。思考题:1、将以下图所示的流程图转换为N-S图,并估算至少需要多少个测试用例完成逻辑覆盖?N2、程序插桩技术程序插桩方法:是借助往被测程序中插入操作,来实现测试目的的方法

20、。插桩时需要考虑哪些问题:1、探测哪些信息2、在程序的什么部位设置探测点3、需要设置多少个探测点3、代码检查方式桌面检查、代码审查、走查4、静态结构分析由于可能没有在所有的出口进行动态内存的释放与回收操作,困些这样的结构存在内存泄漏的可能。5、逻辑覆盖法白盒测试的动态测试要根据程序的控制结构设计测试用例,原那么是1、保证一个模块中的所有独立路径至少被使用一次2 、对所有逻辑值均需测试true和false3、在上下边界及可操作范围内运行所有循环4、检查内部数据结构以确保其有效性。6、逻辑覆盖的标准:Foster的ESTCA覆盖标准Woodward等人的层次LCSAJ覆盖标准基于LCSAJ与路径的

21、关系,提出了层次LCSAJ覆盖准那么。它是一个分层的覆盖准那么, 可以概括的描述为:? 第一层一语句覆盖。? 第二层一分支覆盖。? 第三层 一LCSAJ覆盖,即程序中的每一个LCSAJ都至少在测试中经历过一次。? 第四层 一两两LCSAJ覆盖,即程序中的每两个相连的LCSAJ组合起来在测试中都要经历一次。? 第n+2层一每n个首尾相连的LCSAJ组合在测试中都要经历一次。在实施测试时,假设要实现上述的层次LCSAJ覆盖,需要产生被测程序的所有LCSAd例:找出下面DoWork函数的所有LCSAJ和LCSAJ路径。void DoWork (int x,i nt y,i nt z)1. 2. in

22、t k=O,j=O;3. if ( (x>3)&&(z<10)4. k=x*y-1;5. j=sqrt(k);6. /语句块17. if ( (x=4)|(y>5)8. j=x*y+10; /语句块 29. j=j%3;/语句块 310. 枫柠阳句块A?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路

23、径(4 条):(1)-(2) - ( 4)(1) - (2)-(5)(1)-(3) - ( 4)(1) - (3)-(5)7、为什么要进行白盒测试?原因有三,如下:逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的根底上被执行。 印刷上的错误是随机的。8、白盒测试用例测试方法1、语句(statement )覆盖:语句覆盖是最起码的结构覆盖要求,要求设计足够多的测试用例,使得程序中每条可执行语句至少被执行一次。2、 判定(branches )覆盖/分支覆盖:要求设计足够多的测试用例,使得程序中每个判定至 少有一次为真值,有一次为假

24、值,即:程序中的每个分支至少执行一次。3、 条件(condition )覆盖:要求设计足够多的测试用例,使得判定中的每个条件至少有一 次为真值,有一次为假值。4、 判定/条件(branches/condition)覆盖:设计足够多的测试用例,使得判定中每个条件 的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。5、组合覆盖:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少 出现一次。6、路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径下面举例说明:语句覆盖(SC :程序中的每条词句至少执行一次如针对以下程序段,对于变量c的取值,至少需要(61 )个测试

25、用例才能够满足语句覆盖的要求。c = (u8_t *)q->payload)i;switch (c)case SLIP_END:sio_se nd(SLIP_ESC, netif->state);sio_se nd(SLIP_ESC_END, netif->state); break;case SLIP_ESC:sio_se nd(SLIP_ESC, netif->state);sio_se nd(SLIP_ESC_ESC, netif->state); break;default:sio_se nd(c, n etif->state);break;(61)

26、 A. 4B.3C. 2D. 1判定覆盖(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;elseif ( 100 = Type )x = y + 10;elsex = y - 20;(6

27、2) A . 5 B. 4C. 3D. 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 = 0IF ( ( A - 30 ) < 10 AND ( B - 30 ) <

28、; 0 ) THEN B = 30 A=50 B=-10 A=40 B=40 A=30 B=-10 A=30 B=30(57)A.B.C.D.ABA - 10 =20B + 20 > 10A-30<10B - 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-BcT-T-TT-T-FT-F-TT-F-FF-F-FF-_fT(2006) 多条件覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判定中 条件的各种可能组合都至少出现一次, 满足多条件覆盖级别的测试用例也是满足_(26)_级别的:针对布尔表达式 A&&(B|C) 执行逻辑覆盖测试,测试用例至少需要_(27)_ 种组合才能满足多条件覆盖的要求。(26) A.语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖B. 判定覆盖、条件覆盖;条件判定组合覆盖、修正条件判定覆盖C. 语句覆盖、判定覆盖、条件判定组合覆盖、修正条件判定覆

30、盖D. 路径覆盖、判定覆盖、条件覆盖、条件判定组合覆盖(27)A6 B 4 C 8 D 12修正条件判定覆盖 (MCDC)两个条件: 每一个程序模块的入口和出口都要考虑至少要被调用一次, 每个程序的判定到 所有可能的结果值至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的 bool 条件,每个条件对于判定的结果值是独立的。假设 A、 B 为布尔变量,对于逻辑表达式(A && B ),至少需要( 63)个测试用例才能完成MCDC覆盖。(63)A 4B 3用例集: (T,T),(T,F),(F,T)C2D1ABA&&B1TTT2TFF3FTF

31、4FFF(2022) 针对程序段:IF ( A|B|C)THEN用例能够满足 MCD(C 修正条件逻辑判定)的要求。( 57) A (F,T,T) (T,F,T) (T,F,F) (T,T,F)序号ABCA|B|C1TTTT2TTFT3TFTT4TFFT5FTTT6FTFT7FFTT8FFFFB (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)W=W/X对于(A,B,C)的取值,(57)测试A B C42766、根本路径法( 环路复杂度 )通常环路复

32、杂性可用以下三种方法求得:1将环路复杂性定义为控制流图中的区域数。2、 设E为控制流图的边数,N为图的结点数,那么环路复杂性为V(G) = E N+ 2。3、 假设设P为控制流图中的判定结点数,那么有V(G) = P+ 1o但即使每条路径都测试过了,仍然可能存在错误。因为:? 穷举路径测试无法检查出程序本身是否违反了设计标准,即程序是否是一个错误的 程序。? 穷举路径测试不可能查出程序因为遗漏路径而出错。? 穷举路径测试发现不了一些与数据相关的错误。测试覆盖率:用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测 试根底的一个入口或属性,比方语句、分支、条件等。测试覆盖率可以表示出测试

33、的充分性,在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。但覆盖率不是目标,只是一种手段。测试覆盖率包括功能点覆盖率和结构覆盖率:? 功能点覆盖率大致用于表示软件已经实现的功能与软件需要实现的功能之间的比例 关系。? 结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、路径覆盖率等等。白盒测试历年考试类型(实战你能做多少?):一、选择题:2006 年多条件覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判定中条件 的各种可能组合都至少出现一次,满足多条件覆盖级别的测试用例也是满足(26)级别的:针对布尔表达式A&&(B|C)执行逻辑覆盖测试,测试用例至少

34、需要(27)_ 种组合才能满足多条件覆盖的要求。(26) A.语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖B. 判定覆盖、条件覆盖;条件判定组合覆盖、修正条件判定覆盖C. 语句覆盖、判定覆盖、条件判定组合覆盖、修正条件判定覆盖D. 路径覆盖、判定覆盖、条件覆盖、条件判定组合覆盖(27)A . 6B . 4C. 8D. 12逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语句覆盖法是较为常用的方法, 针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见下表,对表中的空缺项(True或者False),正确的选择是 (60) 。语句段:if (A && (B|C) x=l

35、;else x=O ;用例表:用例1用例2ATRUEFALSEBFALSECTRUEA &&(B|C)FALSE(60) A. TRUE FALSE TRUEB . TRUE FALSE FALSEC. FALSE FALSE TRUED. TRUE TRUE FALSE (61)方法根据输出对输入的依赖关系设计测试用例。(61) A .路径测试B.等价类C .因果图D.边界值针对下面程序段,边界值问题可以定位在(62)_ 。1: Rem Create a 10 element integer array2: Rem Initialize each element to -13

36、: 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)B. V(g)=6 EV(g)=6D. V(g)=6 EV(g)=1(63) A . V(g)=5 EV(g)=1C. V(g)=5 EV(g)=544个测试用例。2007 年 阅读以下流程图:当用判定覆盖法进行测试时,至少需要设计C. 6B. 4D. 8(44)

37、A. 2针对以下程序段,对于 (A , B, C)的取值,以下(56) 要求。1测试用例组合能够满足语句覆盖的IF ( ( A + 10 ) = 2 OR ( B -20 ) < 3 ) THEN C = 0D. (2,20,3)对于(A , B)的取值,以下(57)测试用例组合能够满足条件覆盖的要求。IF ( ( A+30 ) > 10 AND ( C - 30 ) < 0 ) THEN B = 30 (56)A . (2,30,1)B. (-20,0,30) C . (-30,20,30)针对以下程序段,IF ( ( A - 10 ) = 20 AND ( B + 20

38、) > 10 ) THEN C = 0IF ( ( A - 30 ) < 10 AND ( B - 30 ) < 0 ) THEN B = 30 A=50 B=-10 A=40 B=40 A=30 B=-10 A=30 B=30(57)A .B.C.D.(A-10 )=20B+20>10ANDA-30<10B-30<0ANDA=50B=-10FTFTTTA=40 B=40FTFFFFA=30B=-10TFFTTTA=30 B=30TTTTFF(59)A . 1以下表达中,(60)是正确的。4针对逻辑覆盖有以下表达,(58)是不正确的。(58) A .到达10

39、0 % DC要求就一定能够满足 100 % SC的要求B.到达100 % CC要求就一定能够满足 100 % SC的要求C .到达100 % CDC要求就一定能够满足 100 % SC的要求 D .到达100 % MCDC要求就一定能够满足 100 % SC的要求 以下所示程序控制流程图中有(59)条线性无关的根本路径。(60)A.白盒测试又称为逻辑驱动测试B 穷举路径测试可以查出程序中因遗漏路径而产生的错误C .一般而言,黑盒测试对结构的覆盖比白盒测试高D 必须根据软件需求说明文档生成用于白盒测试的测试用例针对以下程序段,对于变量c的取值,至少需要(61)个测试用例才能够满足语句覆盖的要求。

40、c = (u8_t *)q->payload)i;switch (c)case SLIP_END:sio_se nd(SLIP_ESC, netif->state);sio_se nd(SLIP_ESC_END, n etif->state); break;case SLIP_ESC:sio_se nd(SLIP_ESC, netif->state);sio_se nd(SLIP_ESC_ESC, netif->state); break;default:sio_se nd(c, n etif->state);break;(61)A4B.3C2D 1针对以下

41、 C 语言程序段,对于 (MaxNum,Type) 的取值,至少需要( 62)个测试用例能够 满足判定覆盖的要求。while ( MaxNum- > 0 )if ( 10 = Type )x = y * 2;elseif ( 100 = Type )x = y + 10;elsex = y - 20;(62)A 5B 4 C 3D 2假设 A、B 为布尔变量,对于逻辑表达式( A && B ),至少需要( 63)个测试用例才能完成MCDC覆盖。(63)A .4B.3C.2D.1用例 1用例 2用例 3用例 4ATTFFBFTTFA&&BFTFF(2022

42、年)(43 )下面为C语言程序,边界值问题可以定位在(45)。int data (3),int i,for (i=1,i<=3,i+) data(i)= 100A. data (0) B. data(1) C. data (2)D. data(3)( 46)表达是正确的。 测试用例应由测试设计人员来制定 测试点应由测试人员确立 测试工作展开于工程立项后,而不是代码开发完成之后 测试对象是源代码A. B . C. D . 通常测试用例很难 100覆盖测试需求,因为( 47)。输入量太大 输出结果太多 软件实现途径多 测试依据没有统一标准A.B .C . D.假定X为整数类型变量,X>

43、=1并且X<=10,如果用边界值分析法,X在测试中应该取(48) 值。A. 1,10 B. 0, 1, 10, 11 C . 1, 11 D . 1 , 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;break;default:other = other * value;A. 2 B . 3C. 4 D . 5针对逻辑覆盖(53)表达

44、是不正确的。A. 到达100% CC要求就一定能够满足100% DC的要求B. 到达100% CDC要求就一定能够满足 100% DC的要求C. 到达100% MCD(要求就一定能够满足100% DC的要求D. 到达100%路径覆盖要求就一定能够满足100% DC的要求以下控制流程图的环路复杂性V(G)等于(54)。在程序控制流图中,有8条边,6个节点,那么控制流程图的环路复杂性V(G)等于(55)。A. 2B. 4 C. 6 D. 8针对程序段:IF (X>10) AND( Y<20) THEN W=W/,对于(X, Y)的取值,以下(56)组 测试用例能够满足判定覆盖的要求。A

45、. (30,15) (40,10) B. (3,0) (30,30)C. (5,25) (10,20) D. (20,10) (1,100)X>10 Y<20 AND(30,15)TTT(40.10)TTT(3,0)FTF(30,30)TFF(5,25)FFF(10,20)FFF(20.10) TTT(1,100)FFF2022 年关于白盒测试的测试用例设计方法表达,正确的选项是55。55A.完成SC语句判定所需的测试用例数目一定多于完成DC 逻辑判定所需的测试用例数目B .到达100% CC 条件判定要求就一定能够满足100 % SC的要求C.到达100 % CDC条件判定组合覆

46、盖要求就一定能够满足100 % CC的要求D .任何情况下,都可以到达100%路径覆盖的要求以下控制流图的圈复杂度 Vg为56。(56) A. 4B. 6C . 8D. 10针对程序段:IF ( A|B|C) THEN W=W/X对于(A,B,C)的取值,(57)测试用例能够满足MCDQ修正条件逻辑判定的要求。(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)序号

47、ABCA|B|C ABC1TTTT2TTFT43TFTT4TFFT25F TTT6F TFT77F FTT68F FFF针对以下程序段,需要58个测试用例可以满足分支覆盖的要求。int IsLeapint yearif year % 4 = 0 if year % 100 = 0 if year % 400 = 0 leap = 1;elseleap = 0;elseleap = 1;elseleap = 0;return leap;58A 3B4C6D 7 RUP 在每个阶段都有主要目标,并在结束时产生一些制品。在 30 结束时产生“在适当的平台上集成的软件产品 。 30A. 初期阶段 B.

48、 精化阶段 C. 构建阶段 D. 移交阶段 根据 ISO/IEC 9126 软件质量度量模型定义,一个软件的时间和资源质量子特性 属于 31 质量特性。 31A. 功能性B. 效率 C. 可靠性 D.易使用性 McCabe 度量法是通过定义环路复杂度,建立程序复杂性的度量,它基于一个程 序模块的程序图中环路的个数。计算有向图 G 的环路复杂性的公式为: VG=m-n+2 ,其中 VG是有向图G中的环路个数,m是G中的有向弧数,n是G中的节点数。以下图所示程 序图的程序复杂度是 32 。32A. 2B. 3C. 4D. 5在开发信息系统时,用于系统开发人员与工程管理人员沟通的主要文档是33。33

49、 A.系统开发合同B.系统设计说明书C.系统开发方案D.系统测试报告软件工程每一个阶段结束前,应该着重对可维护性进行复审。在系统设计阶段复 审期间,应该从34出发,评价软件的结构和过程。34A.指出可移植性问题以及可能影响软件维护的系统界面(35) A. 4B. 5C. 6D. 8B.容易修改、模块化和功能独立的目的C.强调编码风格和内部说明文档D.可测试性当用分支覆盖法对以下流程图进行测试时,至少需要设计35个测试用例。 某银行为了使其网上银行系统能够支持信用卡多币种付款功能而进行扩充升级, 这需要对数据类型稍微进行一些改变,这一状况需要对网上银行系统进行36 维护。 36A. 正确性B.

50、适应性 C. 完善性 D.预防性二、白盒测试技术应用题试题 1、15 分 2005 年评测师阅读以下说明,答复以下问题 1 至问题 3,将解答填入大体纸的对应栏内。【说明】 使用根本路径法设计出的测试用例能够保证程序的每一条可执行语句在测试过程中至 少执行一次。以下代码由 C 语言书写,请按要求答复以下问题。Int IsLeapint yearif year % 4 = 0 if year % 100 = 0 if year % 400 = 0 leap = 1;elseleap = 0;elseleap = 1;else leap = 0; return leap;【问题 1】 3 分 请画

51、出以上代码的控制流图【问题 2】 4 分请计算上述控制流图的圈复杂度v G 独立线性路径数【问题 3】 8 分 假设输入的取值范围是 1000 < year < 2001, 请使用根本路径测试法为变量 year 设计 测试用例,使其满足根本路径覆盖的要求。试题 215 分 2006 年上半年软件评测师下午试卷阅读以下说明,答复以下问题 1 至问题 3,将解答填入答题纸的对应栏内。 说明 根本路径法设计出的测试用例能够保证在测试中程序的每一条可执行语句至少执行一 次。以下代码由 C 什语言书写,请按要求答复以下问题。void ReadPara( CString temp)if ( t

52、emp = ">=")m_oper.SetCurSel(0);else if (temp = ">") m_oper.SetCurSel(1);else if ( temp = "=") m_oper.SetCurSel(2);else if( temp = "<=") m_oper.SetCurSel(3);else if ( temp = "<") m_oper.SetCurSel(4);elsem_oper.SetCurSel(5);return; 问题 1 (6 分 ) 请画

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论