参考答案和解析
正确答案:测试用例: ①输入:bookCount输出:合法! ②输入:puts输出:常、变量标识不能用C语言预定义函数名! ③输入:5student输出:首字符只能是字母或下划线! ④输入:stu+name输出:常、变量只能由字母、下划线和数字构成! ⑤输入:float输出:常、变量标识不能用C语言关键字! ⑥输入:putsfloatstudentsnamechinachineseenglishchinachinesechinachina输出:内存不够! ⑦输入:_StuId输出:合法! 该程序的语句覆盖率或分支覆盖率均无法达到100%因为该程序允许中间返回值。如果if条件中任意一个成立就立即返回那么剩下的语句就无法执行;即使所有的if条件均不成立。运行到最后那么if条件成立时的语句就无法执行其覆盖率始终无法达到100%。
测试用例: ①输入:bookCount,输出:合法! ②输入:puts,输出:常、变量标识不能用C语言预定义函数名! ③输入:5student,输出:首字符只能是字母或下划线! ④输入:stu+name,输出:常、变量只能由字母、下划线和数字构成! ⑤输入:float,输出:常、变量标识不能用C语言关键字! ⑥输入:putsfloatstudentsnamechinachineseenglishchinachinesechinachina,输出:内存不够! ⑦输入:_StuId,输出:合法! 该程序的语句覆盖率或分支覆盖率均无法达到100%,因为该程序允许中间返回值。如果if条件中任意一个成立就立即返回,那么剩下的语句就无法执行;即使所有的if条件均不成立。运行到最后,那么if条件成立时的语句就无法执行,其覆盖率始终无法达到100%。
更多“设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率尽量达到最大。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。”相关问题
  • 第1题:

    ( 7 )如果一个判定中的复合条件表达式为( A > 1 ) or ( B <= 3 ),则为了达到 100% 的条件覆盖率,至少需要设计多少个测试用例

    A ) 1

    B ) 2

    C ) 3

    D ) 4


    正确答案:D

  • 第2题:

    如果一个判定巾的复合条件表达式为(A>1)or(B≤3),则为了达到100%的条件覆盖率,至少需要设计多少个测试用例______。

    A) 1

    B) 2

    C) 3

    D) 4

    A.

    B.

    C.

    D.


    正确答案:B

  • 第3题:

    设计一组测试用例,尽量使main函数的语句覆盖率能达到100%。如果认为该函数的语句覆盖率无法达到100%,需要说明原因。


    正确答案:设计测试用例如下: 输入数据:choose=0预期输出:0。 输入数据:choose=1预期输出:在链表某位置的结点后插入一个结点。 输入数据:choose=2预期输出:删除链表中某个位置的结点。 输入数据:choose=3预期输出:反转链表的链接顺序。 输入数据:choose=其他非零数预期输出:-1。 采用条件覆盖设计的测试用例如下表所示。
    设计测试用例如下: 输入数据:choose=0,预期输出:0。 输入数据:choose=1,预期输出:在链表某位置的结点后插入一个结点。 输入数据:choose=2,预期输出:删除链表中某个位置的结点。 输入数据:choose=3,预期输出:反转链表的链接顺序。 输入数据:choose=其他非零数,预期输出:-1。 采用条件覆盖设计的测试用例如下表所示。

  • 第4题:

    设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支率无法达到100%,需说明为什么。


    正确答案:设计测试用例 ①输入0输出0。 ②输入2输出2。 ③输入26输出A。 ④输入27输出B。 ⑤输入28输出C。 ⑥输入29输出D。 ⑦输入30输出E。 ⑧输入31输出F。 ⑨输入20P输出错误。 语句覆盖率无法达到100%因为main()函数中的return 0语句永远无法执行。
    设计测试用例 ①输入0,输出0。 ②输入2,输出2。 ③输入26,输出A。 ④输入27,输出B。 ⑤输入28,输出C。 ⑥输入29,输出D。 ⑦输入30,输出E。 ⑧输入31,输出F。 ⑨输入20P,输出错误。 语句覆盖率无法达到100%,因为main()函数中的return 0语句永远无法执行。

  • 第5题:

    针对一下C语言程序,请按要求回答问题。 已知weekday. c源程序如下: include include

    针对一下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%?如果认为无法达到,需说明原因。


    正确答案:[path1]12 [path2]23 [path3]234522 [path4]236722 [path5]236822 [path6]91022 [path7]111222 [path8]1314 [path9]13141516 [path10]1314171822 [path11]1 314822 [path12]192022 [path13]19822 生成测试用例确保基本路径集中每条路径的执行: path1.输入数据y输出的结果程序结束返回值0 path2.输入数据s输出结果“s输入第二个字母” path3.输人数据s后输入数据a输出结果“Saturday” path4.输入数据s后输入数据u输出结果“sunday” path5.输入数据s后输入数据非a非u输出结果“data erroi” path6.输入数据f输出结果“friday” path7.输入数据m输出结果“monday” path8.输入数据t输出结果“输入第二个字母” path9.输入数据t后输入数据u输出结果“tuesday” path10.输入数据t后输入数据h输出结果“thursday” path11.输入数据t后输入数据非u非h输出结果“data crror” pathl2.输入数据w输出结果“Wednesday"’ path13.输入数据defalt输出结果“data error”
    [path1]1,2 [path2]2,3 [path3]2,3,4,5,22 [path4]2,3,6,7,22 [path5]2,3,6,8,22 [path6]9,10,22 [path7]11,12,22 [path8]13,14 [path9]13,14,15,16 [path10]13,14,17,18,22 [path11]1 3,14,8,22 [path12]19,20,22 [path13]19,8,22 生成测试用例,确保基本路径集中每条路径的执行: path1.输入数据y,输出的结果程序结束返回值0 path2.输入数据s,输出结果“s输入第二个字母” path3.输人数据s后,输入数据a,输出结果“Saturday” path4.输入数据s后,输入数据u,输出结果“sunday” path5.输入数据s后,输入数据非a非u,输出结果“data erroi” path6.输入数据f,输出结果“friday” path7.输入数据m,输出结果“monday” path8.输入数据t,输出结果“输入第二个字母” path9.输入数据t后,输入数据u,输出结果“tuesday” path10.输入数据t后,输入数据h,输出结果“thursday” path11.输入数据t后,输入数据非u非h,输出结果“data crror” pathl2.输入数据w,输出结果“Wednesday"’ path13.输入数据defalt,输出结果“data error”

  • 第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分)。


    正确答案:×
    (1)函数addLInt的控制流程图。 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.条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径


    参考答案:A

  • 第8题:

    ● 以下叙述中,不符合软件单元测试技术要求的是 (42) 。

    (42)

    A. 对软件设计文档规定的软件单元的功能、性能、接口等应逐项测试

    B. 每个软件特性应至少被一个正常测试用例和一个异常测试用例覆盖

    C. 语句覆盖率达到100%

    D. 分支覆盖率达到80%以上


    正确答案:D

  • 第9题:

    以下不属于基于结构的技术的共同特点的是()

    • A、根据软件的结构信息设计测试用例
    • B、可以通过已有的测试用例测量软件的测试覆盖率
    • C、通过系统化的导出设计用例来提高覆盖率
    • D、使用正式或非正式的模型来描述需要解决的问题

    正确答案:D

  • 第10题:

    在白盒测试中,如果覆盖率达到99%,就基本可以保证把所有的隐藏程序缺陷都已经揭露出来了。


    正确答案:错误

  • 第11题:

    只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。


    正确答案:错误

  • 第12题:

    判断题
    在白盒测试中,如果覆盖率达到100%,就基本可以保证把所有的隐藏程序缺陷都已经揭露出来了。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第13题:

    下面有关逻辑覆盖的说法中错误的是______。

    A) DDP覆盖是判定覆盖的一个变体

    B) 满足条件覆盖一定也满足判定覆盖

    C) 指令块覆盖属于语句覆盖

    D) 若判定覆盖率达到100%,则语句覆盖率一定也达到100%

    A.

    B.

    C.

    D.


    正确答案:B
    解析:条件覆盖是指设计若干个测试用例,运行被测程序,使得程序中每个判定的每个条件的可能取值至少评价一次。而判定覆盖是设计测试用例,使得程序中每个判定的取真分支和取假分支至少评价一次。两者没有必然的联系,故满足条件覆盖的未必会满足判定覆盖,选项B错误。而满足判定覆盖一定会满足语句覆盖是容易理解的,因为每个判定的取真分支和取假分支都至少评价一次,必然预示着每个可执行语句至少评价了一次,即满足了语句覆盖。另外指令块覆盖是语句覆盖的一个变体,而DDP覆盖(判定路径覆盖)是判定覆盖的一个变体。

  • 第14题:

    如果程序中有两个判定条件,其复合条件表达式分别为(a>=3)and(b<=6)和(a>0)or(c<2),则为了达到100

    如果程序中有两个判定条件,其复合条件表达式分别为(a>=3)and(b<=6)和(a>0)or(c<2),则为了达到100%的判定覆盖率,至少需要设计的测试用例个数为______。

    A) 1

    B) 2

    C) 3

    D) 4

    A.

    B.

    C.

    D.


    正确答案:B
    解析:判定覆盖就是指设计若干测试用例,运行被测程序,使得程序中每个判定的取真分支和取假分支至少评价一次。针对该题取a=3,b=5,c=1和a=-1,b=5,c=3两组测试用例即可达到100%的判定覆盖率,故本题答案为B。

  • 第15题:

    论述题3:针对以下C语言程序,请按要求回答问题

    下面是一个简单的C语言程序:

    (1)画出该函数的程序流程图。

    (2)设计测试用例,分别使函数的各种逻辑覆盖率尽量达到100%。如果认为该函数的某种逻辑覆盖率无法达到100%,需要说明原因。

    (3)设计特殊的测试用例,说明各种逻辑覆盖之间的关系。


    正确答案:问题1: 解答: 根据源程序易得流程图如图17-7所示。 问题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)便可以把该程序的所有四条路径都覆盖。路径覆盖是最强的覆盖准则。
    问题1: 解答: 根据源程序易得流程图,如图17-7所示。 问题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%,需说明原因。


    正确答案:设计测试用例时关键需要注意将t的值达到Max即起码要输入四个name才行这样当t==Max才能为真才可以执行相应的分支语句。 具体输入如下: 输入四个name:1 小明 凤凰街 南京 210000 1 小红 南京路 上海 120000 1 王明 达成路 上海 120000 1 李明 南京路 北京 100000 打算输入第五个:1 删除一个name:2 小明 列出所有: 3 退出: 4 这样程序中每一条语句都能够被执行。 上述测试用例能够使每条语句均执行故语句覆盖率能够达到100%。
    设计测试用例时,关键需要注意将t的值达到Max,即起码要输入四个name才行,这样当t==Max才能为真,才可以执行相应的分支语句。 具体输入如下: 输入四个name:1 小明 凤凰街 南京 210000 1 小红 南京路 上海 120000 1 王明 达成路 上海 120000 1 李明 南京路 北京 100000 打算输入第五个:1 删除一个name:2 小明 列出所有: 3 退出: 4 这样,程序中每一条语句都能够被执行。 上述测试用例能够使每条语句均执行,故语句覆盖率能够达到100%。

  • 第17题:

    设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果为该程序的语句或分支覆盖率无法达到100%,需说明为什么。


    正确答案:测试用例包含几种情况: ①正数3; ②负数-12.4;
    测试用例包含几种情况: ①正数3; ②负数-12.4;

  • 第18题:

    只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。( )

    此题为判断题(对,错)。


    正确答案:×

  • 第19题:

    如果一个判定中的复合条件表达式为(A>1)or(B<=3),则为了达到100%的判定覆盖率,至少需要设计______测试用例。

    A) 1个

    B) 2个

    C) 3个

    D) 4个

    A.

    B.

    C.

    D.


    正确答案:B

  • 第20题:

    对于流动性覆盖率已达到100%的银行,可以不再进行流动性覆盖率的计量。


    答案:错
    解析:
    对于流动性覆盖率已达到100%的银行,鼓励其流动性覆盖率继续保持在100%之上。

  • 第21题:

    在宏程序中,条件分支语句使程序运行的出口达到两个以上。


    正确答案:错误

  • 第22题:

    在白盒测试中,如果覆盖率达到100%,就基本可以保证把所有的隐藏程序缺陷都已经揭露出来了。


    正确答案:错误

  • 第23题:

    判断题
    只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。
    A

    B


    正确答案:
    解析: 暂无解析