覆盖率(白盒)测试(二)
(总分96,考试时间90分钟)
一、选择题
1. 路径覆盖必定也满足______。
A. 语句覆盖 B. 条件覆盖
C. 判定覆盖 D. 条件组合覆盖
2. 设有一段程序如下:
if((a==b) and ((c==d) or (e==f))) do S1
else if((p==q) or (s==t)) do S2
else do S3
满足判定/条件覆盖的要求下,最少的测试用例数目是______。
A. 6 B. 8
C. 3 D. 4
3. 在以下有关逻辑覆盖的说法中错误的是______。
A. 所有满足条件组合覆盖标准的测试用例集,也满足路径覆盖的覆盖标准
B. 条件覆盖能够查出条件中包含的错误,但有时达不到判定覆盖的覆盖率要求
C. 路径覆盖的差错能力很强,但有时达不到条件组合覆盖的覆盖率要求
D. 判定覆盖包含了语句覆盖,但它不能保证每个错误条件都能检查出来
4. 下列几种逻辑覆盖标准中,设计足够的测试用例,运行被测程序,使得程序中所有可能的路径至少执行一次,称为______。
A. 判定覆盖 B. 条件覆盖
C. 语句覆盖 D. 路径覆盖
5. 如果一个判定中的复合条件表达式为(A>1)or(B<=3),则为了达到100%的判定覆盖率,至少需要设计多少个测试用例______。
A. 1个 B. 2个
C. 3个 D. 4个
6. 下面有关逻辑覆盖的说法中错误的是______。
A. DDP覆盖式判定覆盖的一个变体
B. 满足条件覆盖一定也满足判定覆盖
C. 指令快覆盖属于语句覆盖
D. 若判定覆盖率道道100%,则语句覆盖率一定也达到100%
7. 如果程序通过了100%的代码覆盖率测试,则说明程序满足了______。
A. 语句覆盖 B. 编程规范
C. 设计规格 D. 功能需求
8. 下列指导选择和使用测试覆盖率的原则中错误的是______。
while语句流程图的例题A. 覆盖率不是目的,仅是一种手段
B. 不要追求绝对100%的覆盖率
C. 不可能针对所有的覆盖率指标来选择测试用例
D. 只根据测试覆盖率指标来指导测试用例的设计
9. 以下关于逻辑覆盖的叙述中正确的是______。
A. 对所有代码达到100%的语句覆盖率是不现实的
B. 测试用例满足条件覆盖则必定满足判定覆盖
C. 语句覆盖是测试完整性方面很好的度量方法
D. 条件/判定覆盖是一个比判定覆盖和条件覆盖更强的覆盖
10. 覆盖率对软件测试有非常重要的作用,下列关于覆盖率说法正确的是______。
A. 覆盖率是用于度量测试完整性的一个手段,覆盖率可以分为逻辑覆盖和功能覆盖两种
B. 为了测试的完整性,我们在测试时通常要针对所有的覆盖率指标进行测试
C. 路径覆盖是最强的覆盖,故达到路径覆盖的测试用例一定满足判定/条件覆盖
D. 为了测试更充分,我们通常要求测试用例能达到100%的覆盖率
11. 下列语句中既可以作为定义节点,同时还可以作为使用节点的是______。
A. 输入语句 B. 输出语句
C. 赋值语句 D. 条件语句
12. 程序流程如下图所示,要覆盖程序中所有可能的路径,所需测试用例数至少是______。
13. 对于具有串联型分支结构的程序,如果有7个判断语句串联,则使用正交实验设计法,至少需要的测试用例数应为______。
A. 23 B. 24
C. 26 D. 27
二、论述题
1. 已知C源程序如下:
/* Input today's date,output tomorrow's date */
/* version 2 */
#include <stdio.h>
struct ydate
int day; int month; int year; ;
int leap(struct ydate d)
if((d.year%4==0&&d.year%100!=0)||(d.year%400==0)
return 1;
else
return 0;
int numdays(struct ydate d)
int day;
static int daytab[]=
31,28,31,30,31,30,31,31,30,31,30,31;
if (leap (d)&&d.month==2)
day=29;
else
day=daytab [d.month-1];
return day;
int main (void)
struct ydate today, tomorrow;
printf("format of date is: year,month, day
输入的年、月、日之间应用逗号隔开\n"
printf(" today is: ") ;
scanf ("%d, %d, %d", &today. year, &h, &today. day) ;
while(0>=ar|| ar>65535||0>=h||h>12)||0>=
today, day||today, day>numdays (today))
printf("input date error! reenter the day!\n");
printf("today is :");
scanf ("%d, %d, %d", &today. year, &h, &today. day);
if (today. day! =numdays (today))
ar;
h;
tomorrow.day=today.day+1;
else h==12)
ar+1;
h=1;
tomorrow.day=1;
else
ar;
h+1;
tomorrow.day=1;
printf("tomorrow is :%d,%d,%d\n\n",
ar, h, tomorrow.day);
(1)画出程序中所有函数的控制流程图。
(2)设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句或分支覆盖率无法达到100%,则说明为什么。
已知C源程序如下:
#include<stdio.h>
#include<string.h>
void reverse (char s[])
int c,i,j;
for(i=0,j=strlen(s)-1;i<j;i++,j++)
c:s [i];
s[i]=s[j];
s [j]=c;
void getHex(int number,char s[])
int I;
i=0;
while (number>0)
if(number%16<10)
s [i++] =number%1 6+'0';
else
switch (number%16)
case 10:s[i++]='A'; break;
case 11:s[i++]='B'; break;
case 12:s[i++]='C'; break;
case 13:s[i++]='D'; break;
case 14:s[i++]='E'; break;
case 15:s[i++]='F'; break;
default: printf("Error");break;
number/=16;
s[i]='\0';
reverse (s);
int main()
unsigned int number;
int i=0;
char s[50] ;
printf ("%s", "please input number:\n");
scanf ("%d", &number);
getHex (number, s);
i=0;
while (s [i])
printf("%c",s[i++]);
return 0;
2. 画出程序中所有函数的控制流程图。
3. 设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支率无法达到100%,则说明为什么。
已知C源程序如下:
/*一个使用结构体数组的简单地址列表*/
# include <stdion.h>
# include <stdlib.h>
define MAX 4
struct addr
char name[30];
char street[40];
char city[20];
unsigned long int zip;
addr list [MAX] ;
void init_list (void), enter (void);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论