【计算机类职业资格】覆盖率(白盒)测试(二)及答案解析.doc
《【计算机类职业资格】覆盖率(白盒)测试(二)及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】覆盖率(白盒)测试(二)及答案解析.doc(26页珍藏版)》请在麦多课文档分享上搜索。
1、覆盖率(白盒)测试(二)及答案解析(总分:95.99,做题时间:90 分钟)一、选择题(总题数:13,分数:26.00)1.路径覆盖必定也满足_。(分数:2.00)A.语句覆盖B.条件覆盖C.判定覆盖D.条件组合覆盖2.设有一段程序如下:if(a=b) and (c=d) or (e=f) do S1else if(p=q) or (s=t) do S2else do S3满足判定/条件覆盖的要求下,最少的测试用例数目是_。(分数:2.00)A.6B.8C.3D.43.在以下有关逻辑覆盖的说法中错误的是_。(分数:2.00)A.所有满足条件组合覆盖标准的测试用例集,也满足路径覆盖的覆盖标准B.
2、条件覆盖能够查出条件中包含的错误,但有时达不到判定覆盖的覆盖率要求C.路径覆盖的差错能力很强,但有时达不到条件组合覆盖的覆盖率要求D.判定覆盖包含了语句覆盖,但它不能保证每个错误条件都能检查出来4.下列几种逻辑覆盖标准中,设计足够的测试用例,运行被测程序,使得程序中所有可能的路径至少执行一次,称为_。(分数:2.00)A.判定覆盖B.条件覆盖C.语句覆盖D.路径覆盖5.如果一个判定中的复合条件表达式为(A1)or(B=3),则为了达到 100%的判定覆盖率,至少需要设计多少个测试用例_。(分数:2.00)A.1 个B.2 个C.3 个D.4 个6.下面有关逻辑覆盖的说法中错误的是_。(分数:2
3、.00)A.DDP 覆盖式判定覆盖的一个变体B.满足条件覆盖一定也满足判定覆盖C.指令快覆盖属于语句覆盖D.若判定覆盖率道道 100%,则语句覆盖率一定也达到 100%7.如果程序通过了 100%的代码覆盖率测试,则说明程序满足了_。(分数:2.00)A.语句覆盖B.编程规范C.设计规格D.功能需求8.下列指导选择和使用测试覆盖率的原则中错误的是_。(分数:2.00)A.覆盖率不是目的,仅是一种手段B.不要追求绝对 100%的覆盖率C.不可能针对所有的覆盖率指标来选择测试用例D.只根据测试覆盖率指标来指导测试用例的设计9.以下关于逻辑覆盖的叙述中正确的是_。(分数:2.00)A.对所有代码达到
4、 100%的语句覆盖率是不现实的B.测试用例满足条件覆盖则必定满足判定覆盖C.语句覆盖是测试完整性方面很好的度量方法D.条件/判定覆盖是一个比判定覆盖和条件覆盖更强的覆盖10.覆盖率对软件测试有非常重要的作用,下列关于覆盖率说法正确的是_。(分数:2.00)A.覆盖率是用于度量测试完整性的一个手段,覆盖率可以分为逻辑覆盖和功能覆盖两种B.为了测试的完整性,我们在测试时通常要针对所有的覆盖率指标进行测试C.路径覆盖是最强的覆盖,故达到路径覆盖的测试用例一定满足判定/条件覆盖D.为了测试更充分,我们通常要求测试用例能达到 100%的覆盖率11.下列语句中既可以作为定义节点,同时还可以作为使用节点的
5、是_。(分数:2.00)A.输入语句B.输出语句C.赋值语句D.条件语句12.程序流程如下图所示,要覆盖程序中所有可能的路径,所需测试用例数至少是_。(分数:2.00)A.B.C.D.13.对于具有串联型分支结构的程序,如果有 7 个判断语句串联,则使用正交实验设计法,至少需要的测试用例数应为_。(分数:2.00)A.23B.24C.26D.27二、论述题(总题数:7,分数:70.00)14.已知 C 源程序如下:/* Input todays date,output tomorrows date */* version 2 */#include stdio.hstruct ydateint
6、day; int month; int year; ;int leap(struct ydate d)if(d.year%4=0d.year%100!=0)|(d.year%400=0)return 1;elsereturn 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;elseday=daytab d.month-1;return day;int main (void)struct ydate tod
7、ay, tomorrow;printf(“format of date is: year,month, day输入的年、月、日之间应用逗号隔开/n“printf(“ today is: “) ;scanf (“%d, %d, %d“, today. year, today.month, today. day) ;while(0=today.year| today.year65535|0=today.month|today.month12)|0=today, day|today, daynumdays (today)printf(“input date error! reenter the da
8、y!/n“);printf(“today is :“);scanf (“%d, %d, %d“, today. year, today.month, today. day);if (today. day! =numdays (today)tomorrow.year:today.year;tomorrow.month=today.month;tomorrow.day=today.day+1;else if(today.month=12)tomorrow.year:today.year+1;tomorrow.month=1;tomorrow.day=1;elsetomorrow.year=toda
9、y.year;tomorrow.month=today.month+1;tomorrow.day=1;printf(“tomorrow is :%d,%d,%d/n/n“,tomorrow.year, tomorrow.month, tomorrow.day);(1)画出程序中所有函数的控制流程图。(2)设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到 100%。如果认为该程序的语句或分支覆盖率无法达到 100%,则说明为什么。(分数:10.00)_已知 C 源程序如下:#includestdio.h#includestring.hvoid reverse (char s)
10、int c,i,j;for(i=0,j=strlen(s)-1;ij;i+,j+) c:s i;si=sj;s j=c;void getHex(int number,char s) int I;i=0;while (number0)if(number%1610)s i+ =number%1 6+0;elseswitch (number%16) case 10:si+=A; break;case 11:si+=B; break;case 12:si+=C; break;case 13:si+=D; break;case 14:si+=E; break;case 15:si+=F; break;d
11、efault: printf(“Error“);break;number/=16;si=/0;reverse (s);int main() unsigned int number;int i=0;char s50 ;printf (“%s“, “please input number:/n“);scanf (“%d“, number);getHex (number, s);i=0;while (s i)printf(“%c“,si+);return 0;(分数:10.00)(1).画出程序中所有函数的控制流程图。(分数:5.00)_(2).设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆
12、盖率均能达到 100%。如果认为该程序的语句覆盖率或分支率无法达到 100%,则说明为什么。(分数:5.00)_已知 C 源程序如下:/*一个使用结构体数组的简单地址列表*/# include stdion.h# include stdlib.hdefine MAX 4struct addr char name30;char street40;char city20;unsigned long int zip;addr list MAX ;void init_list (void), enter (void);void deleteAddr(void), list(void);int menu
13、 select (void), find free (void);int main (void)char choice;init_list();/ *初始化结构体数组*/for(;) choice=menu_select();switch (choice) case 1:enter();break;case 2:deleteAddr();break;case 3:list();break;case 4:exit(0);return 0/*初始化列表*/void init_list (void)register int t;for(t=0;tMAX;+t)addr_listt.name0=/0;
14、/ *获取菜单选择* /int menu_select (void)char s80;int c;printf(“1. Enter a name/n“);printf(“2. Delete a name/n“);printf(“3. List the file/n“) ;printf(“4. Quit/n“) ;do printf(“/nEnter your choice:“);gets (s);c=atoi (s);while(c1| | c4);return c;/ *增加地址* /void enter (void)int slot;char s80;slot=find_free ();i
15、f (slot=-1) printf(“/nList Full“) ;return;printf(“Enter name:“);gets (addr_list slot .name);printf(“Enter street:“);gets (addr_listslot. street);printf(“Enter city:“);gets(addr_listslot. city);printf(“Enter zip:“);gets (s);addr_listslot .zip=strtoul(s, /0,10);/*查找未用结构*/int find_free (void)register i
16、nt t;for(t=0; addr_list t. name0 tMAX;+t);if(t=MAX) return-1; / * no slots free * /return t;/*删除地址*/void deleteAddr(void)register int slot;char s80;printf(“enter record # :“);gets (s);slot=atoi(s);if(slot=0 slotMAX)addr_list slot. name0:/0;/ *在屏幕上显示列表*/void list (void)register int t;for(t=0;tMAX;+t)
17、 if (addr_list t. name0) printf (“%s/n“, addr_list It . name);printf(“%s/n“,addr_listt .street);printf(“%s/n“,addr listt .city);printf (“%lu/n/n“, addr_list t. zip);printf (“/n/n“);(分数:10.00)(1).画出 main 函数的控制流程图。(分数:5.00)_(2).设计一组测试用例,使该程序所有函数的语句覆盖率尽量达到 100%。如果认为该程序的语句覆盖率无法达到 100%,则说明原因。(分数:5.00)_针对
18、以下 C 语言程序,请按要求回答问题。已知 link.c 源程序如下:/*link.c 程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入节点、删除节点和链表反转操作*/#includestdio.h#includestdlib.htypedef struct list_node *list_pointer; /定义链表指针typedef struct list_node /定义链表结构int data;list_pointer link;list_node;/用到的操作函数list_pointer create() ; /建立一个单向链表void insert
19、(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) ; /打印链表节点中的值list_pointer invert(list_pointer lead); /反转链表int main ()list_pointer ptr=NULL;list_pointer no
20、de, trail;list_pointer *p=ptr;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“);printf(“input number 1, you can insert a new node to link/n“);printf(“input
21、 number 2, you can delete a node from the link/n“);printf(“input number 3, you can invert the link/n“);printf(“please input you choice/n“);scanf (“%d“, choose);while (choose!=0) switch (choose) case 1:i=1;while (ilooation) node=node-link;i+;insert (p, node) ; /*p 为指向 ptr 的指针*/print (ptr);break;case
22、2:printf(“you will delete a node from the link/n“);printf(“please input the location of the node:/n“);scanf (“%d“, location) ;node=ptr;if (location=1)trail=NULL;trail=ptr;i=1;while (ilocation) trail=trail-link;i+;node=trail-link;delete_node (p, trail, node);print (ptr);break;case 3:printf(“you will
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 覆盖率 测试 答案 解析 DOC
