覆盖率(白盒)测试(二)
(总分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小时内删除。