1、历年真题考试时间:120 试卷总分:100 全国计算机等级考试 2009 年 9 月四级软件测试工程师笔试真题 一、选择题(每小题 2 分,共 50 分)下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。 1. 软件验证和确认是保证软件质量的重要措施,它的实施应该针对 (2 分) o A:程序编写阶段 o B:软件开发的所有阶段o C:软件调试阶段 o D:软件设计阶段 2. 在软件测试用例设计的方法中,最常用的方法是黑盒测试和白盒测试,其中不属于白盒测试所关注的是 (2 分) o A:程序结构 o B:软件外部功能o C:
2、程序正确性 o D:程序内部逻辑 3. 在程序测试中,用于检查程序模块或子程序之间的调用是否正确的静态分析方法是 (2 分) o A:操作性分析 o B:可靠性分析o C:引用分析 o D:接口分析 4. 下列指导选择和使用测试覆盖率的原则中错误的是 (2 分) o A:覆盖率不是目的,仅是一种手段 o B:不要追求绝对 100的覆盖率o C:不可能针对所有的覆盖率指标来选择测试用例 o D:只根据测试覆盖率指标来指导测试用例的设计 5. 在以下有关逻辑覆盖的说法中错误的说法是 (2 分) o A:所有满足条件组合覆盖标准的测试用例集,也满足路径覆盖的覆盖标准o B:条件覆盖能够查出条件中包含
3、的错误,但有时达不到判定覆盖的覆盖率要求o C:路径覆盖的查错能力很强,但有时达不到条件组合覆盖的覆盖率要求o D:判定覆盖包含了语句覆盖,但它不能保证每个错误条件都能检查得出来 6. 走查是对软件进行静态测试的一种方法,以下不属于走查活动的是 (2 分) o A:计划走查会议 o B:准备测试用例o C:执行走查以发现和改正错误 o D:在走查过程中程序员逐条讲解自己的程序 7. 设有一段程序如下 满足判定条件覆盖的要求下,最少的测试用例数目是 (2 分) o A:6 o B:8o C:3 o D:4 8. 在以下有关集成测试的说法中,错误的说法是 (2 分) o A:自底向上集成的缺点是在
4、早期不能进行并行测试,不能充分利用人力o B:自底向上集成的优点是减少了编写桩模块的工作量o C:自顶向下集成的优点是能够较早地发现在高层模块接口、控制等方面的问题o D:自顶向下集成的缺点是需要设计较多的桩模块,测试的开销较大 9. 在集成测试阶段,人们关注的一种主要的覆盖是 (2 分) o A:功能覆盖 o B:语句覆盖o C:基本路径覆盖 o D:条件覆盖 10. 可跟踪性分析是一种重要的软件验证和确认方法。不属于可跟踪性分析的活动是 (2 分) o A:正确标识在需求规格说明中的每项需求 o B:从需求规格开始的正向跟踪应确保完全支持需求规格o C:每个当前的阶段产品的规格或特性应确保
5、被可跟踪的前驱规格所支持o D:确保所有不同接口规格说明的完整性 11. 以下关于软件性能测试的说法中,不正确的是 (2 分) o A:发现软件缺陷是性能测试的目的之一 o B:压力测试与负载测试的目的都是为了探测软件在满足预定的性能需求的情况下所能负担的最大压力o C:性能测试通常需要对测试结果进行分析才能获得测试结论o D:检验软件的最大负载是性能测试的目的之一 12. 以下哪种软件测试不属于广义软件性能测试的范畴 (2 分) o A:并发测试 o B:压力测试o C:兼容性测试 o D:负载测试 13. 以下关于软件可靠性与硬件可靠性主要区别的说法中,正确的是 (2 分) o A:软件的
6、每个拷贝都是完全一样的,而按照设计生产出来的同规格硬件总有微小差别o B:软件经常面临恶意的使用者,而硬件没有恶意的使用者o C:软件的使用者通常遍及整个世界,而硬件的使用者通常只局限于某个地区o D:软件的失效都是逻辑错误引起的,而硬件的失效都不是逻辑错误引起的 14. 以下关于面向对象软件测试的说法中,错误的是 (2 分) o A:对于面向对象程序集成测试而言,大突击集成可能导致测试不充分o B:面向对象软件只能采用白盒测试,不能采用黑盒测试o C:在存在多态的情况下,为了提高测试的充分性需要对所有可能的绑定都进行测试o D:单个成员方法的测试属于面向对象程序单元测试考虑的范畴 15. 以
7、下关于面向对象软件测试的说法中,正确的是 (2 分) o A:对于一个类的测试,一个测试用例只能包含对该类的一个方法的一次调用o B:基于判定表的测试不能用于面向对象程序的单元测试o C:不变式边界测试可用于类层次的测试,其目的是测试功能组合o D:对于抽象类,需要进行单元测试 16. 以下关于面向对象程序集成测试的说法中,正确的是 (2 分) o A:大突击集成在任何情况下都是效果最差的面向对象程序集成测试策略o B:自底向上集成和自顶向下集成都需要为集成测试开发大量辅助代码o C:协作集成从本质上讲是一种自底向上集成 o D:基干集成从本质上讲是一种自顶向下集成 17. 以下关于 Web
8、应用软件测试的说法中,正确的是 (2 分) o A:对 Web 应用软件进行性能测试时,不需要进行压力测试o B:内容测试是 Web 应用软件易用性测试的一项重要内容o C:Cookie 测试是 Web 应用软件功能测试的一项重要内容o D:是否存在无效链接是 Web 应用软件安全性测试关注的范畴 18. 以下哪一项属于软件易用性测试关注的范畴 (2 分) o A:软件是否能在多种操作系统下运行 o B:软件是否能与同类软件共享数据o C:软件是否能主动禁止用户可能进行的非法操作 o D:软件是否能抵御网络攻击 19. 以下哪一项属于数据兼容性测试关注的范畴 (2 分) o A:软件在异常退出
9、时是否会破坏正在处理的文件 o B:软件是否可以在不同的 J2EE 应用服务器上运行o C:软件同类功能的使用风格是否一致 o D:软件是否能打开以前版本保存的文件 20. 以下关于极限测试的说法中,正确的是 (2 分) o A:极限测试是一种针对极限编程的软件测试 o B:极限测试中所有的测试均由编码人员完成o C:与传统的软件测试相比,极限测试是一种更严格的测试o D:极限测试中只需要进行单元测试 21. 下列有关软件缺陷报告的编写原则中,哪个是错误的 (2 分) o A:一个软件缺陷报告中只应记录一个不可再划分的软件缺陷o B:软件缺陷报告的标题应该能够最简洁表达一个软件缺陷o C:软件
10、缺陷报告中应提供全面的有关该软件缺陷再现的信息o D:同一个软件缺陷可以被重复报告 22. 依据 QESuite Web Version 1.0 软件问题生命周期定义,对于一个处在“新建”状态的软件问题报告,下列哪个操作是不可能出现的 (2分) o A:校验 o B:关闭o C:验证 o D:分类与分配 23. 下列哪个不是测试环境的组成要素 (2 分) o A:软硬件 o B:技术文档o C:测试工具 o D:网络环境 24. 根据GBT155322008 计算机软件测试规范,软件测试管理主要包括:测试过程管理、测试评审管理,以及 (2 分) o A:测试用例管理 o B:测试环境管理o C
11、:配置管理 o D:测试系统管理 25. 根据GBT155322008 计算机软件测试规范,设计测试用例应遵循:基于测试需求的原则、基于测试方法的原则、兼顾测试充分性和效率的原则,以及 (2 分) o A:测试用例无冗余性原则 o B:测试执行可重复性原则o C:测试用例可操作性原则 o D:测试用例可管理性原则二、论述题(共 3 题,共 50 分)论述题答题必须用蓝、黑钢笔或圆珠笔写在论述题答题纸的相应位置上。1.请完成下列工作: (1)请给出与此有限状态机等价的控制流图;(4 分) (2)确定基本测试路径集;(9 分) (3)设计测试用例以覆盖基本测试路径。(7 分) (20 分) 参考答
12、案:2. 基本测试路径集 路径 1:S1S1 路径 2:S1S2S5 路径 3:S1S2S3S5 路径 4:S1S2S3S4S5 路径 5:S1S2S3S4S12.已知 C 源程序如下: *Input todays date,output tomorrows date* *version 2* #include struct ydate int day; int month; int year; int leap(struct ydate d) if(dyear4=0 else return 0; int numdays(struct ydate d) int day; static int
13、daytab= 31,28,31,30,31,30,31,31,30,31,30,31; if(leap(d) else day=daytabdmonth-1; return day; int main(void) struct ydate today,tomorrow; printf(“format of date is:year,month,day 输入的年,月,日之间应用逗号隔开n“); printf(“today is:“); scanf(“d,d,d“, while(0=todayyear |todayyear65535|0=todaymonth|today.month12| 0=t
14、odayday|todaydaynumdays(today) printf(“input date error!reenter the date!n“); printf(“today is:“); scanf(“d,d,d“, if(todayday!=numdays(today) tomorrowyear=todayyear; tomorrowmonth=todaymonth; tomorrowday=todayday+1; else if(todaymonth=12) tomorrowyear=todayyear+1; tomorrowmonth=1; tomorrowday=1; els
15、e tomorrowyear=todayyear; tomorrowmonth=todaymonth+1; tomorrowday=1; printf(“tomorrow is :d,d,dnn“, tomorrowyear,tomorrowmonth,tomorrowday); (1) 画出程序中所有函数的控制流程图;(10 分) (2) 设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到 100。如果认为该程序的语句或分支覆盖率无法达到 100,需说明为什么。(10 分) (20 分) 参考答案:函数的控制流程图如下: int leap(struct ydate d) if
16、 (d.year%4=0 else return 0; int numdays(struct ydate d) int day; static int daytab= 31,28,31,30,21,30,31,31,30,31,30,31; if(leap(d) else day=daytabd.month-1; return day; int main(void) struct ydate today,tomorrow; printf(“format of date is:year,month,day 输入的年,月,日之间应用逗号隔开n“); printf(“ today is:“); sc
17、anf(“%d,%d,%d“, while(0=today.year |today.year65535|0=today.month|today.month12| 0=today.day|today.daynumdays(today) printf(“input date error!reenter the date!n“); printf(“today is:“); scanf(“%d,%d,%d“, if(today.day!=numdays(today) tomorrow.year=today.year; tomorrow.month=today.month; tomorrow.day=t
18、oday.day+1; else if(today.month=12) tomorrow.year=today.year+1; tomorrow.month=1; tomorrow.day=1; else tomorrow.year=today.year; tomorrow.month=today.month+1; tomorrow.day=1; printf(“tomorrow is:%d,%d,%dnn“, tomorrow.year,tomorrow.month,tomorrow.day); 2.测试用例(见表一) 以上测试用例可使该程序所有函数的语句覆盖率和分支覆盖率均达到 100%。3. QESuite Web Version 10 中,已知 Lead 10 邮件系统测试项目的部分信息如下: 测试版本:总计 2 个测试版本,按日期排序分别为Lead10_090703,Lead10_090801 功能分类视图中部分待测区域及人员分配定义如下表一所示: 已知在功能区域“性能并发处理能力”下有一个软件问题处于“打开修复失败”状态,下表二中是该软件问题当前的部分操作历史信息,请依据QESuite Web Version 10 的软件问题生命周期定义和题中提供的相关人员分配和测试版本信息,填写表中空缺的操作历史信息。(每空 1 分) (10 分) 参考答案