1、计算机四级软件测试工程师-25 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.下列不属于兼容性要考虑的方面的是(分数:2.00)A.硬件兼容性B.软件兼容性C.程序兼容性D.数据兼容性2.软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(分数:2.00)A.结构合理性B.软件外部功能C.程序的内部逻辑D.程序正确性3.测试管理工具提供从测试设计到测试运行的全过程支持。这个工具的主要用途是(分数:2.00)A.自动抓取屏幕上的系统运行界面B.基于需求规格说明书自动生成测试数据、测试用例C.测试用例管理、软
2、件缺陷管理、软件测试度量D.辅助管理软件产品的各组成部分,使它们保持一致4.一个关键模块具有的特性有(分数:2.00)A.和多个软件需求有关,或与关键功能相关B.处于程序控制结构的顶层C.含有确定的性能需求D.以上全部5.下列关于面向对象集成测试的说法中,正确的是(分数:2.00)A.大突击集成是面向对象集成测试最常用且最有效的方法B.自底向上集成和自项向下集成都需要为集成测试开发大量代码C.协作集成在任何情况下都优于自底向上集成和自顶向下集成D.高频集成是以自底向上集成力基础,利用冒烟测试进行的集成测试6.软件可靠性的研究很大程度借鉴了硬件可靠性的研究,但二者还是有很多区别,主要体现在(分数
3、:2.00)A.软件设计出来后,每份拷贝都完全一样,而硬件设计出来后,每个按照设计生产的都不可能完全相同B.软件是纯逻辑产品,内部逻辑复杂度高,而硬件的内部逻辑相对简单C.软件版本更新很频繁,但硬件版本更新通常很慢D.以上全部7.规划阶段实际上是指(分数:2.00)A.需求获取和定义阶段B.数据获取和定义阶段C.测试用倒设计规划阶段D.产品实施规划8.以下说法中错误的是(分数:2.00)A.软件配置项测试的目的是检验软件配置项与软件需求规格说明的一致性B.软件配置项测试一般由软件供方组织。由独立于软件开发的人员实施,软件开发人员配合C.软件配置项测试要求被测软件配置项已通过单元测试和集成测试D
4、.软件配置项测试不得委托第三方实施9.在面向对象软件的基于集成测试策略中,将基干中的模块形成基干子系统使用的集成方式是(分数:2.00)A.大突击集成方式B.自底向上集成方式C.自顶向下集成方式D.综合集成方式10.测试人员和开发人员交流的纽带是(分数:2.00)A.软件设计报告B.测试说明文档C.软件缺陷报告D.测试执行报告11.Myers 在 1979 年提出了一个重要观点,即软件测试的目的是为了(分数:2.00)A.证明程序正确B.查找程序错误C.改正程序错误D.验证程序无错误12.在代码检查中,负责提供关于检查项目的资料并回答检查人员问题的角色的是(分数:2.00)A.协调人B.开发人
5、员C.检查人员D.讲解员13.不属于测试总结报告的内容的是(分数:2.00)A.测试项目概述B.测试用例执行情况总结C.测试用例设计情况总结D.软件缺陷报告总结14.手册是用户文档中的核心部分,通常所说的手册包括用户手册、概念手册和(分数:2.00)A.软件手册B.操作手册C.宣传手册D.安装手册15.评审是对软件进行静态测试的一种方法,下列与软件评审无关的是(分数:2.00)A.尽量发现错误B.根据评审标准C.依靠测试信息D.检查软件文档16.下列不属于前处理和后处理任务的典型特征的是(分数:2.00)A.数量多B.成批出现C.类型重复少D.容易自动化17. 测试的管理者最好是(分数:2.0
6、0)A.主持产品发行的人员B.软件开发人员C.用户D.QA 人员18.测试说明文档中包括的文件有(分数:2.00)A.测试设计说明B.测试用例说明C.测试规程说明D.以上全部19.关于测试的策划的说法中不正确的是(分数:2.00)A.测试设计的任务是执行测试用例,需要时也可以将测试用例设计与执行并行开展B.若系统对质量要求很高,则需要开展多次的回归测试验证C.在实际软件项目中,一个测试团队可能大都是骨干人员D.测试团队的规模与被测系统规模、测试方资源调配情况有关20.下列方法中,最适合于数学计算的是(分数:2.00)A.输入域测试B.输出域测试C.特殊值测试D.错误猜测法21.在银行的活期存折
7、账户管理软件中,要求可以输入一个账户的每笔交易的金额。若规定存入的金额的有效取值范围是 1.00 元至 99999999.99 元。若考虑使用边界值分析设计关于这个金额的测试用例,下列属于它的边界值是(分数:2.00)A.2,9999999B.101,9999999999C.99999999.98,9.99D.0.99,1000000000022.一般而言,Web 应用软件最常用的性能指标是(分数:2.00)A.系统响应时间B.吞吐量C.并发用户数D.资源利用率23.软件可靠性分析方法通常不依赖于概率统计的方法,下面属于软件可靠性分析方法的是(分数:2.00)A.失效模式影响分析法(FMEA
8、法)B.故障树和事件树分析法C.潜在线路分析法D.以上全部24.软件测试是软件开发过程巾重要和不可缺少的阶段,其包含的内容和步骤甚多,而测试过程的多种环节中最基础的是(分数:2.00)A.集成测试B.单元测试C.系统测试D.验收测试25.对于软件集成的进度优先级高于软件质量的项目,我们通常采用的集成测试方法是(分数:2.00)A.基于风险的集成测试B.基于路径的集成测试C.基于调用图的集成测试D.基于进度的集成测试二、论述题(总题数:3,分数:50.00)针对以下 C 语言程序,按要求回答问题。已知 link.c 程序如下:/*link.c 程序对单向链表进行操作,首先建立一个单向链表,然后根
9、据用户的选择可以对其进行插入节点、删除节点和链表反转操作*/#includestdio.h#includestdlib.htypedef struet list_node*list_pointer; /定义链表指针typedef struct list_node /定义链表结构int date;list_pointer link;list node;/用到的操作函数1ist_pointer create(); /建立一个单向链表vold insert(list_pointer*p_ptr,list_pointer node; /在 node 后加入一个新的节点void delete_node(
10、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 node,trail;list_pointer*p=ptr;int choose,location,i;printf(“you should creale a link
11、first:/n“);/建立一个单向链表ptr=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 number 2,you can delete a node from the link/n“);printf(“input number 3,you can invert the li
12、nk/n“);printf(“please input your choice/n“);scanf(“d“,choose);while(choose!=0)switch(choose)case 1:i=1;while(ilocation)node=node-link;insert(p,node);/*p 为指向 ptr 的指针*/print(ptr);break;case 2:printf(“you will delete a node from the link/n“);printf(“please input the location of the node:/n“);scanf(“d,l
13、ocation);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);brcak;ease 3:printf(“you will invert the link/n“);ptr=invert(ptr);print(ptr);break;default;break;return-1;printf(“please input your choiee/n“);seanf(“d“,c
14、hoose);printf(“please input you choice/n“);scanf(“d“,choose);retnrn 0;/根据用户的输入数值建立一个新的单向链表;list_pointer create()int i,current,length;list_pointer p1,p2,head;prinff(“please input the node number of the link:/n“);scanf(“d“,length);printf(“the nnmber of the link is:d“,length);printf(“please input the d
15、ais for tile link node:/n“);i=0;p1=p2=(list_pointer)malloc(sizeof(list_node);head=p1;for(i=1;ilength;i+)scanf(“d“,current);p1-data=curren1:。 p2-link=p1;p2=p1;p1=(list_pointer)malloc(sizeof(list_node);p2-link=NULL;return head;(分数:20.00)(1).画出主函数 main 的控制流程图。(分数:10.00)_(2).设计一组测试用例,尽量使 main 函数的语句覆盖率能达
16、到 100%。如果认为该函数的语句覆盖率无法达到 100%,需要说明原因。(分数:10.00)_26.采用条件覆盖为下面的程序设计测试用例,要求条件覆盖率达到 100%。已知程序源代码如下:dim a,b As Integerdim c As Doubleif(a0 And b0)then c=c/aendifif(a1 or c1)then c=c+1endifc=a+b(分数:15.00)_以下是一个自动饮料售货机软件的操作规格说明,请按要求回答问题。设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下:有一个处理单价为 1 元 5 角钱的盒装饮料的自动售货机软件。若投入 1 元
17、 5 角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是 2 元硬币,在送出饮料的同时退还 5 角硬币。(分数:15.00)(1).试利用因果图法,建立该软件的因果图。(分数:7.50)_(2).设计测试该软件的全部测试用例。(分数:7.50)_计算机四级软件测试工程师-25 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.下列不属于兼容性要考虑的方面的是(分数:2.00)A.硬件兼容性B.软件兼容性C.程序兼容性 D.数据兼容性解析:解析 所渭兼容性测试,是指针对软件对其运行环境的依赖进行测试,以验证软件是否能够在
18、所有期望的环境中运行。在大多数情况下,兼容性测试主要考虑硬件兼容性、软件兼容性和数据兼容性三个方面。2.软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(分数:2.00)A.结构合理性B.软件外部功能 C.程序的内部逻辑D.程序正确性解析:解析 黑盒测试主要用于测试软件的外部功能。3.测试管理工具提供从测试设计到测试运行的全过程支持。这个工具的主要用途是(分数:2.00)A.自动抓取屏幕上的系统运行界面B.基于需求规格说明书自动生成测试数据、测试用例C.测试用例管理、软件缺陷管理、软件测试度量 D.辅助管理软件产品的各组成部分,使它们保持一致解析:解析 测试
19、管理工具主要用于进行测试用例管理、软件缺陷管理、软件测试度量。4.一个关键模块具有的特性有(分数:2.00)A.和多个软件需求有关,或与关键功能相关B.处于程序控制结构的顶层C.含有确定的性能需求D.以上全部 解析:解析 为提高集成测试的效果,软件的集成工作最好由不属于该软件开发组的软件设计人员承担。5.下列关于面向对象集成测试的说法中,正确的是(分数:2.00)A.大突击集成是面向对象集成测试最常用且最有效的方法B.自底向上集成和自项向下集成都需要为集成测试开发大量代码 C.协作集成在任何情况下都优于自底向上集成和自顶向下集成D.高频集成是以自底向上集成力基础,利用冒烟测试进行的集成测试解析
20、:解析 面向对象程序的集成测试策略有很多种,其中主要有传统的集成策略(大突击集成、自底向上集成、自顶向下集成和夹层式集成),协作集成,基干集成,高频集成,基于事件(或消息)的集成,基于使用的集成,客户机/服务器的集成、分布式集成。大突击集成就是将系统的所有组成成分都集成在一起进行测试,通常只有在整个软件的可靠性有了基本的保障时,大突击集成测试才是一种合理的选择。自底向上集成主要缺点是需要开发大量的测试驱动代码,自顶向下集成则需要为集成测试开发大量桩代码,总之,二者都要为集成测试开发大量代码。选项 C 说法过于绝对,因为只有当类间的主要协作关系可以明确辨识,且每个功能只需要少数类协作就可以完成时
21、,采用协作集成方式才是一个不错的选择。高频集成并不是一个具体的集成策略,它是指在软件开发过程中频繁地将新开发出来的代码与已有代码集成,一般采用冒烟测试的方法,但并不是以自底向上集成为基础。6.软件可靠性的研究很大程度借鉴了硬件可靠性的研究,但二者还是有很多区别,主要体现在(分数:2.00)A.软件设计出来后,每份拷贝都完全一样,而硬件设计出来后,每个按照设计生产的都不可能完全相同B.软件是纯逻辑产品,内部逻辑复杂度高,而硬件的内部逻辑相对简单C.软件版本更新很频繁,但硬件版本更新通常很慢D.以上全部 解析:解析 软件可靠性和软件可靠性测试的研究在很大程度上借鉴了硬件可靠性的研究,但由于软件和硬
22、件的不同特点导致软件可靠性和硬件可靠性有很大区别,具体而言,软件可靠性和硬件可靠性的区别有:唯一性,软件设计出来后,所有副本就是一模一样的;硬件设计出来后,每个按照设计生产的硬件都不可能完全相同。物理退化,一个正确的硬件器件会因为物理退化在某时刻失效,但正确的软件则不会因为物理退化而发生失效。逻辑复杂性,软件是纯逻辑产品,具有复杂的内部逻辑,而硬件的内部逻辑则相对简单。版本更新,硬件的版本更新通常很慢,而软件的版本更新比较频繁。7.规划阶段实际上是指(分数:2.00)A.需求获取和定义阶段 B.数据获取和定义阶段C.测试用倒设计规划阶段D.产品实施规划解析:解析 规划阶段的测试实际上就是对需求
23、获取和定义阶段进行的测试,产品规划小组应由系统分析员、销售人员和市场营销人员以及产品经理等组成,他们对产品进行定义,制作演示模型,以阐明他们的构想。规划人员目的是编写文档来知道将来的开发工作。8.以下说法中错误的是(分数:2.00)A.软件配置项测试的目的是检验软件配置项与软件需求规格说明的一致性B.软件配置项测试一般由软件供方组织。由独立于软件开发的人员实施,软件开发人员配合C.软件配置项测试要求被测软件配置项已通过单元测试和集成测试D.软件配置项测试不得委托第三方实施 解析:解析 计算机软件测试规范规定,软件测试可分为:单元测试、集成测试、配置项测试、系统测试和验收测试。其中配置项测试的目
24、的是检验软件配置项和软件需求规格说明是否一致。配置项测试的技术依据是软件需求规格说明(含接口需求规格说明),一般由软件供方组织,由独立于软件开发的人员实施,软件开发人员配合。若配置项测试委托第三方实施,一般应委托国家认可的第三方测试机构。软件配置项测试要求被测软件配置项已通过单元测试和集成测试。9.在面向对象软件的基于集成测试策略中,将基干中的模块形成基干子系统使用的集成方式是(分数:2.00)A.大突击集成方式 B.自底向上集成方式C.自顶向下集成方式D.综合集成方式解析:解析 面向对象软件的基于集成测试策略的具体测试步骤为:对基干中的每个模块进行孤立的、充分的测试。对基干中的所有模块进行一
25、次性集成,形成基干子系统,并使用一个驱动模块检查使用经过一次性集成的基干。此时采用的是大突击集成方式。10.测试人员和开发人员交流的纽带是(分数:2.00)A.软件设计报告B.测试说明文档C.软件缺陷报告 D.测试执行报告解析:解析 软件缺陷报告是测试人员和开发人员交流的纽带。11.Myers 在 1979 年提出了一个重要观点,即软件测试的目的是为了(分数:2.00)A.证明程序正确B.查找程序错误 C.改正程序错误D.验证程序无错误解析:解析 Glenford J. Myers 于 1979 年给出测试的定义为:软件测试是为发现错误而执行的一个程序或者系统的过程。同时他给出了三个关于测试的
26、重要观点:测试是为了证明程序有错,而不是证明程序正确。一个好的测试用例在于它能发现以前未发现的错误。一个成功的测试是发现了以前未发现的错误的测试。12.在代码检查中,负责提供关于检查项目的资料并回答检查人员问题的角色的是(分数:2.00)A.协调人B.开发人员 C.检查人员D.讲解员解析:解析 代码检查小组通常规模很小,是由设计、开发、质量等不同部门中工作性质相关的人员中特别关心产品的那些人组成,一般人数为 47 人不等。小组人员的角色分配通常有:协调人员、开发人员、检查人员、讲解员、记录员。其中开发人员是检查项目的生产者,主要负责提供检查项目资料和回答检查人员问题;协调人员主持、引导代码检查
27、的执行过程,全面负责代码检查的效果。讲解员负责在检查会议中讲解检查项目,引导小组对产品进行彻底检查;记录员负责会议期间在检查表上记录发现的每一个错误,同时也承担作为一般检查人员的任务。13.不属于测试总结报告的内容的是(分数:2.00)A.测试项目概述B.测试用例执行情况总结C.测试用例设计情况总结 D.软件缺陷报告总结解析:解析 测试总结是测试过程的最后一个活动,在测试报告中的内容包括:测试项目概述;测试用例执行情况总结;软件缺陷报告总结;被测软件评价。14.手册是用户文档中的核心部分,通常所说的手册包括用户手册、概念手册和(分数:2.00)A.软件手册B.操作手册C.宣传手册D.安装手册
28、解析:解析 不同软件的用户文档包含不同的内容,但大多数商业软件的用户文档主要包括宣传和包装材料、用户许可说明书、手册、在线帮助、示例和模板。其中手册是用户文档中的核心部分,通常所说的手册包括安装手册、用户手册和概念手册。安装手册是指导用户完成软件安装的文档;用户手册也称为操作手册,是指导用户使用软件的核心文档;概念手册和用户手册一样也是为了帮助用户使用软件的,这两种手册的主要区别是:用户手册需要按条目列出软件的所有功能和使用方法,概念手册不需要列出功能,但需要阐述隐藏在功能背后的原理和机制。一般说来,这两种手册是相辅相成的,用户手册用于帮助用户了解软件的基本操作,而概念手册则用于帮助用户系统掌
29、握软件。15.评审是对软件进行静态测试的一种方法,下列与软件评审无关的是(分数:2.00)A.尽量发现错误B.根据评审标准C.依靠测试信息 D.检查软件文档解析:解析 评审是一种软件开发前期阶段人工测试的方法,主要是发现缺陷,并通过评审标准检查软件文档,故选项 A、选项 B 和选项 D 都与软件评审有关。而评审这一阶段是不需要依靠测试信息的。16.下列不属于前处理和后处理任务的典型特征的是(分数:2.00)A.数量多B.成批出现C.类型重复少 D.容易自动化解析:解析 前处理和后处理任务的典型特征有:数量多,有大量潜在的前处理和后处理任务要执行,并且其中一部分在每次运行测试用例时都执行;成批出
30、现,通常会有许多待处理的前处理和后处理任务在同一时刻出现;类型重复多,在某特定系统上进行的诸多测试只需要简单的物理设置,因此可能只存在少数几种不同类型的前处理和后处理行为;容易自动化,这些任务通常是简单的函数,所以可以用一个简单的指令或命令来实现。17. 测试的管理者最好是(分数:2.00)A.主持产品发行的人员 B.软件开发人员C.用户D.QA 人员解析:解析 B 测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。它主要衡量产品的 FURPS,着重于产品的支持性,包括文档、客户培训和支持产品生产能力。只有当 测试达到一定的可靠程度时,才能开始 测试。由于 B 测试的主要目标是
31、测试可支持性,所以 测试应尽可能主持产品发行的人员来管理。18.测试说明文档中包括的文件有(分数:2.00)A.测试设计说明B.测试用例说明C.测试规程说明D.以上全部 解析:解析 测试说明文档中包括三类文件:测试设计说明;测试用例说明;测试规程说明。19.关于测试的策划的说法中不正确的是(分数:2.00)A.测试设计的任务是执行测试用例,需要时也可以将测试用例设计与执行并行开展B.若系统对质量要求很高,则需要开展多次的回归测试验证C.在实际软件项目中,一个测试团队可能大都是骨干人员 D.测试团队的规模与被测系统规模、测试方资源调配情况有关解析:解析 在实际的软件项目中,一个测试团队不可能大都
32、是骨干人员,要考虑成本。20.下列方法中,最适合于数学计算的是(分数:2.00)A.输入域测试B.输出域测试C.特殊值测试 D.错误猜测法解析:解析 特殊值测试是指基于计算功能的特性来选择测试用例的方法,该方法尤其适用于数学计算。输入域测试的目标是选用域的代表值,从它们的执行中得到整个输入域的测试结果。输出域测试就是通过选择能够使得每个输出域会达到极端值的输入数据作为测试用例来执行测试,其目标是保证单元已经被检查了最大和最小的输出条件并且如果可能的话,所有的错误信息的分类都已经被产生过了。21.在银行的活期存折账户管理软件中,要求可以输入一个账户的每笔交易的金额。若规定存入的金额的有效取值范围
33、是 1.00 元至 99999999.99 元。若考虑使用边界值分析设计关于这个金额的测试用例,下列属于它的边界值是(分数:2.00)A.2,9999999B.101,9999999999C.99999999.98,9.99D.0.99,10000000000 解析:解析 边界值的概念。22.一般而言,Web 应用软件最常用的性能指标是(分数:2.00)A.系统响应时间B.吞吐量C.并发用户数 D.资源利用率解析:解析 对 Web 应用软件而言,性能是一个至关重要的因素,因此对 Web 应用软件进行系统测试时,必须考虑性能测试。一般而言,Web 应用软件最常用的性能指标是并发用户数。23.软件
34、可靠性分析方法通常不依赖于概率统计的方法,下面属于软件可靠性分析方法的是(分数:2.00)A.失效模式影响分析法(FMEA 法)B.故障树和事件树分析法C.潜在线路分析法D.以上全部 解析:解析 目前主要的软件可靠性分析方法有失效模式影响分析法、严酷度分析法、故障树分析法、事件树分析法、潜在线路分析法。24.软件测试是软件开发过程巾重要和不可缺少的阶段,其包含的内容和步骤甚多,而测试过程的多种环节中最基础的是(分数:2.00)A.集成测试B.单元测试 C.系统测试D.验收测试解析:解析 软件测试是软件开发过程中重要和不可缺少的阶段,其包含的内容和步骤甚多,而测试过程的多种环节中最基础的是单元测
35、试。25.对于软件集成的进度优先级高于软件质量的项目,我们通常采用的集成测试方法是(分数:2.00)A.基于风险的集成测试B.基于路径的集成测试C.基于调用图的集成测试D.基于进度的集成测试 解析:解析 在集成测试中,进度压力是每个软件开发项目都会遇到的问题,为了完成进度很多项目往往会牺牲部分质量,并加班加点的工作,基于进度的集成就是在兼顾进度和质量两者之间寻找一个均衡点,该集成基本策略就是把最早可获得的代码拿来立即进行集成,必要时开发桩模块和驱动模块,在最大限度上保持与开发的并行性,从而缩短项目集成的时间,因此其主要适应于软件的进度优先级高于质量的项目。二、论述题(总题数:3,分数:50.0
36、0)针对以下 C 语言程序,按要求回答问题。已知 link.c 程序如下:/*link.c 程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入节点、删除节点和链表反转操作*/#includestdio.h#includestdlib.htypedef struet list_node*list_pointer; /定义链表指针typedef struct list_node /定义链表结构int date;list_pointer link;list node;/用到的操作函数1ist_pointer create(); /建立一个单向链表vold insert(
37、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 node,trail;li
38、st_pointer*p=ptr;int choose,location,i;printf(“you should creale a link first:/n“);/建立一个单向链表ptr=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 number 2,you can dele
39、te a node from the link/n“);printf(“input number 3,you can invert the link/n“);printf(“please input your choice/n“);scanf(“d“,choose);while(choose!=0)switch(choose)case 1:i=1;while(ilocation)node=node-link;insert(p,node);/*p 为指向 ptr 的指针*/print(ptr);break;case 2:printf(“you will delete a node from th
40、e 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);brcak;ease 3:printf(“you will invert the link/n“);ptr=invert(ptr);print(ptr);break
41、;default;break;return-1;printf(“please input your choiee/n“);seanf(“d“,choose);printf(“please input you choice/n“);scanf(“d“,choose);retnrn 0;/根据用户的输入数值建立一个新的单向链表;list_pointer create()int i,current,length;list_pointer p1,p2,head;prinff(“please input the node number of the link:/n“);scanf(“d“,length)
42、;printf(“the nnmber of the link is:d“,length);printf(“please input the dais for tile link node:/n“);i=0;p1=p2=(list_pointer)malloc(sizeof(list_node);head=p1;for(i=1;ilength;i+)scanf(“d“,current);p1-data=curren1:。 p2-link=p1;p2=p1;p1=(list_pointer)malloc(sizeof(list_node);p2-link=NULL;return head;(分数
43、:20.00)(1).画出主函数 main 的控制流程图。(分数:10.00)_正确答案:(主函数的控制流程如下图所示。*)解析:(2).设计一组测试用例,尽量使 main 函数的语句覆盖率能达到 100%。如果认为该函数的语句覆盖率无法达到 100%,需要说明原因。(分数:10.00)_正确答案:(设计测试用例如下:输入数据:choose=0 预期输出:0输入数据:choose=1 预期输出:在链表某位置的节点后插入一个节点输入数据:choose=2 预期输出:删除链表中某个位置的节点输入数据:choose=3 预期输出:反转链表的链接顺序输入数据:choose=其他非零数 预期输出:-1)
44、解析:26.采用条件覆盖为下面的程序设计测试用例,要求条件覆盖率达到 100%。已知程序源代码如下:dim a,b As Integerdim c As Doubleif(a0 And b0)then c=c/aendifif(a1 or c1)then c=c+1endifc=a+b(分数:15.00)_解析:以下是一个自动饮料售货机软件的操作规格说明,请按要求回答问题。设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下:有一个处理单价为 1 元 5 角钱的盒装饮料的自动售货机软件。若投入 1 元 5 角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是
45、2 元硬币,在送出饮料的同时退还 5 角硬币。(分数:15.00)(1).试利用因果图法,建立该软件的因果图。(分数:7.50)_正确答案:(原因:投入 1 元 5 角硬币投入 2 元硬币按“可乐”按钮按“雪碧”按钮按“红茶”按钮结果:退还 5 角硬币送出“可乐”饮料送出“雪碧”饮料送出“红茶”饮料中间状态:11 已投币12 已按钮然后根据上述原因和结果,以及各状态间的关系,画出因果图,如下图所示。*)解析:(2).设计测试该软件的全部测试用例。(分数:7.50)_正确答案:(将上述因果图转换为判定表,如下表所示,每一列可以作为确定测试用例的依据。1 2 3 4 5 6 7 8 9 10 11
46、输入 1 元 5 角硬币(1) 1 1 1 1 0 0 0 0 0 0 0输入 2 元硬币 (2) 0 0 0 0 1 1 1 1 0 0 0按“可乐”按钮 (3) 1 0 0 0 1 0 0 0 0 1 0按“雪碧”按钮 (4) 0 1 0 0 0 1 0 0 0 1 0输入按“红茶”按钮 (5) 0 0 1 0 0 0 1 0 0 0 1已投币 (11) 1 1 1 1 1 1 1 1 0 0 0中间节点已按钮 (12) 1 1 1 0 1 1 1 0 1 1 1退还 5 角硬币 (21) 0 0 0 0 1 1 1 0 0 0 0送出“可乐”饮料(22) 1 0 0 0 1 0 0 0 0 0 0送出“雪碧”饮料(23) 0 1 0 0 0 1 0 0 0 0 0输出送出“红茶”饮料(24) 0 0 1 0 0 0 1 0 0 0 0)解析:解析 对自动饮料售货机的软件进行基于因果图的黑盒测试