全国计算机等级考试四级软件测试工程师真题2010年3月
(总分100, 做题时间120分钟)
一、选择题(每小题2分,共50分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
1. 
以下叙述中正确的是
A 可跟踪性分析是在整体上分析整个系统的资源分配策略
B 关键性分析是标识原始需求和相应开发结果之间关系的能力
C 接口分析必须关注三种接口:用户接口、硬件接口和软件接口
D 评估仅在软件开发的最后阶段进行,以确认产品是否符合规模说明
2. 
场景测试方法是基于IBM推行的RUP的测试用例生成方法。该方法的出发点是
A 事件流
B 数据流
C 控制流
D 用例
3. 
下面一段小程序是判断一个长度为n的字符数组是否中心对称。例如,“abcddcba”或“abcdcba”就是中心对称。作为内部边界值,应填入()内的判断应是
A i<j
B i==j(判等)
C i>j
D i!=j(判不等)
4. 
检查系统能否正确地接受输入,能否正确地输出结果,这属于
A 安全性测试
B GUI测试
C 功能测试
D 协议一致性测试
5. 
检查是否存在“已定义但未使用”的变量引用异常应属于
A 静态分析
B 动态分析
C 代码执行
D 调试
6. 
如果程序通过了百分之百的代码覆盖率测试,则说明程序满足了
A 语句覆盖
B 编程规范
C 设计规格
D 功能需求
7. 
下面有关逻辑覆盖的说法中错误的是
A DDP覆盖是判定覆盖的一个变体
B 满足条件覆盖一定也满足判定覆盖
C 指令块覆盖属于语句覆盖
D 若判定覆盖率达到100%,则语句覆盖率一定也达到100%
8. 
对于具有串联型分支结构的程序,如果有7个判断语句串联,则使用正交实验设计法,至少需要的测试用例数应为
9. 
考虑一个计算平方根的函数,其规格说明如下: ■输入:浮点数 ■输出:浮点数 ■规格:当输入一个大于或等于零的浮点数时,函数输出其正的平方根并返回true;当输入一个小于零的浮点数时,函数显示出错信息“非法输入值”并返回false。 按照规范导出法,应设计的测试用例数至少应为
A 1
B 2
C 3
D 4
10. 
适合使用自底向上的增量式集成方式进行集成和测试的产品应属于
A 使用了严格的净室软件工程过程的产品
B 控制模块具有较大技术风险的产品
C 采用了契约式设计的产品
D 在极限编程中使用了探索式开发风格的产品
11. 
以下哪种软件测试属于软件性能测试的范畴
A 分支覆盖测试
B 极限测试
C 负载测试
D 硬件兼容性测试
12. 
以下关于软件性能测试的说法中,正确的是
A 达到百分之百的语句覆盖是软件性能测试的一个前提条件
B 并发进程数是度量软件性能的一项基本指标
C 探测软件在满足预定的性能需求的情况下所能负担的最大压力是失效恢复测试的主要目的之一
D 发现压力下软件功能的缺陷是软件性能测试的主要目的之一
13. 
以下关于软件可靠性测试的说法中,正确的是
A 软件可靠性测试能有效地减少软件在恶意使用下出现崩溃的次数
B 软件可靠性测试的主要目的是度量软件的可靠性
C 在一次软件可靠性测试中,执行的测试用例可以不完全符合所定义的软件运行剖面
D 软件可靠性测试使用的测试用例必须满足语句覆盖
14. 
以类为单元进行单元测试时,以下说法中正确的是
A 一个测试用例可以调用该类的多个方法,但每个方法只能调用一次
B 一个测试用例只能调用在该类中定义的方法,不能调用在该类的父类中定义的方法
C 由该类方法组成的任何一个序列都是一个合理的测试用例
D 针对一个类的多个实例间协作的测试仍然属于面向对象单元测试的范畴
15. 
以下关于面向对象软件测试的说法中,错误的是
A 不变式边界测试是一种类级别的单元测试技术
B 对于一棵继承树上的多个类,只有处于叶节点的类需要测试
C 测试动态绑定是类树测试的一个目标
D 在面向对象单元测试中,等价类划分测试可以用于方法级别的测试
16. 
以下关于面向对象软件集成测试的说法中,正确的是
A 大突击测试总是面向对象软件集成测试效果最差的方法
B 基于判定表的测试是面向对象软件集成测试的常用方法
C 大突击测试无需增量集成
D 自底向上集成需要开发的测试代码总是比自顶向下集成需要开发的测试代码多
17. 
以下关于Web应用软件测试的说法中,正确的是
A 内容测试是Web应用软件易用性测试的一项重要内容
B Web应用软件虽然需要频繁地进行演化,但不需要频繁地进行测试
C Cookie安全性测试是Web应用软件安全性测试的一项重要内容
D Web应用软件只能进行白盒测试,不能进行黑盒测试
18. 
以下关于Web应用软件测试的说法中,正确的是
A Web应用软件安全性测试只关注用户能否绕开访问控制使用超越访问权限的内容
B Web应用软件的性能不仅与Web应用软件自身的代码有关,还可能与所用的Web服务器、中间件服务器以及数据库服务器有关
C 测试Web应用软件是否支持不同的浏览器是Web应用软件表示层测试关注的一项主要内容
D 对于没有使用数据库的Web应用软件,不需要进行性能测试
19. 
以下哪一项属于软件功能易用性测试关注的内容
A 软件是否能帮助用户减少输入中的重复劳动
B 软件界面的色彩是否协调
C 软件是否允许用户导入由该软件以前版本生成的数据
D 软件的界面风格是否与同类软件的界面风格一致
20. 
以下哪一项不属于数据兼容性测试关注的范畴
A 一个Web应用软件是否支持不同的关系型数据库
B 一个浏览器是否同时支持不同版本的HTML文件格式
C 一个排版软件是否可以打开该软件以前版本保存的文件
D 一个文字处理软件是否可以打开其他文字处理软件保存的文件
21. 
下列有关测试过程抽象模型的描述中正确的是
A V模型指出,软件测试要尽早准备,尽早执行,只要某个测试达到了准备就绪点,测试执行活动就可开展
B W模型强调,测试伴随着整个软件开发周期同步进行,而且测试的对象不仅仅是程序,需求、设计也同样要测试
C H模型指出,单元测试和集成测试应检测程序的执行是否满足软件设计的要求
D X模型提出针对完整的程序进行集成的编码和测试
22. 
以下活动中,哪个不属于测试计划的内容
A 为测试各项活动制定一个现实可行的综合的计划
B 确定测试过程中每个测试阶段的测试完成标准
C 识别测试活动中各种风险,并给出风险应对措施
D 分析测试需求,并制定测试方案
23. 
以下有关回归测试的说法中错误的是
A 严格来说,回归测试不是一个测试阶段,只是一种可以用于各个测试阶段的测试技术
B 回归测试的目标是保证被测应用在系统被修改和扩充后,各项功能依然正确
C 回归测试可以在系统和验收测试环境下进行
D 回归测试适合采用传统手工方法来完成,而不适合使用自动化测试工具来完成
24. 
软件静态分析一般包括:控制流分析、数据流分析、接口分析,以及
A 表达式分析
B 功能分析
C 边界值分析
D 因果图分析
25. 
以下说法中错误的是
A 单元测试一般采用白盒测试方法,辅以黑盒测试方法
B 集成测试主要采用黑盒测试方法,辅以白盒测试方法
C 配置项测试一般采用白盒测试方法
D 系统测试一般采用黑盒测试方法
二、论述题(共3题,共50分)论述题答题必须用蓝、黑色钢笔或圆珠笔写在论述题答题纸的相应位置上。
1. 
考虑一个根据以下简单规则确认输入数有效性的应用程序: ■输入数由数字、符号“+”或“-”开始。 ■该数字或符号后面可接任意位数的数字。 ■这些数字可以有选择地后接用英文句号表示的小数点。 ■如果有一个小数点,则小数点后面应该有两位数字。 ■任何输入数,不管是否有小数点,都应该以空格结束。 请根据以上处理规则:
(1). 
画出相应的状态转换图。
(2). 
根据状态转换图,列出相应的状态转换表,给出“当前状态”、当前状态允许的“输入”和对应每一个输入的“下一个状态”。
(3). 
根据状态转换图和状态转换表,导出基本路径测试的测试用例及其覆盖的测试路径。
2. 
QESuite Web Version 1.0中,已知DUCHA 1.0工作专网系统测试项目的部分信息如下: ●测试版本:总计3个测试版本,按日期排序分别为DUCHA1.0_100105,DUCHA1.0_100205,DUCHA1.0_100210。 ●功能分类视图中部分待测区域及人员分配定义如下表所示:(表1) 已知在功能区域“工作平台/归档”下有一个软件问题处于“打开/再现”状态,下表中是该软件问题操作历史信息,请依据QESuite Web Version 1.0的软件问题生命周期定义和题中提供的相关人员分配和测试版本信息,填写表中空缺的操作历史信息。(表2)
3. 
已知C源程序如下: #include<stdio.h> #include<string.h> void reverse(char s[]){ int c,i,j; for(i=0,j=strlen(s)-1;i<j;i++,j--){ c=s[i]; s[i]=s[j]; s[j]=c; } } void getHex(int number,char s[]){ int i; i=0; while(number>0){ if(number%16<10) s[i++]=number%16+0; else switch(number%16){ case 10:s[i++]=A;break; case 11:s[i++]=B;break; case 12:s[i++]=C;break; case 13:s[i++]=D;break; case 14:s[i++]=E;break; case 15:s[i++]=F;break; default:printf("Error");break; } number/=16; } s[i]=\\0; reverse(s); } int main(){ unsigned int number; int i=0; char s[50]; printf("%s","please input number:\\n"); scanf("%d",&number); getHex(number,s); i=0; while(s[i]) printf("%c",s[i++]); return 0; }
(1). 
画出程序中所有函数的控制流程图;
(2). 
设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
答题卡