1、计算机四级软件测试工程师-56 及答案解析(总分:65.00,做题时间:90 分钟)一、选择题(总题数:23,分数:45.00)1.对下列产品进行测试,要优先考虑自底向上集成策略的是 _。A采用契约式设计的产品 B高层接口变化极为频繁的产品C底层接口比较稳定的产品 D以上全部(分数:2.00)A.B.C.D.2.依据GB/T 155322008 计算机软件测试规范软件测试应由相对独立的人员进行。测试团队成员包含的工作角色有_。A) 测试负责人、测试分析员B) 测试设计员、测试程序员、测试员C) 测试系统管理员、配置管理员D) 以上全是(分数:2.00)A.B.C.D.3.对采用迭代或增量开发过
2、程模型开发的产品进行集成测试时最适合采用的集成策略是 _。A传统的集成测试策略 B基于使用的集成测试策略C基干集成测试策略 D高频集成测试策略(分数:1.00)A.B.C.D.4.比较传统的软件单元测试与面向对象软件的单元测试的内容,下列说法错误的是_。A) 传统的软件单元测试的对象是软件设计的最小单位模块,测试依据是详细设计说明书B) 单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误C) 面向对象软件很难对单个成员方法进行充分的测试,具有良好封装性的类称为单元测试的基本对象D) 面向对象软件的测试大多采用白盒测试技术,系统内多个模块可以并行的进行测试(分数:2.00)
3、A.B.C.D.5.在走查的过程中,参加审查的人员当中,程序编写者有 _。A1 个 B2 个C多于 2 个 D不确定(分数:2.00)A.B.C.D.6.下列不是面向对象主要特征的选项为_。A) 封装 B) 继承C) 实效 D) 多态(分数:2.00)A.B.C.D.7.使用白盒测试方法时,确定测试数据应根据 _ 和指定的覆盖标准。A程序的复杂结构 B程序的内部逻辑C使用说明书 D程序的功能(分数:1.00)A.B.C.D.8.下列哪种情况下可以进行单元测试_。(A) 每个模块的代码编制完成,并经过评审和验证确认没有语法错误(B) 每个模块的代码编制完成,不需经过评审和验证确认没有语法错误(C
4、) 部分模块的代码编制完成,并且已完成模块已经过评审和验证确认没有语法错误(D) 主要模块的代码编制完成,并且已完成模块已经过评审和验证确认没有语法错误(分数:2.00)A.B.C.D.9.极限编程的主要特点有_。A简单的分析设计 B频繁的客户交流 C增量式开发和连续的测试 D以上全部(分数:2.00)A.B.C.D.10.Myers 在 1979 年提出了一个重要观点,即软件测试的目的是为了_。A) 证明程序正确B) 查找程序错误C) 改正程序错误D) 验证程序无错误(分数:2.50)A.B.C.D.11.以下哪一项属于数据兼容性测试关注的范畴A) 一个软件是否支持不同的操作系统B) 一个杀
5、毒软件是否会误删其他软件保存的文件C) 一个文字处理软件的操作方式是否与同类软件的操作方式一致D) 一个电子邮件收发软件是否可以导入以前版本保存的邮件(分数:2.00)A.B.C.D.12.走查的最主要目标有发现缺陷、遗漏和矛盾的地方改讲产品考虑可替换的实现方法A) 和 B) 和C) 和 D) 、和(分数:2.00)A.B.C.D.13.以下关于 Web 应用软件测试的说法中,正确的是A) 内容测试是 Web 应用软件性能测试的一项重要内容B) 表单测试是 Web 应用软件易用性测试的一项重要内容C) 并发测试是 Web 应用软件安全性测试的一项重要内容D) Cookie 测试是 Web 应用
6、软件功能测试的一项重要内容(分数:2.00)A.B.C.D.14.测试用例的生命周期包括A) 用例创建 B) 进入测试任务,执行用例C) 测试执行结果存档 D) 以上全部(分数:2.00)A.B.C.D.15.为了提高测试的效率,正确的做法是_。A) 选择发现错误可能性大的数据作为测试用例B) 在完成程序的编码之后再制定软件的测试计划C) 随机选取测试用例D) 取一切可能的输入数据作为测试用例(分数:2.50)A.B.C.D.16.允许程序的控制流在出现特殊情况时跳转到特定的位置,这种面向对象编程语言的机制是A) 模态测试机制 B) 异常处理机制C) 特殊调整机制 D) 类关联机制(分数:2.
7、00)A.B.C.D.17.性能计数器是指各种与性能有关的资源利用率指标,综合利用性能计数器的分析技术是A) 进程分析 B) 内存和 CPU 分析C) 磁盘 I/O 分析 D) 以上全部(分数:2.00)A.B.C.D.18.测试的复用包括_。A) 测试用例的复用B) 软件缺陷报告的复用C) 软件过程信息的复用D) 以上全是(分数:2.00)A.B.C.D.19.关于易用性测试,说法错误的是_。A) 用户界面测试是软件易用性测试最重要的一项内容B) 对软件功能的动态关联进行测试可以通过检查菜单完成C) 使用软件的目的就是减少重复输入,减轻人工劳动,提高工作效率D) 检查和评估软件安装手册的正确
8、性和易用性是安装性测试的重要内容(分数:2.00)A.B.C.D.20.开始软件测试工作前具备的条件有 _。A具有测试计划 B具有软件测试所需的各种文档C软件源代码正确通过编译 D以上全部(分数:2.00)A.B.C.D.21.应用服务器的功能之一是公共服务,下列服务中是所有应用服务器都应提供的是A) 安全服务 B) 消息服务C) 日志服务 D) 邮件服务(分数:2.00)A.B.C.D.22.软件产品首先应该满足的属性是A) 客户的功能需求 B) 容错和纠错能力C) 性能需求 D) 可扩展性和灵活性(分数:2.00)A.B.C.D.23.以下哪一项不属于 Web 应用软件表示层测试关注的范畴
9、A) 排版结构的测试 B) 链接结构的测试C) 浏览器兼容性的测试 D) 应用服务器兼容性测试(分数:2.00)A.B.C.D.二、论述题(总题数:2,分数:20.00)已知 C 源程序如下:/*Input todays date,output tomorrows date*/*version 2*/#includestdio.hstruct ydateint day;int month;int year;int leap(struct ydate d)if(d.year%4=0elsereturn 0;int numdays(struct ydate d)int day;static int
10、 daytab=31,28,31,30,31,30,31,31,30,31,30,31);if(leap(d)elseday=daytabd.month-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=today.year| today.year65535 | 0=today.month | today.month12)
11、|0=today.day | today.daynumdays(today)printf(“input date error!reenter the day!/n“);printf(“today is:“);scanf(“%d,%d,%d“,if(today.day!=numdays(today)tomorrow.year=today.year;tomorrow.month=today.month;tomorrow.day=today.day+1;else if(today.month=12)tomorrow.year=today.year+1;tomorrow.month=1;tomorro
12、w.day=1;elsetomorrow.year=today.year;tomorrow.month=today.month+1;tomorrow.day=1;printf(“tomorrow is:%d,%d,%d/n/“,tomorrow.year,tomorrow.month,tomorrow.day);(分数:4.00)(1).画出程序中所有函数的控制流程图;(分数:2.00)_(2).设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到 100%。如果认为该程序的语句或分支覆盖率无法达到 100%需说明为什么。(分数:2.00)_下面是一段 C 程序,其功能为计算 1
13、 到所输入数值的逐步累加和,请阅读程序并完成要求。#includestdio.hint sum(int);void main()int num,k;printf(“Enter a number:“);seanf(“%d“,num);for(k=1;k=num;k+)printf(“1 to %d is %d/n“,k,sum(k);int sum(int n)int i,result=0;for(i=1;i=n;i+)result+=i;return result;(分数:16.00)(1).请画出此程序各函数的控制流程图。(分数:8.00)_(2).设计一组测试用例,使该程序所有函数的语句覆
14、盖率和分支覆盖率均能达到 100%。如果认为该程序的语句或分支覆盖率无法达到 100%,说明原因。(分数:8.00)_计算机四级软件测试工程师-56 答案解析(总分:65.00,做题时间:90 分钟)一、选择题(总题数:23,分数:45.00)1.对下列产品进行测试,要优先考虑自底向上集成策略的是 _。A采用契约式设计的产品 B高层接口变化极为频繁的产品C底层接口比较稳定的产品 D以上全部(分数:2.00)A.B.C.D. 解析:2.依据GB/T 155322008 计算机软件测试规范软件测试应由相对独立的人员进行。测试团队成员包含的工作角色有_。A) 测试负责人、测试分析员B) 测试设计员、
15、测试程序员、测试员C) 测试系统管理员、配置管理员D) 以上全是(分数:2.00)A.B.C.D. 解析:解析 目前业界通用的做法是单元测试由开发团队执行,而集成和系统测试用例则由专门的测试团队进行。其团队成员包含测试负责人、测试分析员、测试设计员、测试程序员、测试员、测试系统管理员、配置管理员。3.对采用迭代或增量开发过程模型开发的产品进行集成测试时最适合采用的集成策略是 _。A传统的集成测试策略 B基于使用的集成测试策略C基干集成测试策略 D高频集成测试策略(分数:1.00)A.B.C.D. 解析:解析 高频集成是指在软件开发过程中频繁地将新开发的代码与已有代码集成。最适用于采用迭代或增量
16、开发过程模型开发的产品进行集成测试。4.比较传统的软件单元测试与面向对象软件的单元测试的内容,下列说法错误的是_。A) 传统的软件单元测试的对象是软件设计的最小单位模块,测试依据是详细设计说明书B) 单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误C) 面向对象软件很难对单个成员方法进行充分的测试,具有良好封装性的类称为单元测试的基本对象D) 面向对象软件的测试大多采用白盒测试技术,系统内多个模块可以并行的进行测试(分数:2.00)A.B.C.D. 解析:解析 A、B 选项关于传统的软件单元测试的描述都是正确的,C 选项关于面向对象软件单元测试的描述也是正确的。D 选项
17、描述的内容不是面向对象软件测试的内容,而是传统的软件设计的单元测试的内容。所以不要产生混淆。5.在走查的过程中,参加审查的人员当中,程序编写者有 _。A1 个 B2 个C多于 2 个 D不确定(分数:2.00)A. B.C.D.解析:6.下列不是面向对象主要特征的选项为_。A) 封装 B) 继承C) 实效 D) 多态(分数:2.00)A.B.C. D.解析:解析 面向对象的三个特点是:封装、继承、多态。封装是指信息隐蔽及方法和变量在类中的封装。继承是指允许其他类通过继承直接获取父类的属性和方法。多态是指对一个类的引用可以与多个类的实现绑定。7.使用白盒测试方法时,确定测试数据应根据 _ 和指定
18、的覆盖标准。A程序的复杂结构 B程序的内部逻辑C使用说明书 D程序的功能(分数:1.00)A.B. C.D.解析:解析 使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准。8.下列哪种情况下可以进行单元测试_。(A) 每个模块的代码编制完成,并经过评审和验证确认没有语法错误(B) 每个模块的代码编制完成,不需经过评审和验证确认没有语法错误(C) 部分模块的代码编制完成,并且已完成模块已经过评审和验证确认没有语法错误(D) 主要模块的代码编制完成,并且已完成模块已经过评审和验证确认没有语法错误(分数:2.00)A. B.C.D.解析:9.极限编程的主要特点有_。A简单的分析设计
19、 B频繁的客户交流 C增量式开发和连续的测试 D以上全部(分数:2.00)A.B.C.D. 解析:解析 极限编程,只经过简单的分析和设计就进入到编码阶段,而在编码过程中强调对已有代码的测试和开发人员与客户的交互。相对传统的软件开发方法,极限编程有很多主要特点,包括简单的分析设计、频繁的客户交流、采用增量式开发方式、进行连续的测试。10.Myers 在 1979 年提出了一个重要观点,即软件测试的目的是为了_。A) 证明程序正确B) 查找程序错误C) 改正程序错误D) 验证程序无错误(分数:2.50)A.B. C.D.解析:解析 Glenford JMyers 于 1979 年给出测试的定义为:
20、软件测试是为发现错误而执行的一个程序或者系统的过程。同时他给出了 3 个关于测试的重要观点:测试是为了证明程序有错,而不是证明程序正确。一个好的测试用例在于它能发现以前未发现的错误。一个成功的测试是发现了以前未发现的错误的测试。11.以下哪一项属于数据兼容性测试关注的范畴A) 一个软件是否支持不同的操作系统B) 一个杀毒软件是否会误删其他软件保存的文件C) 一个文字处理软件的操作方式是否与同类软件的操作方式一致D) 一个电子邮件收发软件是否可以导入以前版本保存的邮件(分数:2.00)A.B.C.D. 解析:解析 A、B、C 均属于软件兼容性测试关注的内容,D 属于数据兼容性关注的内容。12.走
21、查的最主要目标有发现缺陷、遗漏和矛盾的地方改讲产品考虑可替换的实现方法A) 和 B) 和C) 和 D) 、和(分数:2.00)A.B.C.D. 解析:解析 走查的最主要目标是发现缺陷、遗漏和矛盾的地方,改进产品以及考虑可替换的实现方法。13.以下关于 Web 应用软件测试的说法中,正确的是A) 内容测试是 Web 应用软件性能测试的一项重要内容B) 表单测试是 Web 应用软件易用性测试的一项重要内容C) 并发测试是 Web 应用软件安全性测试的一项重要内容D) Cookie 测试是 Web 应用软件功能测试的一项重要内容(分数:2.00)A.B.C.D. 解析:14.测试用例的生命周期包括A
22、) 用例创建 B) 进入测试任务,执行用例C) 测试执行结果存档 D) 以上全部(分数:2.00)A.B.C.D. 解析:解析 测试用例生命周期追踪和管理能够提供合理的测试执行流程管理,测试用例的生命周期包括测试用例创建、进入测试任务、执行测试用例、测试执行结果存档四个阶段。15.为了提高测试的效率,正确的做法是_。A) 选择发现错误可能性大的数据作为测试用例B) 在完成程序的编码之后再制定软件的测试计划C) 随机选取测试用例D) 取一切可能的输入数据作为测试用例(分数:2.50)A. B.C.D.解析:解析 由测试用例的原则第 5 条(设计测试用例时应该充分注意测试中的群集现象,即测试后程序
23、中残存的错误数与已发现的错误数目成正比),故在测试时应当对错误群集的程序段进行重点测试,以提高测试的效率及测试投资的效益。目前,在软件测试领域流行一个“80-20 原则”,认为 80%的错误是在20%的模块中发现的,所以在测试时如果发现某一程序模块似乎比其他程序模块有更多的错误倾向时,则应当花费较多的时间和代价测试这个程序模块,从而提高测试的效率。16.允许程序的控制流在出现特殊情况时跳转到特定的位置,这种面向对象编程语言的机制是A) 模态测试机制 B) 异常处理机制C) 特殊调整机制 D) 类关联机制(分数:2.00)A.B. C.D.解析:解析 异常处理是多数面向对象编程语言的重要机制,它
24、允许程序的控制流在出现特殊情况时跳转到特定的位置。由于使用异常处理,异常的抛出和异常的接收可以被放在不同的类中,这实际上是类间隐含的控制依赖关系。在测试时,需要尽可能地覆盖这些隐式的依赖关系。17.性能计数器是指各种与性能有关的资源利用率指标,综合利用性能计数器的分析技术是A) 进程分析 B) 内存和 CPU 分析C) 磁盘 I/O 分析 D) 以上全部(分数:2.00)A.B.C.D. 解析:解析 常用的性能分析技术之一是对性能计数器的分析,这里的性能计数器是指各种与性能有关的资源利用率指标,这些指标通常可利用操作系统、应用服务器或数据库服务器提供的命令或系统调用来获得,其中综合利用性能计数
25、器的性能分析技术有内存分析、CPU 分析、磁盘 I/O 分析和进程分析。18.测试的复用包括_。A) 测试用例的复用B) 软件缺陷报告的复用C) 软件过程信息的复用D) 以上全是(分数:2.00)A.B.C.D. 解析:解析 测试的复用包括测试用例、软件缺陷报告和软件过程信息的复用。测试用例和软件缺陷报告是项目宝贵的财富,在一个新的项目或者新的测试阶段中对其进行复用是其价值的体现。但是复用之前一定要整理。测试的复用主要体现在测试用例的复用上。组织和编写良好的测试用例具有很强的复用性;可以用在回归测试或者用在下一个版本的测试中。19.关于易用性测试,说法错误的是_。A) 用户界面测试是软件易用性
26、测试最重要的一项内容B) 对软件功能的动态关联进行测试可以通过检查菜单完成C) 使用软件的目的就是减少重复输入,减轻人工劳动,提高工作效率D) 检查和评估软件安装手册的正确性和易用性是安装性测试的重要内容(分数:2.00)A.B. C.D.解析:解析 软件易用性测试主要包括 3 个方面:易安装性测试、功能易用性测试和用户界面测试,其中用户界面是用户与软件打交道的唯一渠道,用户界面是否友好在很大程度上决定了软件的易用性,因此用户界面测试是软件易用性测试最重要的一项内容,选项 A 说法正确。对软件功能的关联包括静态关联和动态关联两方面,其中对于静态关联的测试可以通过检查菜单完成,而对于动态关联的测
27、试需要针对各项任务设计测试用例,以检查软件能否合理引导用户使用下一步的功能,故选项 B 说法不正确。使用软件的目的就是能够减少重复输入,保证数据的一致性,减轻人工劳动,提高工作效率,故选项 C 说法正确。软件的安装通常需要在安装手册的指导下完成,因此检查和评估软件安装手册的正确性和易用性是安装性测试的重要内容,选项 D 说法正确。20.开始软件测试工作前具备的条件有 _。A具有测试计划 B具有软件测试所需的各种文档C软件源代码正确通过编译 D以上全部(分数:2.00)A.B.C.D. 解析:21.应用服务器的功能之一是公共服务,下列服务中是所有应用服务器都应提供的是A) 安全服务 B) 消息服
28、务C) 日志服务 D) 邮件服务(分数:2.00)A. B.C.D.解析:22.软件产品首先应该满足的属性是A) 客户的功能需求 B) 容错和纠错能力C) 性能需求 D) 可扩展性和灵活性(分数:2.00)A. B.C.D.解析:解析 客户的功能需求是软件产品首先应该满足的属性。23.以下哪一项不属于 Web 应用软件表示层测试关注的范畴A) 排版结构的测试 B) 链接结构的测试C) 浏览器兼容性的测试 D) 应用服务器兼容性测试(分数:2.00)A.B.C.D. 解析:解析 Web 应用软件表示层的测试主要集中在客户端,测试的内容包括:排版结构的测试;链接结构的测试;客户端程序的测试;浏览器
29、兼容性测试。二、论述题(总题数:2,分数:20.00)已知 C 源程序如下:/*Input todays date,output tomorrows date*/*version 2*/#includestdio.hstruct ydateint day;int month;int year;int leap(struct ydate d)if(d.year%4=0elsereturn 0;int numdays(struct ydate d)int day;static int daytab=31,28,31,30,31,30,31,31,30,31,30,31);if(leap(d)els
30、eday=daytabd.month-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=today.year| today.year65535 | 0=today.month | today.month12) |0=today.day | today.daynumdays(today)printf(“input date e
31、rror!reenter the day!/n“);printf(“today is:“);scanf(“%d,%d,%d“,if(today.day!=numdays(today)tomorrow.year=today.year;tomorrow.month=today.month;tomorrow.day=today.day+1;else if(today.month=12)tomorrow.year=today.year+1;tomorrow.month=1;tomorrow.day=1;elsetomorrow.year=today.year;tomorrow.month=today.
32、month+1;tomorrow.day=1;printf(“tomorrow is:%d,%d,%d/n/“,tomorrow.year,tomorrow.month,tomorrow.day);(分数:4.00)(1).画出程序中所有函数的控制流程图;(分数:2.00)_正确答案:(函数 leap 的流程图如下:函数 numdays 的流程图如下:main 函数的流程图如下(语句的具体内容已略去):)解析:(2).设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到 100%。如果认为该程序的语句或分支覆盖率无法达到 100%需说明为什么。(分数:2.00)_正确答案:(根据
33、以上分析,设计测试用例如下:用例编号 年 月 日 leap numdays while ifelse if else 输出结果 1 2008 2 30 1 29 1 error2 2007 12 31 0 31 0 month=12 2008113 6 10 31 0 31 0today= numdays 6111 4 804 4 17 1 30 0today!= numdays 804418 注意,这里的第 1、2 个用例使得 leap 函数中的 return 1 和 return 0 都能执行一遍,同时 numdays 函数中的 ifelse 结构两个分支也都能得到执行;第 1 个用例也能
34、够使 while 循环体得到执行;第 2、3、4用例三个测试用例刚好使 main 中的 ifelse ifelse 的三个分支都执行一遍。)解析:下面是一段 C 程序,其功能为计算 1 到所输入数值的逐步累加和,请阅读程序并完成要求。#includestdio.hint sum(int);void main()int num,k;printf(“Enter a number:“);seanf(“%d“,num);for(k=1;k=num;k+)printf(“1 to %d is %d/n“,k,sum(k);int sum(int n)int i,result=0;for(i=1;i=n;i+)result+=i;return result;(分数:16.00)(1).请画出此程序各函数的控制流程图。(分数:8.00)_正确答案:(sum 函数和主函数的流程图如下所示。)解析:(2).设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到 100%。如果认为该程序的语句或分支覆盖率无法达到 100%,说明原因。(分数:8.00)_正确答案:(语句覆盖和分支覆盖都达到 100%的覆盖率,就是要设计测试用例,使其满足所有分支情况。本题较为简单,只要 num1 和 num1 就可以满足所有分支覆盖标准,所以测试用例选择为 num=100,-6。)解析: