1、2010年 9月计算机四级软件测试工程师真题试卷及答案与解析 一、选择题(每小题 2分,共 50分) 下列各题 A、 B、 C、 D四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。 1 下列有关软件质量的叙述中,错误的是 A) 软件质量不仅包括软件产品的质量,还包括软件过程的质量 B) 明确的软件质量属性是指在合同或行业标准中规定必须实现的质量要求 C) 隐含的软件质量属性在合同或行业标准中没有规定,因此在产品开发时不必专门考虑 D) 软件的功能和性能必须结合在一起考虑 2 下列有关软件测试的叙述中,正确的是 A) 测试是软件开发中一个单独的阶段,其目的是
2、对已实现的程序编码进行正确性检验 B) 一个成功的测试能够验证程序的确做了它应该做的事情 C) 根据 80/20的原则,优秀的软件开发人员所编写的程序错误少,因此时于他们的程序,重点不应放在缺陷测试上 D) 在软件过程的早期寻找尽可能多的错误符合软件测试的原则 3 下列有关白盒测试的叙述中,错误的是 A) 白盒测试是在同时拥有源代码和可执行代码的情形下才可以进行的一种软件测试方法 B) 白盒测试应该由开发人员实施,因为只有 他们才能够访问测试执行所涉及的代码 C) 即使对所有的源代码都进行了 100%的逻辑覆盖测试,也不能保证程序中没有错误 D) 软件测试人员制定测试计划的目的是想尽可能多地对
3、源代码进行测试 4 下列有关黑盒测试的叙述中,错误的是 A) 黑盒测试是在不考虑源代码的情形下进行的一种软件测试方法 B) 最好由测试人员、最终用户和开发人员组成的团队来实施黑盒测试 C) 黑盒测试主要是通过对比和分析实测结果和预期结果来发现它们之间的差异,所以黑盒测试又称为 “数据驱动 ”测试 D) 数据流测试是一种黑盒测试方法 5 走查是一种重要的审查方法,下列所述的审查活动中,不属于走查的是 A) 审查小组的组织者事先把相关的设计文档、源程序和其他材料发给每一个小组成员,要求他们预先了解审查的内容 B) 测试员事先根据审查的源代码准备一批测试用例 C) 程序员在小组审查会上向全体审查人员
4、逐条讲解自己编写的程序 D) 所有参与审查的人员集体扮演 “计算机 ”的角色,使用事先准备的测试用例按照源程序规定的顺序逐条执行,讨论可能出现的问题 6 下面有关软件测试的叙述中,不属于 H模型核心思想的是 A) 软件测试不仅仅指测试的执行,还包括很多 其他的活动 B) 软件测试是一个独立的流程,贯穿产品整个开发周期,与其他流程并发地进行 C) 软件测试要尽早准备,尽早执行 D) 软件测试不同层次的测试活动严格按照某种线性次序执行 7 下面有关路径测试的叙述中,错误的是 A) 路径覆盖是最强的覆盖测试,它不但能发现其他覆盖测试能发现的问题,还能发现其他覆盖测试不能发现的问题 B) 测试员不可能
5、对任何一个程序都完成 100%的路径测试 C) 不提倡用不同的数据重复测试同一条路径 D) 即使每条路径都执行了一次,程序还是可能存在缺陷 8 同行评审主要包括 管理评审、技术评审、过程评审和 A) 需求评审 B) 文档评审 C) 质量评审 D) 风险评审 9 对于如下给出的程序段: if(A B) and(C=5) then do P1; 若考虑满足条件 /判定覆盖原则以及内部边界条件,需要设计的最小测试输入数据集可能是 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=
6、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 下列关于逻辑覆盖的说法中,错误的是 A) 满足条件覆盖的测试不一定满足判定覆盖 B) 满足条件组合覆盖的测试一定满足判定覆盖、条件覆盖和判定 /条件覆盖 C) 满足路径覆盖的测试也一定满足条件组合覆盖 D) 满足判定 /条件覆盖的测试也一定满足判定覆盖和条件覆盖 11 以下关于软件性能测试的说法中,正确的是
7、 A) 对于没有并发的应用系统而 言,响应时间与吞吐量成反比关系 B) 应用系统的资源利用率越高,性能也就越好 C) 软件性能测试是从用户视角考察软件性能 D) 并发进程数是软件性能测试中一种常用的性能指标 12 以下哪一种技术属于基于性能计数器的分析技术 A) 数据流分析 B) 指针分析 C) 时间序列分析 D) 进程分析 13 以下哪种软件测试属于软件性能测试的范畴 A) 路径覆盖测试 B) 并发测试 C) 安全性测试 D) 健壮性测试 14 以下关于软件可靠性测试的说法中,正确的是 A) 软件可靠性测试是一种比白盒测试更 严格的软件测试 B) 软件可靠性测试的代价通常比较高 C) 软件可
8、靠性测试本质上是一种黑盒单元测试 D) 软件可靠性测试不适用于面向对象软件测试 15 以下关于面向对象软件测试的说法中,正确的是 A) 单个成员方法的测试不属于面向对象单元测试考虑的范畴 B) 等价类划分测试只适用于传统软件的测试,不适用于面向对象软件的测试 C) 基于判定表的测试适用于面向对象软件的测试 D) 抽象类无法进行单元测试 16 以下关于面向对象软件测试的说法中,正确的是 A) 大突击集成是最有效的面向对象软件集成测试策略 B) 在面向对象软件的单元测试中,一棵继承树上的每个类都需要进行测试 C) 针对一个类的多个实例间协作的测试属于面向对象软件集成测试考虑的范畴 D) 在面向对象
9、软件的单元测试中,基于判定表的测试是类层次测试的常用方法 17 以下关于 Web应用软件测试的说法中,正确的是 A) 排版结构测试是数据层测试关注的内容 B) 链接测试是 Web应用软件内容测试的重要内容 C) 在对 Web应用软件进行系统测试时,通常需要考虑性能测试 D) 测试 Web应用软件在多用户的情况下是否会出现系统崩溃,属于 Web应用软件可 靠性测试考虑的范畴 18 以下关于 Web应用软件测试的说法中,正确的是 A) 应用服务器兼容性测试是 Web应用软件业务层测试的一项内容 B) 浏览器兼容性测试是 Web应用软件安全性测试的一项内容 C) Web应用软件压力测试的主要内容是并
10、发测试 D) 表单测试是 Web应用软件易用性测试的一项内容 19 以下哪一项属于软件易用性测试关注的内容 A) Web应用软件是否支持不同厂商开发的浏览器 B) 软件是否提供图形用户界面 C) 软件提供的功能是否丰富 D) 在处理复杂任务时,软件的响应时间是否符合需 求 20 以下哪一项属于数据兼容性测试关注的范畴 A) 一个软件是否支持不同的操作系统 B) 一个杀毒软件是否会误删其他软件保存的文件 C) 一个文字处理软件的操作方式是否与同类软件的操作方式一致 D) 一个电子邮件收发软件是否可以导入以前版本保存的邮件 21 下列有关测试过程抽象模型的描述中,正确的是 A) V模型中,单元测试
11、验证的是程序编码 B) W模型强调,测试伴随着整个软件开发周期同步进行,测试的对象是程序和设计 C) H模型的提出源自软件开发中的活动常常是交叉进行的,存在反复触发、迭代的关 系 D) X模型提出针对完整的程序进行集成的编码和测试 22 下列有关测试执行管理的描述中,错误的是 A) 测试用例执行要求保证测试结果准确完整 B) 对测试结果的追踪应该可追溯到具体责任人 C) 测试执行完成后,并不意味着测试项目的结束 D) 检查完所有测试用例的执行结果是否完整即可结束测试执行 23 以下有关自动化测试脚本的说法中,错误的是 A) 数据驱动脚本将测试输入存储在脚本中 B) 线性脚本容易受软件变化的影响
12、,且无共享和重用的脚本 C) 结构化脚本的优点是健壮性更好,可以对一些容易导致测 试失败的特殊情况进行处理 D) 共享脚本的维护开销低于线性脚本 24 以下哪一项不属于测试策划的内容 A) 确定测试的充分性要求 B) 建立测试环境 C) 提出测试的基本方法 D) 制定测试计划 25 单元测试的测试用例设计主要依据是 A) 需求规格说明 B) 概要设计说明 C) 接口规格说明 D) 详细设计说明 二、论述题( 3题,共 50分 ) 论述题答题必须用蓝、黑色钢笔或圆珠笔写在论述题答题纸的相应位置上,否则无效。 25 设计黑盒测试的测试用例 某图书出租商店欲开发一个租书信息管理系统,管理图书的租借业
13、务。 该系统的数据流图如下:26 根据系统的数据流图,画出对应的程序功能图。 (提示;在程序功能图中不考虑文件和与文件交互的数据流,并可用状态和迁移来描述。 ) 27 计算该程序功能图的 McCabe复杂性度量。 28 给出该程序功能图的基本测试路径集合。 28 已知 C源程序如下: /*/ /* 功能:检查输入的标识符是否符合 C语言规则 */ /*/ #include stdio.h #include string.h #include ctype.h #include conio.h #include malloc.h char*IsLegal(char*CheckWorD) ; con
14、st int MaxWordLen=32; char*ErrorMessages= /*错误信息列表 */ “合法 !“, “首字符只能是字母或下划线 !“, “常、变量只能由字母、下划线和数字构成 !“, “常、变量标识不能用 C语言关键字 !“。 “常、变量标识不能用 C语言预定义函数名 !“, “内存不够 !“ ; int main() char*Prompt=“C语言标识符的命名要遵守以下原则: “; char*TestWord; int i; TestWord=(char*)malloc(sizeof(char)*MaxWordLen); /*TestWord存放用户输入 */ if
15、(!TestWorD) return 1; /*显示部分提示信息 */ puts(Prompt); for(i=1;i =4; i+) puts(ErrorMessagesi); while(1) printf(“nn请输入一个标识符 (大写的 Q退出 ):“);/*提示 */ scanf(“%s“,TestWorD) ; /*得到用户输入 */ if(toupper)(TestWord0)=0) break; /*循环出口 */ prind(“n%s %s“,TestWord,IsLegal(TestWorD) );/*判定标识符的合法性 */ free(TesfWorD) ; return
16、 0; /*此函数检验标识符命名的合法性 */ char*IsLegal(ehar*CheckWorD) char*KeyWords=“auto“,“break“,“case“,“char“,“continue“,“const“,“default“, “do“,“double“,“else“,“enum“,extern“,“float“,“for“,“goto“, “if“,“int“,“long“,“noalias“,“register“,“return“,“short“, “signed“,“sizeof“,“static“,“struct“,“switch“,“typedef“, “un
17、ion“,“unsigned“,“void“,“volatile“,“while“,“defined“, “define“,“undef“,“include“,“ifdef“,“ifndef“,“endif“,“line“, “error“,“elif“,“pragma“; /*C关键字列表 */ char*Functions=“close“,“crest“,“eof“,“fclose“,“fcloseall“,“feof“,“fopen“, “ferror“,“fgetchar“,“fgets“,“fprintf“,“fputc“,“fputchar“, “fseek“,“get“,“put
18、ch“,“putc“,“printf“,“open“,“putchar“, “puts“,“read“,“scanf“,“abs“,“acos“,“asin“,“math“,“atan“, “atan2“,“atof“,“atoi“,“atol“,“ceil“,“dos“,“cosh“,ecvt“, “exp“,“fabs“,“floor“,“fmod“,“frexp“,“itoa“,“labs“,“ldexp“, “log“,“log10“,“modf“,“pow“,“rand“,“sin“,“sqrt“,“srand“, “strtod“,“strlol“,“tan“,“tanh“,“ul
19、toa“,“memset“,“strcpy“, “strcat“,“strchr“,“strcrap“,“calloc“,“isalnum“,“isalpha“, “toascii“,“tolower“,“tollpper“,“exit“); /*C主要预定义函数列表 */ char*Others=“_“; /*_也可以用于关键字,但我们不推荐您使用 !*/ int WordLength,i; char*WordTemp; WordLength=strlen(CheckWorD) ; /*检查标识符命名原则 1*/ if(isalpha(CheckWord0)=0) /*检查标识符命名原则 2
20、*/ for(i=0;i WordLength;i+) if(isalnum(CheekWordi=0) /*检查标识符命名原则 3*/ for(i=0;i 44;i+) if(!strcmp(CheckWord,KeyWordsi) return ErrorMessages3; /*检 查标识符命名原则 4 */ for(i=0;i 69;i+) if(!stremp(CheckWord,Functionsi) return ErrorMessages4; return ErrorMessages0; 29 参照 QESAT/C软件分析与测试工具的规定,画出程序中所有函数的控制流程图; 30
21、 设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率尽量达到最大。如果认为该程序的语句覆盖率或分支覆盖率无法达到 100%,需说明为什么。 2010年 9月计算机四级软件测试工程师真题试卷答案与解析 一、选择题(每小题 2分,共 50分) 下列各题 A、 B、 C、 D四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。 1 【正确答案】 C 2 【正确答案】 D 3 【正确答案】 A 4 【正确答案】 D 5 【正确答案】 C 6 【正确答案】 D 7 【正确答案】 A 8 【正确答案】 B 9 【正确答案】 A 10 【正确答案】 C 11 【正确
22、答案】 A 12 【正确答案】 D 13 【正确答案】 B 14 【正确答案】 B 15 【正确答案】 D 16 【正确答案】 B 17 【正确答案】 C 18 【正确答案】 A 19 【正确答案】 B 20 【正确答案】 D 21 【正确答案】 A 22 【正确答案】 D 23 【正确答案】 A 24 【正确答案】 B 25 【正确答案】 C 二、论述题( 3题,共 50分 ) 论述题答题必须用蓝、黑色钢笔或圆珠笔写在论述题答题纸的相应位置上,否则无效。 26 【正确答案】 27 【正确答案】 依据有向图 G环路复杂性公式: V(G)=m-n+2,其中, V(G)是环路个数, m是有向弧个数
23、, n是结点个数,从上图可知, m=10, n=9,则 V(G)=m-n+2=10-9+2=3,即该程序功能图的 McCabe复杂度为 3 28 【正确答案】 测试路径集合如下:29 【正确答案】 30 【正确答案】 测试用例: 输入: bookCount,输出:合法 ! 输入: puts,输出:常、变量标识不能用 C语言预定义函数名 ! 输入: 5student,输出:首字符只能是字母或下划线 ! 输入: stu+name,输出:常、变量只能由字母、下划线和数字构成 ! 输入: float,输出:常、变量标识不能用 C语言关键字 ! 输入: putsfloatstudentsnamechinachineseenglishchinachinesechinachina,输出:内存不够 ! 输入: _StuId,输出:合法 ! 该程序的语句覆盖率或分支覆盖率均无法达到 100%,因为该程序允许中间返回值。如果 if条件中任意一个成立就立即返回,那么剩 下的语句就无法执行;即使所有的 if条件均不成立。运行到最后,那么 if条件成立时的语句就无法执行,其覆盖率始终无法达到 100%。