设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率尽量达到最大。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
第1题:
( 7 )如果一个判定中的复合条件表达式为( A > 1 ) or ( B <= 3 ),则为了达到 100% 的条件覆盖率,至少需要设计多少个测试用例
A ) 1
B ) 2
C ) 3
D ) 4
第2题:
如果一个判定巾的复合条件表达式为(A>1)or(B≤3),则为了达到100%的条件覆盖率,至少需要设计多少个测试用例______。
A) 1
B) 2
C) 3
D) 4
A.
B.
C.
D.
第3题:
设计一组测试用例,尽量使main函数的语句覆盖率能达到100%。如果认为该函数的语句覆盖率无法达到100%,需要说明原因。

第4题:
设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支率无法达到100%,需说明为什么。
第5题:
针对一下C语言程序,请按要求回答问题。
已知weekday. c源程序如下:
include<stidio. h>
include<conio. h>
/ *主函数* /
Int main()
{
Char letter;
Printf("please input the first letter,"Y'to exit!\n");
While((letter=getch())!="Y")//当输入字母为Y时结束
{
Switch(letter)
{
Case'S':
Printf("%c\n",letter);
Printf("please input second letter\n");//输入第二个字母
If((letter=getch())=='a')
Printf("Saturday\n");
Else if(letter=='u')
Printf("Sunday\n");
Else printf('data error\n);
Break;
Case'F':
Printf("fridaykn");
Break;
Case 'M':
Printf("mondayha");
Break;
Case 'T':
Printf("%c\n",letter);
Printf("please input second letter\a");//输入第二个字母
If((letter=getch())=='u')
Printf("Tuesday\n"):
Else if(letter=='h')
Printf("Thursday\n");
Break;
Case 'W':
Printf("Wednesday\n");
}
}
Return 0;
}
(1) 画出主函数main的控制流程图;
(2) 设计一组测试用例,使main函数的语句覆盖率尽量达到100%;
(3) Main函数的语句覆盖率能否达到100%?如果认为无法达到,需说明原因。
第6题:
已知C源程序如下:
/ * longIntAdd * /
include <stdio. h>
include <string. h>
define LENGTH 81
void addLInt(char sl[],char s2[]); void reverse(char s[]) ; int main()
{
char intstrl[LENGTH],intstr2[LENGTH];
printf("请输入超长整数的被加数和加数:\n")
scanf("%s%s" ,intstrl ,intstr2) ; addLInt(intstrl ,intstr2) j printf("超长整数和为: %s" .intstrl); return 0;
}
void addLInt(char sl[] ,char s2[]) {
int i=0,tmp,c=0;
char s[LENGTH];
if(strlen(s1)<strlen(s2)){ strcpy(s,sl); strcpy(sl,s2); strcpy(s2,s);
}
reverse(sl);reverse(s2);
while(s2[i]! ='\0'){
tmp=sl[i]-'0'+s2[i]-'0'+ c;
sl[i] = tmp%10+,0';
c=tmp/10;
i++; } while(sl[i]! ='\0,&&c){
tmp=sl[i] —'0' + c;
sl[i] = tmp%10+'0';
c=tmp/10;
i++; } If(c){
sl[i++] = c+'0';
sl[i] = '\0'; } reverse(sl);
}
void reverse(cliar s[])
{
inti,j,c;
for(i=0,j = strlen(s) -l;i<j;i++,j--){
c=s[i]; s[i] = s[j]; s[j] = c; } }
(1)画出程序中函数addLInt的控制流程图(10分);
(2)设计一组测试用例,使该程序addLInt函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该函数的语句覆盖率或分支覆盖率无法达到100%,需说明为什么(10分)。
C2)测试用例
a.sl:“111111111111111l”s2:“2222222222222222”
b. s1:“123456789” s2:“989”
c.s1:“989” s2 :“123456789”
d.sl :“999999999999” s2 :“111111”
解析:语句覆盖是指设计若干测试用例,运行被测程序,使得每个可执行语句至少执行一次。
语句覆盖率=被评价到的语句数量/可执行的语句数量×100%。
设计若干测试用例,运行被测程序使得每个判定的取真分支和取假分支至少评价一次。
判定覆盖率=被评价到的判定分支个数/判定分支的总数×100%。
当输入a、b、c、d中的测试用例后,语句覆盖率和分支覆盖率均为100%。
第7题:
A.路径覆盖时选择足够多的测试数据,使被测程序中每条语句至少执行一次
B.语句覆盖可以很直观地从源代码中得到测试用例,无须细分每条判定表达式
C.判定覆盖是程序中的每个分支至少执行一次,每个判断的取真、取假至少执行一次
D.条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径
第8题:
● 以下叙述中,不符合软件单元测试技术要求的是 (42) 。
(42)
A. 对软件设计文档规定的软件单元的功能、性能、接口等应逐项测试
B. 每个软件特性应至少被一个正常测试用例和一个异常测试用例覆盖
C. 语句覆盖率达到100%
D. 分支覆盖率达到80%以上
第9题:
以下不属于基于结构的技术的共同特点的是()
第10题:
在白盒测试中,如果覆盖率达到99%,就基本可以保证把所有的隐藏程序缺陷都已经揭露出来了。
第11题:
只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。
第12题:
对
错
第13题:
下面有关逻辑覆盖的说法中错误的是______。
A) DDP覆盖是判定覆盖的一个变体
B) 满足条件覆盖一定也满足判定覆盖
C) 指令块覆盖属于语句覆盖
D) 若判定覆盖率达到100%,则语句覆盖率一定也达到100%
A.
B.
C.
D.
第14题:
如果程序中有两个判定条件,其复合条件表达式分别为(a>=3)and(b<=6)和(a>0)or(c<2),则为了达到100%的判定覆盖率,至少需要设计的测试用例个数为______。
A) 1
B) 2
C) 3
D) 4
A.
B.
C.
D.
第15题:
论述题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),便可以把该程序的所有四条路径都覆盖。路径覆盖是最强的覆盖准则。 解析:首先根据源程序画出程序流图比较容易,然后分析学过的所有的逻辑覆盖(如语句覆盖,分支覆盖,路径覆盖等),分析针对每种逻辑覆盖的标准来设计测试用例,最后通过设计测试用例来体现各种逻辑覆盖之间的关系。
第16题:
设计一组测试用例,使该程序所有函数的语句覆盖率尽量达到100%。如果认为该程序的语句覆盖率无法达到100%,需说明原因。
第17题:
设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果为该程序的语句或分支覆盖率无法达到100%,需说明为什么。
第18题:
只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。( )
此题为判断题(对,错)。
第19题:
如果一个判定中的复合条件表达式为(A>1)or(B<=3),则为了达到100%的判定覆盖率,至少需要设计______测试用例。
A) 1个
B) 2个
C) 3个
D) 4个
A.
B.
C.
D.
第20题:
第21题:
在宏程序中,条件分支语句使程序运行的出口达到两个以上。
第22题:
在白盒测试中,如果覆盖率达到100%,就基本可以保证把所有的隐藏程序缺陷都已经揭露出来了。
第23题:
对
错