针对以下C语言程序段,对于(MaxNum,Type)的取值,至少需要(62)个测试用例能够满足判定覆盖的要求。while(MaxNum-->0){ if(10==Type) x=y* 2; else if(100==Type) x=y +10; else x=y-20;}
A.5
B.4
C.3
D.2
第1题:
论述题3:针对以下C语言程序,请按要求回答问题
下面是一个简单的C语言程序:

(1)画出该函数的程序流程图。
(2)设计测试用例,分别使函数的各种逻辑覆盖率尽量达到100%。如果认为该函数的某种逻辑覆盖率无法达到100%,需要说明原因。
(3)设计特殊的测试用例,说明各种逻辑覆盖之间的关系。
问题2:
解答:
经过分析不难知上面这个程序包含:
1)五个语句:每行一个语句。
2)三个条件:a>0;b0;c>0
3)四个分支:有两个if语句每个if语句有两个分支。
4)六个条件组合:条件表达式(a>0)‖b0)共有两个条件a>0和b0故有四个条件组合;条件表达式(c>0)只有一个条件c>0故有两个条件组合。所以该程序共有六个条件组合。
5)四条路径:从程序的入口到出口的路径共有四条分别是:
Path1: 1—2—3—5—6—8
Path2: 1—2—3—5—7—8
Path3: 1—2—4—5—6—8
Path4: 1—2—4—5—7—8
这个程序有三个输入:a、b、c其输入数据组合是非常大的。下面对该程序分别应用不同的逻辑覆盖准则设计测试用例。
1.语句覆盖
根据语句覆盖准则只需要采用两个输入数据组合:(abc)=(111)、(-111)便可以把该程序的所有五个语句执行一遍。
2.分支覆盖(判定覆盖)
根据分支覆盖准则只需要采用两个输入数据组合:(abc)=(11-1)、(-111)便可以把该程序的所有四个分支走遍。但未考虑b0的情况故不满足条件覆盖。说明满足分支覆盖的测试用例未必满足条件覆盖。
3.条件覆盖
根据条件覆盖准则只需要采用两个输入数据组合:(abc)=(11-1)、(-1-11)便可以把该程序的三个条件的真假情况都覆盖到。由于表达式(a>0)‖b0)的计算值都为真不会执行else语句即不满足分支覆盖和语句覆盖。说明满足条件覆盖的未必满足分支覆盖和语句覆盖。
4.条件组合覆盖
根据条件组合的覆盖准则只需要采用四个输入数据组合:(abc)=(1-11)、(111)、(-1 1-1)、(-1-1-1)便可以把该程序的六个条件组合情况覆盖到。但执行的路径数只有2个故不满足路径覆盖。说明满足条件组合的覆盖不一定满足路径覆盖。
5.路径覆盖
根据路径覆盖的准则由图17-7可见只需要采用四个输入数据组合:(abc)=(111)、(11 -1)、(-111)、(-11-1)便可以把该程序的所有四条路径都覆盖。路径覆盖是最强的覆盖准则。
问题2:
解答:
经过分析不难知,上面这个程序包含:
1)五个语句:每行一个语句。
2)三个条件:a>0;b0;c>0
3)四个分支:有两个if语句,每个if语句有两个分支。
4)六个条件组合:条件表达式(a>0)‖b0)共有两个条件,a>0和b0,故有四个条件组合;条件表达式(c>0)只有一个条件c>0,故有两个条件组合。所以该程序共有六个条件组合。
5)四条路径:从程序的入口到出口的路径共有四条,分别是:
Path1: 1—2—3—5—6—8
Path2: 1—2—3—5—7—8
Path3: 1—2—4—5—6—8
Path4: 1—2—4—5—7—8
这个程序有三个输入:a、b、c,其输入数据组合是非常大的。下面对该程序分别应用不同的逻辑覆盖准则,设计测试用例。
1.语句覆盖
根据语句覆盖准则,只需要采用两个输入数据组合:(a,b,c)=(1,1,1)、(-1,1,1),便可以把该程序的所有五个语句执行一遍。
2.分支覆盖(判定覆盖)
根据分支覆盖准则,只需要采用两个输入数据组合:(a,b,c)=(1,1,-1)、(-1,1,1),便可以把该程序的所有四个分支走遍。但未考虑b0的情况,故不满足条件覆盖。说明满足分支覆盖的测试用例未必满足条件覆盖。
3.条件覆盖
根据条件覆盖准则,只需要采用两个输入数据组合:(a,b,c)=(1,1,-1)、(-1,-1,1),便可以把该程序的三个条件的真假情况都覆盖到。由于表达式(a>0)‖b0)的计算值都为真,不会执行else语句,即不满足分支覆盖和语句覆盖。说明满足条件覆盖的未必满足分支覆盖和语句覆盖。
4.条件组合覆盖
根据条件组合的覆盖准则只需要采用四个输入数据组合:(a,b,c)=(1,-1,1)、(1,1,1)、(-1, 1,-1)、(-1,-1,-1),便可以把该程序的六个条件组合情况覆盖到。但执行的路径数只有2个,故不满足路径覆盖。说明满足条件组合的覆盖不一定满足路径覆盖。
5.路径覆盖
根据路径覆盖的准则,由图17-7可见,只需要采用四个输入数据组合:(a,b,c)=(1,1,1)、(1,1, -1)、(-1,1,1)、(-1,1,-1),便可以把该程序的所有四条路径都覆盖。路径覆盖是最强的覆盖准则。 解析:首先根据源程序画出程序流图比较容易,然后分析学过的所有的逻辑覆盖(如语句覆盖,分支覆盖,路径覆盖等),分析针对每种逻辑覆盖的标准来设计测试用例,最后通过设计测试用例来体现各种逻辑覆盖之间的关系。
第2题:
针对以下C语言程序段,假设sta[10]=-1,对于x的取值,需要______个测试用例能够满足分支覆盖的要求。
int MathMine(int x)
{
int m=0;
int i;
for(i=x-1; i<=x+1; i++)
{
if (i<0) continue;
if (i>31) break;
if (sta[i]=-1) m++;
}
return m;
}
A.3
B.4
C.5
D.6
A.
B.
C.
D.
第3题:
● 针对以下C语言程序段,假设sta[10]= -1,对于x的取值,需要__个测试用例能够满足分支覆盖的要求。 int MathMine( int x ) { int m = 0; int i; for( i = x-1; i <= x + 1; i++ ) { if ( i < 0 ) continue; if ( i >31 ) break; if ( sta[i] == -1 ) m++; } return m; }
A.3
B.4
C.5
D.6
第4题:
针对下列程序段,对于(A,B,C)的取值,以下(56)测试用例组合能够满足语句覆盖的要求。 IF((A+10)=2 OR(B-20)<3)THENC=0 IF((A+30)=10 AND(C-30)<0)THEN B=30
A.(2,30,1)
B.(-20,0,30)
C.(30,20,30)
D.(2,20,3)
第5题:
针对以下程序段,对于变量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); break;default: sio_send(c,netif->state); break; }
A.4
B.3
C.2
D.1
第6题:
针对下面的程序段,对于(MaxNum,Type)的取值,至少需要______个测试用例才能够满足判定覆盖的要求。
Whjle(MaxNum-->0)
{
If(10==Type)x=y * 2;
Else if(100==Type)x=y+20;
}
A) 5
B) 4
C) 3
D) 2
A.
B.
C.
D.
第7题:
● 针对以下 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)A.5 B. 4 C. 3 D. 2
第8题:
第9题:

