全国计算机等级考试四级软件测试工程师真题2011年3月
(总分100, 做题时间120分钟)
一、选择题(每小题2分,共50分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
1. 
以下关于软件质量的说法中,错误的是
A 软件产品必须提供用户所需要的功能,并能正常工作
B 软件质量是产品、组织和体系或过程的一组固有特性,反映它们满足顾客和其他相关方面要求的程度
C 程序的正确性足以体现软件的价值
D 越是关注客户的满意度,软件就越有可能达到质量要求
2. 
以下关于软件测试原则的说法中,错误的是
A 在设计测试用例时,不但要包括合理的输入条件,还要包括不合理的输入条件
B 测试过程中某模块中查出的错误越多,该模块残留的错误就越少
C 坚持在软件开发各个阶段进行技术评审,才能在开发过程中尽早发现和预防错误
D 在测试过程中要严格按照测试计划执行,以避免发生疏漏或重复无效的工作
3. 
以下不属于软件需求分析阶段测试的内容是
A 通过场景走查和与用户沟通,看需求是否是用户“真”的需求
B 通过对开发进度、开发费用、产品性能、可靠性和内存使用等各方面需求的分析,看综合起来是否合理,是否有对需求的一个优先级安排
C 通过领域分析和与用户沟通,看需求是否是完备的
D 通过检查需求与实现环境的不相容之处,看需求是否可兼容
4. 
以下关于覆盖测试的说法中,错误的是
A 语句覆盖要求每行代码至少执行一次
B 在路径测试中必须用不同的数据重复测试同一条路径
C 路径测试不是完全测试,即使每条路径都执行了一次,程序还是可能存在缺陷
D 分支覆盖应使程序中每个判定的真假分支至少执行一次
5. 
以下不属于桌上检查的项目是
A 检查小组对程序进行模拟执行,以展示系统的不同构件如何相互作用,暴露程序被忽略的细节
B 检查变量的交叉引用表,重点是检查未说明的变量和违反了类型规定的变量
C 选择、激活路径,检查程序的语句代码
D 比较由程序员设计的控制流图和由实际程序生成的控制流图,寻找和解释每个差异,修改文档和校正错误
6. 
代码走查的目的是
A 发现缺陷、遗漏和矛盾的地方
B 确认程序逻辑与程序规格说明的一致性
C 验证需求变更的一致性
D 证明程序确实是按照用户的需求工作的
7. 
设有一个判断语句 if(!(ch>='0'&&ch<='9'))printf(“This is not a digit!\n”); else printf(“This is a digit!\n”); 为实现判定一条件覆盖,需要设计的测试用例个数至少应为
A 1
B 2
C 3  
D 4
8. 
以下的叙述中不是单元测试目的的是
A 验证代码是否与设计相符合
B 发现设计和需求中存在的缺陷
C 发现在编码过程中引入的错误
D 检查用户接口是否满足客户的需求
9. 
以下不属于集成测试层次的是
A 应用环境集成测试
B 模块内集成测试
C 子系统内集成测试
D 子系统间集成测试
10. 
开发单位内部的用户在模拟实际操作环境下进行的,开发人员参与的测试是
A 接受测试
B 6σ测试
C β测试
D α测试
11. 
以下关于Web应用软件测试的说法中,错误的是
A Cookie测试是Web应用软件功能测试的一项重要内容
B 链接测试是Web应用软件易用性测试的一项重要内容
C Web应用软件测试通常需要考虑安全性测试
D Web应用软件测试通常需要考虑性能测试
12. 
以下哪种软件测试不属于软件性能测试的范畴
A 覆盖测试
B 压力测试
C 负载测试
D 并发测试
13. 
以下哪一项属于Web应用软件业务层测试关注的范畴
A 浏览器兼容性测试
B 应用服务器兼容性测试
C 服务器端程序的功能测试
D 排版结构的测试
14. 
以下哪一种技术属于基于性能计数器的性能分析技术
A 字符串分析
B 处理器分析
C 变量分析
D 循环次数分析
15. 
以下关于Web应用软件易用性测试的说法中,错误的是
A Cookie测试是Web应用软件易用性测试的一项重要内容
B 排版结构测试是Web应用软件易用性测试的一项重要内容
C 并发测试不是Web应用软件易用性测试的一项重要内容
D 浏览器兼容性测试不是Web应用软件易用性测试的一项重要内容
16. 
以下关于软件可靠性的说法中,正确的是
A 软件发生物理退化是影响软件可靠性的重要因素
B 同一软件即使运行于不同硬件环境其可靠性保持相同
C 如果没有恶意的使用者,软件总是可靠的
D 软件可靠性与软件的使用方式密切相关
17. 
以下哪一项不属于数据兼容性测试关注的范畴
A 一个Web应用软件是否能支持以前版本使用的关系型数据库
B 一个杀毒软件是否会破坏其他软件保存的文件
C 一个文字处理软件能否处理其他文字处理软件保存的文件
D 一个文字处理软件能否处理以前版本保存的文件
18. 
以下关于面向对象软件测试的说法中,错误的是
A 面向对象软件的大突击集成测试只进行一轮,无需增量集成
B 测试一个类的不同实例间的协作属于面向对象软件单元测试考虑的范畴
C 测试动态绑定属于面向对象软件单元测试考虑的范畴
D 等价类划分是一种类树层次的测试技术
19. 
以下哪一项不属于软件易用性测试关注的范畴
A 软件是否能帮助用户减少输入中的重复劳动
B 软件的用户界面风格是否与其他软件一致
C 软件是否支持用户根据自己的需要进行定制
D 当执行耗时较长的任务时,软件是否能定时向用户提示当前任务完成的进度
20. 
以下关于面向对象程序单元测试的说法中,正确的是
A 只要对类的每个成员方法都进行了测试就可完成对该类的单元测试
B 不需要对抽象类进行单元测试
C 基于判定表的测试可以用于面向对象程序的单元测试
D 不变式边界测试是一种针对类树多态性的测试技术
21. 
以下有关测试过程质量控制的描述中,错误的是
A 测试过程中可以对测试需求进行重新获取
B 在补充完善测试用例过程中应该进行变更控制
C 对测试过程的度量和分析可有效提高测试效率,降低测试风险
D 测试过程中,若相同时间间隔内发现的缺陷数量呈收敛趋势,则可结束测试
22. 
以下有关测试活动的描述中,错误的是
A 测试策划中的活动是确定测试范围、测试环境和制定测试计划
B 测试用例设计是测试设计与实现的主要内容
C 测试执行中可随时修订测试计划
D 测试总结的目的是对测试结果进行分析,以确定软件产品质量的当前状态
23. 
以下有关自动化测试的说法中,错误的是
A 自动化测试过程的核心内容是执行测试用例
B 采用技术手段保证自动化测试的连续性和准确性很重要
C 自动化辅助手工测试过程中,设置和清除测试环境是自动开展的
D 自动化测试过程中,除选择测试用例和分析失败原因外,其他过程都是自动化开展的
24. 
白盒测试方法不包括
A 数据流测试 
B 控制流测试
C  随机测试
D 符号求值
25. 
以下有关软件验收测试的说法中,错误的是
A 验收测试一般由软件的需方组织
B 验收测试的技术要求与系统测试不同
C 验收测试可委托第三方测试机构进行
D 验收测试由独立于软件开发的人员实施
二、论述题(共3题,共50分)
论述题答题必须用蓝、黑色钢笔或圆珠笔写在论述题答题纸的相应位置上。
1. 
论述题1(20分): 设有一个大学信息学院学生管理系统软件,其学生文件Student记录的部分属性包括Name、Num、Age、Sex、Dept等,其中: Name(学生名)要求最少2个字符,最多8个字符; Num(学号)要求是10位无符号整数,取值范围为2010200001~2010203335; Age(年龄)要求是2位无符号整数,取值范围为12~99; Sex(性别)是枚举型,只有两个取值male(男)、female(女); Dept(系名)是枚举型,取值可以是AT(自动化系)、CS(计算机系)、ET(电子系)、MN(微纳电子系)、SW(软件学院)。 现有一个新开发的查询程序,要求输入学生年龄的上限A、性别S、系名D,利用文件Student查询所有年龄小于A岁且性别为S的D系的学生并输出这些学生的姓名和年龄。 请针对此程序完成以下工作:
(1). 
给出该查询程序的查询条件表达式。(2分)
(2). 
用等价类测试方法给出输入条件的等价类表。(18分)
2. 
论述题2(10分): QESuite Web Version 1.0中,已知某认证网关系统测试项目的部分信息如下: •测试版本:总计4个测试版本,按日期排序分别为SAG2.0_110209,SAG2.0_110225,SAG2.0_1110303,SAG2.0_110309。 •功能分类视图中部分待测区域及人员分配定义如下表所示: 下表是功能区域“性能/网关传输延迟”下某一个软件问题的操作历史信息,请依据QESuite Wet,Version 1.0的软件问题生命周期定义和题中提供的相关人员分配和测试版本信息,且假设已知“执行操作”均正确,请找出下表中的错误并说明理由。
3. 
论述题3(20分): 已知C源程序如下: /*分数运算 fsys.c*/ #include<stdio.h> int main() { long int a,b,c,d,i,x,y,z; char op; printf("两分数b/a,d/c作+、-、*、/四则运算。结果为分数。\n"); printf("请输入分数运算式:b/a op d/c\n"); scanf("%ld/%ld%c%ld%ld",&b,&a,&op,&d,&c); if(a==0||c==0){ printf("分母为0,输入错误!\n"); return(0); } if(op=='+'){ y=b*c+d*a; x=a*c; /*运算结果均为y/x*/ } if(op=='-'){ y=b*c-d*a; x=a*c; } if(op=='*'){ y=b*d; x=a*c; } if(op=='/'){ y=b*c; x=a*d; } z=x; if(x>y)z=y; i=z; while(i>1){ if(x%i==0&&y%i==0){x=x/i;y=y/i;continue;}; i——; } printf("%ld/%ld%c%ld/%ld=%ld/%ld.\n",b,a,op,d,c,y,x); return 0; }
(1). 
画出程序中main函数的控制流程图。
(2). 
设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如果认为该程序的语句覆盖率或分支覆盖率无法达到100%,需说明为什么。
答题卡