【计算机类职业资格】覆盖率(白盒)测试及答案解析.doc
《【计算机类职业资格】覆盖率(白盒)测试及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】覆盖率(白盒)测试及答案解析.doc(24页珍藏版)》请在麦多课文档分享上搜索。
1、覆盖率(白盒)测试及答案解析(总分:80.00,做题时间:90 分钟)一、B选择题/B(总题数:18,分数:54.00)1.下图是一个判定路径覆盖图,其中用“ ”表示判定语句,用“ ”表示处理语句,用“”表示判定汇合点,用“”表示判定路径,若有一个测试用例覆盖了判定路径 A、B、E、H,则判定路径覆盖率为 (分数:3.00)A.57.1%B.78.6%C.90%D.100%2.下列逻辑覆盖测试中,最强的是_。(分数:3.00)A.语句覆盖B.条件覆盖C.路径覆盖D.条件组合覆盖3.如果程序中有两个判定条件,其复合条件表达式分别为(a=3) and (b=6)和(a0) or (c2),则为了达
2、到 100%的判定覆盖率,至少需要没计的测试用例个数为_。(分数:3.00)A.1B.2C.3D.44.程序的流程图如下图所示,采用路径覆盖法进行测试,则至少需要几个测试用例可以覆盖所有可能的路径_。 (分数:3.00)A.5B.6C.7D.85.下列语句通常不是作为定义结点的是_。(分数:3.00)A.输入语句B.输出语句C.赋值语句D.过程调用语句6.对于一个嵌套型分支结构的程序,若有 4个判定语句则要覆盖它的每一条路径至少需要的测试用例数为_。(分数:3.00)A.4个B.3个C.5个D.6个7.关于数据流测试,说法正确的是_。(分数:3.00)A.数据流测试是一种路径测试B.执行定义结
3、点不会改变变量在存储单元中的内容C.执行使用结点会改变变量在存储单元中的内容D.定义/使用路径往往不是存在潜在错误的地方8.如果程序通过了 100%的代码覆盖率测试,则说明程序满足了_。(分数:3.00)A.语句覆盖B.编程规范C.设计规格D.功能需求9.设有一段程序如下: if(a=b) and (c=d) or (e=f) do S1 else if(p=q) or (s=t)do S2 else do S3 满足判定/条件覆盖的要求下,最少的测试用例数目是_。(分数:3.00)A.6B.8C.3D.410.数据流覆盖关注的是程序中某个变量从其声明、赋值到引用的变化情况,它是下列哪一种覆盖
4、的变种_。(分数:3.00)A.语句覆盖B.控制覆盖C.分支覆盖D.路径覆盖11.如果一个判定巾的复合条件表达式为(A1)or(B3),则为了达到 100%的条件覆盖率,至少需要设计多少个测试用例_。(分数:3.00)A.1B.2C.3D.412.程序的流程图如下图所示,采用路径覆盖法进行测试,则至少需要几个测试用例可以覆盖所有可能的路径_。 (分数:3.00)A.24个B.12个C.6个D.48个13.对于具有串联型分支结构的程序,若有 4个判定语句,则采用正交实验设计法,至少需要的测试用例数应为_。(分数:3.00)A.4个B.16个C.8个D.5个14.下面有关逻辑覆盖的说法中错误的是_
5、。(分数:3.00)A.DDP覆盖是判定覆盖的一个变体B.满足条件覆盖一定也满足判定覆盖C.指令块覆盖属于语句覆盖D.若判定覆盖率达到 100%,则语句覆盖率一定也达到 100%15.下列属于变量异常的是_。(分数:3.00)A.变量被定义,但没有被使用B.所使用的变量未被定义C.变量在使用前被重复定义D.以上全部16.关于逻辑覆盖,说法错误的是_。(分数:3.00)A.DDP覆盖是判定覆盖的一个变体B.满足条件覆盖一定也满足判定覆盖C.指令块覆盖属于语句覆盖D.若判定覆盖率达 100%,则语句覆盖率一定也是 100%17.下列指导选择和使用测试覆盖率的原则中错误的是_。(分数:3.00)A.
6、覆盖率不是目的,仅是一种手段B.不要追求绝对 100%的覆盖率C.不可能针对所有的覆盖率指标来选择测试用例D.只根据测试覆盖率指标来指导测试用例的设计18.对于具有串联型分支结构的程序,如果有七个判断语句串联,则使用正交实验设计法,至少需要的测试用例数应为_。(分数:3.00)A.23B.24C.25D.27二、B论述题/B(总题数:6,分数:26.00)已知 C源程序如下:/*Input todays date,output tomorrows date*/*version 2*/#includestdio.hstruct ydate int day;int month;int year;i
7、nt leap(struct ydate d) if(d.year%4=0elsereturn 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)elseday=daytabd.month-1;return day;int main(void) struct ydate today,tomorrow;printf(“format of date is:year,month,day 输入的年、月、日之间应用逗号隔开/n“);printf(“t
8、oday is:“);scanf(“%d,%d,%d“,while(0=today.year| today.year65535 | 0=today.month | today.month12) |0=today.day | today.daynumdays(today) printf(“input date error!reenter the day!/n“);printf(“today is:“);scanf(“%d,%d,%d“,if(today.day!=numdays(today) tomorrow.year=today.year;tomorrow.month=today.month;
9、tomorrow.day=today.day+1;else if(today.month=12) tomorrow.year=today.year+1;tomorrow.month=1;tomorrow.day=1;else tomorrow.year=today.year;tomorrow.month=today.month+1;tomorrow.day=1;printf(“tomorrow is:%d,%d,%d/n/“,tomorrow.year,tomorrow.month,tomorrow.day);(分数:4.00)(1).画出程序中所有函数的控制流程图;(分数:2.00)_(2)
10、.设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句或分支覆盖率无法达到 100%需说明为什么。(分数:2.00)_已知 C源程序如下:/*A simple mailing list example using an array of structures. */# includestdion.h# includestdlib.hdefine MAX 4struct addrchar name30;char street40;char city20;unsigned long int zip;addr_listMAX;void init_list(
11、void),enter(void);void deleteAddr(void),list(void);int menu_select(void),find_free(void);int main(void)char choice;init_list();/*initialize the structure array*/for(;)choice=menu_select();switch(choice)case 1:enter();break;case 2:deleteAddr();break;case 3:list();break;case 4:exit(0);return 0;/*Initi
12、alize the list.*/void initlist(void)register int t;for(t=0;tMAX; +t)addr_listt, name0=/0;/*Get a menu selection. */int menu_select(void)char s80. ;int c;printf(“1Enter a name/n“);printf(“2Delete a name/n“);printf(“3List the file/n“);printf (“4Quit/“)doprintf(“/nEnter your choice:“);gets(s);c= atoi(s
13、);while(c1 | c4);return c;/*Input addresses into the list. */void enter(void)int slot;char s80;slot=find_free();if(slot=-1)printf(“/nList Full“);return;printf(“Enter name:“);gets(addr_listslot.name);printf(“Enter street:“);gets(addr_listslot.street);printf(“Enter city:“);gets(addr listslot.city);pri
14、ntf(“Enter zip:“);gets(s);addr_listslot.zip=strtoul(s,/0,10);/*Find an unused structure. */int find_free(void)register int t;for(t=0; addr_listt. name0 +t);if(t=MAX)return-1; /*no slots free*/return t;/*Delete an address. */void deleteAddr(void)register int slot;char s80;printf(“enter record#: “);ge
15、ts(s);slot=atoi(s);if(slot=0 /*Display the list on the screen. */void list(void)register int t;for(t=0; tMAX; +t)if(addr_listt. name0)printf(“%s/n“, addr_listt. name);printf(“%s/n“, addr_listt. street);printf(“%s/n“,addr_listt. city);printf(“%lu/n/n“, addr_listt. zip);printf(“/n/n“);(分数:4.00)(1).画出
16、main函数的控制流程图;(分数:2.00)_(2).设计一组测试用例,使该程序所有函数的语句覆盖率尽量达到 100%。如果认为该程序的语句覆盖率无法达到 100%,需说明原因。(分数:2.00)_针对以下 C语言程序,请按要求回答问题。已知 link. c源程序如下:/*link. c程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入结点、删除结点和链表反转操作*/#includestdio.h#includestdlib.htypedef struct list_node*list_pointer; /定义链表指针typedef struct list_nod
17、e /定义链表结构int data;list_pointer link; list_node;/用到的操作函数list_pointer create(); /建立一个单向链表void insert(list_pointer*p_ptr, list_pointer node);/在 node后加入一个新的结点void delete_node(list_pointer*p_ptr, list_pointer trail, list_pointer node);/删除前一个结点是 trail的当前结点 nodevoid print(list_pointer*p_ptr); /打印链表结点中的值lis
18、t_pointer invert(list_pointer lead); /反转链表int main()list_pointer ptr=NULL;list_pointer node, trail;list_pointer * p=int choose, location, i;printf(“you should create a link first:/n“);prt=create(); /*ptr 指向链表的第一个结点*/print(ptr);/根据用户的不同选择进行相应的操作;printf(“input number 0, you can quit the program/n“);pr
19、intf(“input number 1, you can insert a new node to link/n“);printf(“input number 2, you can delete a node from the linkkn“);printf(“input number 3, you can invert the link/n“);printf(“please input you choicekn“);scanf(“ %d“, while(ilocation)node=node-link;i+;insert(p,node); /*p为指向 ptr的指针*/print(ptr)
20、;break;case 2:printf(“you will delete a node from the link/n“);printf(“please input the location of the node:/n“);scanf(“%d“, node=ptr;if(location=1)trail=NULL;trail=ptr;i=1;whileilocation)trail=trail-link;i+;node=trail-link;delete_node(p, trail, node);print(ptr);break;case 3:printf(“you will invert
21、 the link/n“);ptr=invert (ptr)print(ptr);break;default :breakreturn -1:printf(“please input you choice/n“);scanf(“%d“,return 0;/根据用户的输入值建立一个新的单向链表:list_pointer create()int i, current, length;list_pointer p1, p2, head;printf(“please input the node number of the link:/n“);scanf(“%d“, printf(“the numbe
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 覆盖率 测试 答案 解析 DOC