第10题:
()是选择若干个测试用例,运行被测程序,使得程序中的每个可执行语句至少执行一次。
第11题:
语句覆盖:选择测试用例使程序中每条语句至少被执行一次
判定覆盖:选择测试用例使程序中每个判定至少都获得2次“真”值和一次“假”值
条件覆盖:选择测试用例使每个条件都满足
条件组合覆盖:将所有的判定条件的都组合起来执行
第12题:
语句覆盖
判定覆盖
条件覆盖
路径覆盖
第13题:
针对程序段:IP(A||B||C) THEN W=W/X,对于(A,B,C)的取值,(57)测试用例能够满足MCDC(修正条件逻辑判定)的要求。
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)
第14题:
阅读下列流程图:

当用判定覆盖法进行测试时,至少需要设计(35)个测试用例。
A.2
B.4
C.6
D.8
第15题:
试题(52)
针对下列程序段,需要(52)个测试用例才可以满足语句覆盖的要求。

(52)
A.2
B.3
C.4
D.5
第16题:
针对下列程序段,对于(A,B)的取值,以下(57)测试用例组合能够满足条件覆盖的要求。 IF((A-10)=20 AND(B+20)>10)THEN C=0 IP((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
A.①②
B.③④
C.①④
D.②④
第17题:
试题三(共 15分)
阅读以下关于嵌入式软件测试用例设计的叙述,回答问题 1至问题 3,将答案填入答题纸的对应栏内。
【说明】
某程序段的流程如图 3-1所示,x、y是两个变量,K、J 表示一段程序执行体,表 3-1 所示为本题可供选择的四组测试用例组。

【问题1】(3分)
简答以下问题。
(1)条件覆盖的含义是什么?
(2)路径覆盖的含义是什么?
【问题 2】(2分)
在程序测试用例设计中,有语句覆盖、条件覆盖、判定覆盖(分支覆盖)和路径覆盖等。其中,____是最强的覆盖准则。
请把以下 4个选项中正确的选项序号填入上述空白处。
①语句覆盖
②条件覆盖
③判定覆盖(分支覆盖)
④路径覆盖
【问题 3】(10 分)
为了对图 3-1 所示的程序段进行覆盖测试,必须适当地选取测试用例组。实现判定覆盖至少应采用的测试用例组是 (1)和 (2) ,实现条件覆盖至少应采用的测试用例组是 (3) ;实现路径覆盖至少应采用的测试用例组是 (4) 和 (5)。
请把以下 8个选项中正确的选项序号填入上述空白处。
① 试用例组Ⅰ和Ⅱ
②测试用例组Ⅱ和Ⅲ
③测试用例组Ⅲ和Ⅳ
④测试用例组Ⅰ和Ⅳ
⑤测试用例组Ⅰ、Ⅱ和Ⅲ
⑥测试用例组Ⅱ、Ⅲ和Ⅳ
⑦测试用例组Ⅰ、Ⅲ和Ⅳ
⑧测试用例组Ⅰ、Ⅱ和Ⅳ
试题三(共15分)
【问题1】(3分)
(1)条件覆盖是指设计足够的测试用例,使得被测程序每一个判定中的每个条件的所有可能结果至少出现一次。
(2)路径覆盖是指设计足够的测试用例,使得被测程序中每条路径至少执行一次。
【问题2】(2分)
(1)④(路径覆盖)
【问题3】 (10分)
(1)⑤
(2)⑧
(3)⑦
(4)⑤
(5)⑧
其中,第(1)、(2)题的答案顺序可互换,第(4)、(5)题的答案顺序可互换。
第18题:
● 针对下列程序段,对于(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)
C.(-30,20,30)
D.(2,20,3)
第19题:
第20题:
第21题:
有一组测试用例使得每一个被测试用例的分支覆盖至少被执行一次,它满足的覆盖标准()。
第22题:
关于白盒法覆盖程度的论述中正确的是()。
第23题:
条件覆盖
组合覆盖
判定覆盖
语句覆盖