
历年真题考试时间:120试卷总分:100
∙2010年9月全国计算机等级考试四级软件测试工程师笔试真题
一、选择题 (每小题2分,共50分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
∙1: 参:C
∙参考解析:软件质量是表征软件产品满足明确的和隐含的需求的能力的特性或特性的集合,它除了关注“明确的需求”外,还扩展到了“隐含的需求”。软件质量是各种特性的复杂组合,定义一个软件的质量,就等于为该软件定义一系列质量属性。C项叙述不准确。
∙
o试题内容:
o下列有关软件质量的叙述中,错误的是
o
▪A:软件质量不仅包括软件产品的质量,还包括软件过程的质量
▪B:明确的软件质量属性是指在合同或行业标准中规定必须实现的质量要求
▪C:隐含的软件质量属性在合同或行业标准中没有规定,因此在产品开发时不必专门考虑
▪D:软件的功能和性能必须结合在一起考虑
∙2: 参:D
∙参考解析:对于A项,软件测试贯穿于软件开发的整个过程,其功能是验证软件的功能是否按照预先的设想执行的。对于B项,一个成功的软件测试是发现了以前未发现的错误的测试。对于C项,根据80/20原则,如果发现一程序模块似乎比其它程序模块有更多的错误倾向时,则应当花费较多的时间和代价测试这个过程模块。D项正确。
∙
o试题内容:
o下列有关软件测试的叙述中,正确的是
o
▪A:测试是软件开发中一个单独的阶段,其目的是对已实现的程序编码进行正确性检验
▪B:一个成功的测试能够验证程序的确做了它应该做的事情
▪C:根据80/20的原则,优秀的软件开发人员所编写的程序错误少,因此对于他们的程序,重点不应放在缺陷测试上
▪D:在软件过程的早期寻找尽可能多的错误符合软件测试的原则
∙3: 参:A
∙参考解析:白盒测试是程序员在编程阶段对每个程序单元进行测试的最有效的测试类型,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。A项错误。
∙
o试题内容:
o下列有关白盒测试的叙述中,错误的是
o
▪A:白盒测试是在同时拥有源代码和可执行代码的情形下才可以进行的一种软件测试方法
▪B:白盒测试应该由开发人员实施,因为只有他们才能够访问测试执行所涉及的代码
▪C:即使对所有的源代码都进行了100%的逻辑覆盖测试,也不能保证程序中没有错误
▪D:软件测试人员制定测试计划的目的是想尽可能多地对源代码进行测试
∙4: 参:D
∙参考解析:数据流可看作是一种路径测试,它主要关注在一条路径上变量在何处定义,在何处使用,它是一种白盒测试方法。
∙
o试题内容:
o下列有关黑盒测试的叙述中,错误的是
o
▪A:黑盒测试是在不考虑源代码的情形下进行的一种软件测试方法
▪B:最好由测试人员、最终用户和开发人员组成的团队来实施黑盒测试
▪C:黑盒测试主要是通过对比和分析实测结果和预期结果来发现它们之间的差异,所以黑盒测试又称为"数据驱动"测试
▪D:数据流测试是一种黑盒测试方法
∙5: 参:C
∙参考解析:走查人员走查产品并且准备在走查会议上讨论他们对产品作出的评注、建议、问题,同时,协调人员指定一个测试组,为被审查程序准备一批有代表性的测试用例,提交给走查小组,在大多数的走查中,很多问题是在向程序员提问过程中发现的,而不是由测试用例直接发现的。
∙
o试题内容:
o走查是一种重要的审查方法,下列所述的审查活动中,不属于走查的是
o
▪A:审查小组的组织者事先把相关的设计文档、源程序和其他材料发给每一个小组成员,要求他们预先了解审查的内容
▪B:测试员事先根据审查的源代码准备一批测试用例
▪C:程序员在小组审查会上向全体审查人员逐条讲解自己编写的程序
▪D:所有参与审查的人员集体扮演"计算机"的角色,使用事先准备的测试用例按照源程序规定的顺序逐条执行,讨论可能出现的问题
∙6: 参:D
∙参考解析:软件测试的不同的测试活动可以是按照某个次序先后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试活动就可以开展。
∙
o试题内容:
o下面有关软件测试的叙述中,不属于H模型核心思想的是
o
▪A:软件测试不仅仅指测试的执行,还包括很多其他的活动
▪B:软件测试是一个的流程,贯穿产品整个开发周期,与其他流程并发地进行
▪C:软件测试要尽早准备,尽早执行
▪D:软件测试不同层次的测试活动严格按照某种线性次序执行
∙7: 参:A
∙参考解析:路径覆盖就是设计足够的测试用例,执行程序中所有可能的路径,尽管路径覆盖比判定/条件覆盖更强,但路径覆盖并不一定包含判定/条件覆盖。
∙
o试题内容:
o下面有关路径测试的叙述中,错误的是
o
▪A:路径覆盖是最强的覆盖测试,它不但能发现其他覆盖测试能发现的问题,还能发现其他覆盖测试不能发现的问题
▪B:测试员不可能对任何一个程序都完成l00%的路径测试
▪C:不提倡用不同的数据重复测试同一条路径
▪D:即使每条路径都执行了一次,程序还是可能存在缺陷
∙8: 参:B
∙参考解析:同行评审设计的内容很多,主要分为管理评审、技术评审、文档评审和过程评审。B项正确。
∙
o试题内容:
o同行评审主要包括管理评审、技术评审、过程评审和
o
▪A:需求评审
▪B:文档评审
▪C:质量评审
▪D:风险评审
∙9: 参:A
∙参考解析:条件/判定覆盖就是设计足够的测试用例,使得判定语句中每个条件的所有可能取值至少评价一次,同时每个判定语句本身的所有可能分支也至少评价一次,根据题中条件,A项正确。
∙
o试题内容:
o对于如下给出的程序段:
if(A>B)and(C=5)
then do P1;
若考虑满足条件/判定覆盖原则以及内部边界条件,需要设计的最小测试输入数据集可能是
o
▪A:(A=2,B=1,C=5),(A=2,B=1,C=4),(A=1,B=2,C=5),(A=1,B=1,C=5)
▪B:(A=2,B=1,C=5),(A=2,B=1,C=4),(A=1,B=2,C=5),(A=1,B=2,C=4)
▪C:(A=2,B=1,C=5),(A=2,B=1,C=4),(A=1,B=2,C=5)
▪D:(A=2,B=1,C=5),(A=1,B=2,C=4)
∙10: 参:C
∙参考解析:路径覆盖是设计足够的测试用例,执行程序中所有可能的路径,而条件组合覆盖是设计足够的测试用例,使得每个判定的所有可能的条件取值组合至少执行一次。二者无关系。
∙
o试题内容:
o下列关于逻辑覆盖的说法中,错误的是
o
▪A:满足条件覆盖的测试不一定满足判定覆盖
▪B:满足条件组合覆盖的测试一定满足判定覆盖、条件覆盖和判定/条件覆盖
▪C:满足路径覆盖的测试也一定满足条件组合覆盖
▪D:满足判定/条件覆盖的测试也一定满足判定覆盖和条件覆盖
∙11: 参:A
∙参考解析:对于B项,资源利用率反映的是在一段时间内资源平均被占用的情况。对于C项,软件性能测试有用户视角、管理员视角、开发人员视角。对于D项,并发进程数不是软件性能测试的指标。
∙
o试题内容:
o以下关于软件性能测试的说法中,正确的是
o
▪A:对于没有并发的应用系统而言,响应时间与吞吐量成反比关系
▪B:应用系统的资源利用率越高,性能也就越好
▪C:软件性能测试是从用户视角考察软件性能
▪D:并发进程数是软件性能测试中一种常用的性能指标
∙12: 参:D
∙参考解析:通过进程分析,可以进一步查看每个进程的性能指标,以确定哪个进程是影响性能的原因。进程分析是指出现性能瓶颈时,可以进一步查看每个进程的性能指标,以确定哪个进程是造成性能瓶颈的原因。D项正确。
∙
o试题内容:
o以下哪一种技术属于基于性能计数器的分析技术
o
▪A:数据流分析
▪B:指针分析
▪C:时间序列分析
▪D:进程分析
∙13: 参:B
∙参考解析:并发测试是指模拟多用户并发使用软件的情况,从而测试软件是否存在与并发有关的缺陷,B项正确。
∙
o试题内容:
o以下哪种软件测试属于软件性能测试的范畴
o
▪A:路径覆盖测试
▪B:并发测试
▪C:安全性测试
▪D:健壮性测试
∙14: 参:B
∙参考解析:软件可靠性测试是:(1)在规定的条件下,在规定的时间内软件不引起系统失效的概率。(2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。要进行测试需要经历确定可靠性目标,定义软件运行剖面,设计测试用例,实施可靠性测试,分析测试结果等阶段,因此软件可靠性测试代价非常高,软件可靠性既可用白盒测试又可用黑盒测试,软件可靠性测试也适用于面向对象软件测试。
∙
o试题内容:
o以下关于软件可靠性测试的说法中,正确的是
o
▪A:软件可靠性测试是一种比白盒测试更严格的软件测试
▪B:软件可靠性测试的代价通常比较高
▪C:软件可靠性测试本质上是一种黑盒单元测试
▪D:软件可靠性测试不适用于面向对象软件测试
∙15: 参:D
∙参考解析:抽象类中的方法没有具体的定义,不能进行方法层次的测试,方法层次的测试是单元测试中非常重要的方面,缺少了这一方面也就不能进行单元测试。
∙
o试题内容:
o以下关于面向对象软件测试的说法中,正确的是
o
▪A:单个成员方法的测试不属于面向对象单元测试考虑的范畴
▪B:等价类划分测试只适用于传统软件的测试,不适用于面向对象软件的测试
▪C:基于判定表的测试适用于面向对象软件的测试
▪D:抽象类无法进行单元测试
∙16: 参:B
∙参考解析:大突击集成是常用的集成策略,虽有自己的优点,也有一些缺陷,不是最有效的测试策略。针对一个类的多个实例间协作的测试属于单元测试,在单元测试中,由于集成和多态的使用,测试不能仅限于子类,还要考虑继承树上的各个父类。
∙
o试题内容:
o以下关于面向对象软件测试的说法中,正确的是
o
▪A:大突击集成是最有效的面向对象软件集成测试策略
▪B:在面向对象软件的单元测试中,一棵继承树上的每个类都需要进行测试
▪C:针对一个类的多个实例间协作的测试属于面向对象软件集成测试考虑的范畴
▪D:在面向对象软件的单元测试中,基于判定表的测试是类层次测试的常用方法
∙17: 参:C
∙参考解析:排版结构测试属于表示层的测试,链接测试是功能测试的内容。对于Web应用软件而言,性能是一个至关重要的因素。因此在对Web应用软件进行系统测试时,必须考虑性能测试。
∙
o试题内容:
o以下关于Web应用软件测试的说法中,正确的是
o
▪A:排版结构测试是数据层测试关注的内容
▪B:链接测试是Web应用软件内容测试的重要内容
▪C:在对Web应用软件进行系统测试时,通常需要考虑性能测试
▪D:测试Web应用软件在多用户的情况下是否会出现系统崩溃,属于Web应用软件可靠性测试考虑的范畴
∙18: 参:A
∙参考解析:浏览器兼容性测试是Web应用软件表示层的测试,表单测试属于功能测试的内容,压力测试的目的是检查系统在压力下的稳定性。A项正确。
∙
o试题内容:
o以下关于Web应用软件测试的说法中,正确的是
o
▪A:应用服务器兼容性测试是Web应用软件业务层测试的一项内容
▪B:浏览器兼容性测试是Web应用软件安全性测试的一项内容
▪C:Web应用软件压力测试的主要内容是并发测试
▪D:表单测试是Web应用软件易用性测试的一项内容
∙19: 参:B
∙参考解析:Web应用软件是否支持不同浏览器,软件功能是否丰富是功能测试的内容。在处理复杂性的响应时间是否符合要求是性能测试的内容,但和易用性测试无关。
∙
o试题内容:
o以下哪一项属于软件易用性测试关注的内容
o
▪A:Web应用软件是否支持不同厂商开发的浏览器
▪B:软件是否提供图形用户界面
▪C:软件提供的功能是否丰富
▪D:在处理复杂任务时,软件的响应时间是否符合需求
∙20: 参:D
∙参考解析:A、B、C均属于软件兼容性测试关注的内容,D属于数据兼容性关注的内容。
∙
o试题内容:
o以下哪一项属于数据兼容性测试关注的范畴
o
▪A:一个软件是否支持不同的操作系统
▪B:一个杀毒软件是否会误删其他软件保存的文件
▪C:一个文字处理软件的操作方式是否与同类软件的操作方式一致
▪D:一个电子邮件收发软件是否可以导入以前版本保存的邮件
∙21: 参:A
∙参考解析:W模型测试的对象除了程序和设计外,还包括需求。H模型的提出源自软件开发中的活动常常是交叉进行的,但反复触发、迭代的关系发生在软件测试活动内部,与其他活动无关。X模型提出针对单独的程序片段进行相互分离的编码和测试,不是针对完整的程序进行集成的编码和测试。
∙
o试题内容:
o下列有关测试过程抽象模型的描述中,正确的是
o
▪A:V模型中,单元测试验证的是程序编码
▪B:W模型强调,测试伴随着整个软件开发周期同步进行,测试的对象是程序和设计
▪C:H模型的提出源自软件开发中的活动常常是交叉进行的,存在反复触发、迭代的关系
▪D:X模型提出针对完整的程序进行集成的编码和测试
∙22: 参:D
∙参考解析:测试用例执行要求保证测试结果准确完整。测试执行完成后需要将测试报告或质量发送出去,并得到项目经理认可才算结束。只有检查过的所有测试用例的结果正确、准确完整才能结束测试执行。
∙
o试题内容:
o下列有关测试执行管理的描述中,错误的是
o
▪A:测试用例执行要求保证测试结果准确完整
▪B:对测试结果的追踪应该可追溯到具体责任人
▪C:测试执行完成后,并不意味着测试项目的结束
▪D:检查完所有测试用例的执行结果是否完整即可结束测试执行
∙23: 参:A
∙参考解析:数据驱动脚本将测试输入存储在的数据文件中,A项叙述不正确。
∙
o试题内容:
o以下有关自动化测试脚本的说法中,错误的是
o
▪A:数据驱动脚本将测试输入存储在脚本中
▪B:线性脚本容易受软件变化的影响,且无共享和重用的脚本
▪C:结构化脚本的优点是健壮性更好,可以对一些容易导致测试失败的特殊情况进行处理
▪D:共享脚本的维护开销低于线性脚本
∙24: 参:B
∙参考解析:建立测试环境是测试执行阶段的内容。
∙
o试题内容:
o以下哪一项不属于测试策划的内容
o
▪A:确定测试的充分性要求
▪B:建立测试环境
▪C:提出测试的基本方法
▪D:制定测试计划
∙25: 参:C
∙参考解析:单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的单元将在与程序的其他部分相隔离的情况下进行测试。单元测试的测试用例设计主要根据接口规格说明。
∙
o试题内容:
o单元测试的测试用例设计主要依据是
o
▪A:需求规格说明
▪B:概要设计说明
▪C:接口规格说明
▪D:详细设计说明
二、论述题 (共3题,共50分)论述题答题必须用蓝、黑色钢笔或圆珠笔写在论述题答题纸的相应位置上。
∙1: 参:
∙
o试题内容:
o(20分)设计黑盒测试的测试用例
某图书出租商店欲开发一个租书信息管理系统,管理图书的租借业务。
该系统的数据流图如下:
∙2: 参:
∙
o试题内容:
o(10分)
QESuite Web Version 1.0中,已知某安全文档管理系统测试项目的部分信息如下:
●在测试过程中先后产生4个测试版本,按日期排序分别为SEDM 1.0_101009,SEDM 1.0_101025,SEDM1.0_101103,SEDM1.0_101106。
●功能分类视图中部分待测区域及人员分配定义如下表所示:
∙3: 参:
(2)测试用例:
①输入:bookCount,输出:合法!
②输入:puts,输出:常、变量标识不能用C语言预定义函数名!
③输入:5student,输出:首字符只能是字母或下划线!
④输入:stu+name,输出:常、变量只能由字母、下划线和数字构成!
⑤输入:float,输出:常、变量标识不能用C语言关键字!
⑥输入:putsfloatstudentsnamechinachineseenglishchinachinesechinachina,输出:内存不够!
⑦输入:_StuId,输出:合法!
该程序的语句覆盖率或分支覆盖率均无法达到100%,因为该程序允许中间返回值。如果if条件中任意一个成立就立即返回,那么剩下的语句就无法执行;即使所有的if条件均不成立,运行到最后,那么if条件成立时的语句就无法执行,其覆盖率始终无法达到100%。
∙
o试题内容:
o(20分)
已知C源程序如下:
/**************************************************/
/*功能:检查输入的标识符是否符合C语言规则*/
/**************************************************/
#include #include #include #include #include char* IsLegal(char*CheckWor D.; const int MaxWordLen=32; char*ErrorMessages[]={/*错误信息列表*/ "合法!", "首字符只能是字母或下划线!", "常、变量只能由字母、下划线和数字构成!", "常、变量标识不能用C语言关键字!", "常、变量标识不能用C语言预定义函数名!", "内存不够!" }; int main() { char *Prompt="C语言标识符的命名要遵守以下原则:"; char *TestWord; inti; TestWord=(char *)malloc(sizeof(char)*MaxWordLen); /*TestWord存放用户输入*/ if(!TestWor D. return 1; /*显示部分提示信息*/ puts(Prompt); for(i=1;i<=4;i++){ puts(ErrorMessages[i]); } while(1){ printf("\n\n请输入一个标识符(大写的Q退出):");/*提示*/ scanf("%s",TestWor D.;/*得到用户输入*/ if(toupper)(TestWord[0]))==0) break;/*循环出口*/ printf("\n%s%s",TestWord,IsLegal(TestWor D.);/*判定标识符的合法性*/ } free(TestWor D.; return 0; } /*此函数检验标识符命名的合法性*/ char*IsLegal(char*CheckWor D. { char*KeyWords[]={"auto "do "if "signed "union "define "error关键字列表*/ char*Functions[]={"close "ferror "fseek "puts "atan2 "exp "log "strtod "strcat "toascii主要预定义函数列表*/ char*Others="_";/* _ 也可以用于关键字,但我们不推荐您使用!*/ int WordLength,i; char*WordTemp; WordLength=strlen(CheckWor D.; /*检查标识符命名原则1*/ if((isalpha(CheckWord[0])==0)&&(CheckWord[0]!=Others[0])) return ErrorMessages[1]; /*检查标识符命名原则2*/ for(i=0;i<WordLength;i++) if((isalnum(CheckWord[i]==0)&&(CheckWord[i]!=Others[0])) return ErrorMessages[2]; /*检查标识符命名原则3*/ for(i=0;i<44;i++) { if(!strcmp(CheckWord,KeyWords[i])) return ErrorMessages[3]; } /*检查标识符命名原则4*/ for(i=0;i<69;i++) { if(!strcmp(CheckWord,Functions[i])) return ErrorMessages[4]; } return ErrorMessages[0]; } (1)参照QESAT/C软件分析与测试工具的规定,画出程序中所有函数的控制流程图;(11分) (2)设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率尽量达到最大。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。(9分) 窗体底端
