一:选择题
1.软件测试的目的是(发现软件错误)。
2.软件测试中白盒法是通过分析程序的(内部逻辑 )来设计测试用例的。
3.黑盒法是根据程序的(功能)来设计测试用例的。
4.为了提高软件测试的效率,应该(选择发现错误可能性最大的数据作为测试用例
5.与设计测试用例无关的文档是(项目开发计划)。
6.测试的关键问题是(如何选择测试用例)。
7.软件测试用例主要由输入数据和(预期输出结果)两部分组成。
8.成功的测试是指运行测试用例后(发现了程序错误)。
9.下列几种逻辑覆盖标准中,查错能力最强的是(条件组合覆盖)
10.在黑盒测试中,着重检查输入条件组合的方法是(因果图法)。
11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是(系统功能)。
12.软件测试过程中的集成测试主要是为了发现( c )阶段的错误。B
A)需求分析 B)概要设计 C)详细设计 D)编码
13.不属于白盒测试的技术是( d )。
A)路径覆盖 B)判定覆盖 C)循环覆盖 D)边界值分析
14.集成测试时,能较早发现高层模块接口错误的测试方法为( a)。
A)自顶向下渐增式测试 B)自底向上渐增式测试 C)非渐增式测试 D)系统测试
15.确认测试以(需求规格说明书)文档作为测试的基础。
16.使用白盒测试方法时,确定测试数据应根据( a )和指定的覆盖标准。
A)程序内部逻辑 B)程序的复杂度 C)使用说明书 D)程序的功能
17.程序的三种基本结构是(顺序、选择、循环
18.结构化程序设计的一种基本方法是( d )
A)筛选法 B)递归法 C)归纳法 D)逐步求精法
19.软件调试的目的是(找出错误所在并改正之)
20.程序三种基本结构的共同特点是( d )
A)不能嵌套使用B)只能用来写简单程序
C)已经用硬件实现D)只有一个入口和一个出口
21.下面说法正确的是( c )。
A)经过测试没有发现错误说明程序正确 B)测试的目标是为了证明程序没有错误
C)成功的测试是发现了迄今尚未发现的错误的测试 D)成功的测试是没有发现错误的测试
22.覆盖准则最强的是( d )。
A)语句覆盖B)判定覆盖C)条件覆盖D)路径覆盖
23.发现错误能力最弱的是( a )。
A)语句覆盖B)判定覆盖C)条件覆盖D)路径覆盖
24.实际的逻辑覆盖测试中,一般以( C )为主设计测试用例。
A)条件覆盖B)判定覆盖C)条件组合覆盖D)路径覆盖
25.下面( d )方法能够有效地检测输入条件的各种组合可能引起的错误。
A)等价类划分B)边界值分析C)错误推测D)因果图
26.与确认测试阶段有关的文档是( a )。
A)需求规格说明书B)概要设计说明书C)详细设计说明书D)源程序
27.超出软件工程范围的测试是( c )。D
A)单元测试B)集成测试C)确认测试D)系统测试
28.软件测试不需要了解软件设计的( c )。D
A)功能B)内部结构C)处理过程D)条件
29.( b )方法需要考察模块间的接口和各模块之间的联系。
A)单元测试B)集成测试C)确认测试D)系统测试
30.调试应该由( b )完成。
A)与源程序无关的程序员B)编制该源程序的程序员
C)不了解软件设计的机构D)设计该软件的机构
31.基线是软件生存期中各开发阶段的一个特定点,它可作为一个检查点,当采用的基线发生错误时,我们可以返回到最近和最恰当的(d )上。C
A)配置项 B)程序 C)基线 D)过程
32.版本管理是对系统不同版本进行的( a )过程
A)标识与跟踪 B)标识变更 C)发布变更 D)控制变更
33.在变更控制中,管理各个用户存取和修改一个特定软件配置对象的权限是( a )。D
A)异步控制B)同步控制C)存取控制D)基线控制
34. 在配置管理中,“登入”和“检出”处理实现了两个重要的变更控制要素,即同步控制和( B )。
A)异步控制B)同步控制C)基线控制D)存取控制
35. 按照软件配置管理的原始指导思想,受控制的对象应是( b )。C
A)软件元素 B)软件配置项C)软件项目D)软件过程
36. 软件配置项是软件配置管理的对象,指的是软件工程过程中所产生的( b )。
A)接口B)软件环境C)信息项D)版本
37.在变更控制中,可用来确保由不同用户所执行的并发控制是( B )。
A)异步控制B)同步控制C)存取控制D)基线控制
38.以下说法错误的是( a )。
A)软件配置管理简称SCI
B)软件配置项是配置管理的基本单位
C)软件配置实际上是一动态的概念
D)软件工程过程中某一阶段的变更均要引起软件配置的变更
一、 填空题
1.软件测试的目的是尽可能多地发现软件中存在的纠错的依据。
2.测试阶段的基本任务是根据软件开发各阶段的构 ,精心设计一组 测试用例 ,利用这些实例执行 程序 ,找出软件中潜在的各种 错误 和 缺陷 。
3.测试用例由
4.软件测试方法一般分为两大类:
5.动态测试通过发现错误。根据的设计方法不同,动态测试又分为 黑盒 与 白盒 两类。
6.静态测试采用
7.人工审查程序偏重于而软件审查除了审查要对各阶段 软件产品 进行检验。
8.计算机辅助静态分析利用
9.黑盒法只在软件的足 功能 要求。
10.白盒法必须考虑程序的以检查细节为基础,对程序中尽可能多的逻辑路径进行 测试 。
11.白盒测试是基础设计测试用例。
12.逻辑覆盖是对程序内部有内部的逻辑覆盖程度又可分为 语句覆盖 、 判定覆盖 、 条件覆盖 、 判定/条件覆盖 、 条件组合覆盖 和 路径覆盖 6种覆盖技术。
13.实际的逻辑覆盖测试中,一般以再补充部分用例,以达到 路径 覆盖测试标准。
14.循环覆盖是对程序内部有存在的逻辑结构设计测试用例,它通过限制 循环次数 来测试。
15.基本路径测试是在程序 复杂性,导出 基本路径 集合,从而设计测试用例。
16.黑盒测试是测试,用黑盒技术设计测试用例有4种方法:类 、 边界值分析 、 因果图
和
17.等价类划分从程序的说明,找出一个输入条件(通常是 或 一个短语 ),然后将每个输入条件划分成两个或多个 等价类 。
18.边界值分析是将测试 选取正好等于、刚刚大于或刚刚小于 边界值 的测试数据。如果输入或输出域是一个有序集合,则应选取集合的 第一个 元素和 最后一个 元素作为测试用例。
19.在测试程序时,根据经验或直觉推测程序中可能存在的各种错误,称为推测法 。
20.因果图的基本原理是通过画换为 判定表 ,最后为 判定表 每一列设计一个测试用例。
21.测试的综合策略是在测试中,联合使用各种 法设计基本的测试用例,再用 白盒 法补充一些必要的测试用例。
22.软件测试过程中需要3类信息:具 。
23.软件测试一般经过4 统测试 。
24.实现规定的功能,从而发现模块在编码中或算法中的错误,它涉及 编码 和 详细设计 的文档。
25.单元测试主要测试5个基本特征:构 、 重要的执行路径 、 错误处理 和 边界条件 。
26.在单元测试中,需要为被测模块设计 模块和模块。 用来模拟被测模块的上级调用模块, 桩模块 用来代替被测模块所调用的模
27.集成测试指在测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称 组装 测试或 联合 测试。
28.集成测试的方法有两种:
29.渐增式测试有两种不同的组装模块的方法:合 。
30.自顶向下渐增式测试不需要编写 其步骤是从 顶层 模块开始,沿着被测程序的 软件结构图 的控制路径逐步向下测试,它有两种组合策略: 深度优先策略 和 宽度优先策略 。
31.自底向上渐增式测试不需要编写
32.确认测试指检查软件的与是否与的指标相符合,又称 有效性 测试。
33.确认测试在模拟环境下运用测试方法,由 参加的测试。
34.确认测试开始前需要制定其测试用例要选用 实际运用 的数据。
35.软件配置审查的任务是检查软件的所有文档资料的
36.调试也称,是在成功的测试之后才开始进行,其目的是确定错误的置 和 原因 ,并改正错误。
37.调试技术包括 调试 。
38.回溯法调试是从出发,而归纳法调试是从发现的线索 入手。
39.被测试程序不在机器上运行,而是采用人工检测和计算机辅助分析检测的手段称为 静态 测试。
40.用等价类划分法设计一个测试用例时,使其覆盖合理等价类。
41.用等价类划分法设计一个测试用例时,使其覆盖
42.在单元测试时,需要为被测模块设计
43.在集成测试时有两种测试方法,它们是44.软件测试是为了
45.运行被测程序的方法称为
46.动态测试中,主要测试软件功能的方法称为
47.选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为 判定覆盖 。
48.要覆盖含循环结构的所有路径是不可能的,一般通过限制
49.用等价类划分法设计测试用例时,如果被测程序的某个输入条件规定了取值范围,则可确定一个合理的等在和 两个不合理的等价类 。
50法
51.集成测试中的具体方法是
52.确认测试阶段的两项工作是
53.在单元测试中,测试一个模块时,需要设计
54.软件配置管理,简称SCM
55.SCM是一组管理整个软件生存期各阶段中的活动。
56.基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。因此,基线可以作为项目的一个 检查点 。
二:名词解释
1.软件测试
软件测试是按测试方法用测试工具检查软件错误和缺陷的过程。软件测试指为了发现软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。
2.静态测试
静态测试指被测试的程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
3.动态测试
动态测试是通过运行软件发现错误的过程
4.黑盒测试
黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。
5.白盒测试
白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
6.语句覆盖
语句覆盖指设计足够的测试用例,使被测程序中每个语句至少执行一次。
7.判定覆盖
判定覆盖指设计足够的测试用例,使被测程序中每个判定表达式至少获得一次“真”值或“假”值,从而使程序的每个分支至少都通过一次,因此判定覆盖又称分支覆盖。
8.条件覆盖
条件覆盖指设计足够测试用例,使判定表达式中每个条件的各种可能的值至少出现一次。
9.判定/条件覆盖
判定/条件覆盖指设计足够的测试用例,使得判定表达式中每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
10.条件组合覆盖
条件组合覆盖指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。
11.路径覆盖
路径覆盖指设计足够的测试用例,覆盖被测程序中所有可能的路径。
12.测试用例
测试用例指为寻找程序中的错误而精心设计的一组测试数据。
13.驱动模块
驱动模块指用来模拟被测模块的上级调用模块,其功能比真正的上级模块简单得
变更 、 控制变更 、 确保变更正确地实现 、 报告有关变更 。
55.SCM是一组管理整个软件生存期各阶段中的活动。
56.基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。因此,基线可以作为项目的一个 检查点 。
二:名词解释
1.软件测试
软件测试是按测试方法用测试工具检查软件错误和缺陷的过程。软件测试指为了发现软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。
2.静态测试
静态测试指被测试的程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
3.动态测试
动态测试是通过运行软件发现错误的过程
4.黑盒测试
黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。
5.白盒测试
白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
6.语句覆盖
语句覆盖指设计足够的测试用例,使被测程序中每个语句至少执行一次。
7.判定覆盖
判定覆盖指设计足够的测试用例,使被测程序中每个判定表达式至少获得一次“真”值或“假”值,从而使程序的每个分支至少都通过一次,因此判定覆盖又称分支覆盖。
8.条件覆盖
条件覆盖指设计足够测试用例,使判定表达式中每个条件的各种可能的值至少出现一次。
9.判定/条件覆盖
判定/条件覆盖指设计足够的测试用例,使得判定表达式中每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
10.条件组合覆盖
条件组合覆盖指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。
11.路径覆盖
路径覆盖指设计足够的测试用例,覆盖被测程序中所有可能的路径。
12.测试用例
测试用例指为寻找程序中的错误而精心设计的一组测试数据。
13.驱动模块
驱动模块指用来模拟被测模块的上级调用模块,其功能比真正的上级模块简单得
多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。
14.桩模块
桩模块指用来代替被测试模块所调用的模块,其作用是返回被测试模块所需的信息。
15.单元测试
单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
16.集成测试
集成测试指在单元测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称组装测试或联合测试。
17.确认测试
确认测试指检查软件的功能与性能是否与需求规格说明书中确定的指标相符合,又称有效性测试。
18.渐增式测试
渐增式测试指逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕。
19.非渐增式测试
非渐增式测试指首先对每个模块分别进行单元测试,然后把所有的模块按设计要求组装在一起进行测试。
20.调试
调试指确定错误的原因和位置,并改正错误的过程,也称纠错。
21:强度测试:验证软件的性能在各种极端的周边环境和系统条件下的承受能力。 22:性能测试:软件的性能在正常环境和系统条件下重复使用时能否满足性能指标。
23:安全测试:为了验证软件的数据保密性和数据完整性的测试。
24:兼容测试:针对测试软件和其他软件之间,以及不同硬件之间的兼容测性进行测试。
25:集成测试主要是为了检验软件系统是否符合实际软件结构,发现与接口有关的各种错误。
26:验收测试:在软件开发结束之后,用户对软件产品投入实际应用之前,进行最后一次质量检验。
验收测试中
1):α测试:软件开发公司组织内部人员模拟各类用户行为对即将面市的软件产品进行测试,试图发现并修改错误,经过a测试之后的软件产品称为β版本
2):β测试:软件开发公司组织各方面的典型用户在日常生活中实际使用β版本,并要求用户报告异常情况。
27:回归测试:软件系统被修改或扩充后重新进行的测试
28.软件缺陷:存在于软件(程序,文档,数据)之中的不希望出现或不可接受的偏差
29.软件错误:软件在运行的过程中,不希望出现或不可接受的内部状态。
30软件质量:与软件产品满足明确或隐含需求的能力有关的特质和特性的总和 31软件测试过程模型:对测试过程的抽象,用于定义软件测试的流程和方法 四:简答题
1.为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网?
答: ① 软件测试是软件开发中不可缺少的重要一环,原因是:
1:测试的工作量约占整个项目开发工作量的40%左右,几乎一半。:
2:软件测试代表了需求分析、设计、编码的最终复审。
② 软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。
2.软件测试的目的是什么?为什么把软件测试的目的定义为只是发现错误? ① 软件测试是为了发现错误而执行程序的过程。
② 一个好的测试用例能够发现至今尚未发现的错误。
③ 一个成功的测试是发现了至今尚未发现的错误。
软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误。
3.软件测试应当遵循什么原则?为什么要遵循这些原则?
1)所有的测试应该都回溯到用户需求(因为软件开发最根本的目标是满足客户的需求)
2)尽早测试和不断测试(因为软件的复杂性和程序性,错误在任何阶段都有可能发生,所以应该把测试贯穿到每一个阶段)
3)测试工作应该由专业的测试机构完成(因为人的主观性的原因,对自己设计的程序印象深刻,不易发现错误)
4)Pareto原则,事实证明软件测试中的80%的错误,是由20%的模块引起的。
5)测试用例时,应考虑各种情况
4.软件测试的步骤是什么?这些测试与软件开发各阶段之间的关系? ① 软件测试的步骤如图7-3所示。
2
图7-3 软件测试的步骤
② 这些测试与软件开发各阶段之间的关系如图7-2所示。因为系统测试已经超出了软件工程的范围,所以图7-2中的系统测试不包括在内。
5.软件测试的过程是什么?
① 测试设计:根据软件开发各阶段的文档资料和程序的内部结构,利用各种设计测试用例技术精心设计测试用例。
② 测试执行:利用这些测试用例执行程序,得到测试结果。
③ 测试结果比较:将预期的结果与实际测试结果进行比较,如果二者不符合,对于出现的错误进行纠错,并修改相应文档。修改后的程序还要进行再次测试,直到满意为止。如果测试发现不了错误,可能由于测试配置考虑不周到,应考虑重新制定测试方案,设计测试用例。
6.单元测试、集成测试和确认测试各自主要目标是什么?它们之间有什么不同?相互有什么关系?
① 单元测试的主要目标是检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
② 集成测试的主要目标是检查与设计相关的软件体系结构的有关问题。
③ 确认测试的主要目标是检查已实现的软件是否满足需求规格说明书中确定的各种需求。
单元测试、集成测试和确认测试之间的不同如下:
① 测试内容不同:单元测试集中于单个模块的功能和测试;集成测试集中于模块组合的功能和软件结构检验,其测试内容主要包括模块组装中可能出现的问题,即数据穿过接口可能丢失、一个模块可能破坏另一个模块的内容、子功能组装可能不等于主功能、全程数据结构问题、误差累积问题;确认测试集中于论证软件需求的可追溯性,主要包括测试软件功能和性能是否与软件需求一致、测试软件配置的所有程序与文档是否正确完整而且一致。
② 测试的方法不同:单元测试总是使用白盒测试法,为被测模块设计驱动模块和桩模块;集成测试使用渐增式测试和非渐增式测试,渐增式测试又有分为自顶向下结合法和自底向上结合法;确认测试总是使用黑盒测试法。
③ 发现的错误不同:单元测试发现的错误主要是在编码阶段产生的错误,集成测试发现的错误主要是在设计阶段产生的错误,确认测试发现的错误主要是在需求分析阶段产生的错误。
④ 涉及的文档不同:单元测试涉及编码和详细设计文档,集成测试涉及详细设计文档和概要设计文档,确认测试涉及软件需求规格说明书和用户手册。
三者相互关系是:单元测试、集成测试和确认测试是顺序实现的。首先单元测试对各个模块进行测试,然后集成测试以单元测试为基础,将所有已测模块按照设计要求组装成一个完整的系统,对模块组合的功能和软件结构检验进行测试,最后确认测试是以集成测试为基础,测试集成的软件是否满足需求规格说明书中确定的各种需求。
7.什么是黑盒测试与白盒测试?它们都适应哪些测试?
① 黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。
② 白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
③ 白盒测试适应的测试有单元测试、逻辑覆盖(按逻辑覆盖程度不同,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。)、循环覆盖(限制循环次数,有单循环和嵌套循环)和基本路径测试。
④ 黑盒测试适应的测试有:确认测试、等价类划分、边界值分析、错误推测和因
果图。
8.简述软件测试与软件调试的区别。
① 测试从一个侧面证明程序员的失败,而调试是为了证明程序员的正确。
② 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的只是程序是否通过测试。调试一般以不可知的内部条件开始,除统计性调试外,结果是不可预见的。
③ 测试是有计划的,并要进行测试设计,而调试是不受时间约束的。
④ 测试是一个发现错误、改正错误、重新测试的过程,而调试是一个推理过程。 ⑤ 测试的执行是有规程的,而调试的执行往往要求程序员进行必要的推理及知觉的飞跃。
⑥ 测试经常由独立的测试组在不了解软件设计的前提下完成,而调试必须由了解详细设计的程序员完成。
⑦大多数测试的执行和设计可由工具支持,而调试时,程序员能利用的工具主要是调试器。
9:单元测试的主要任务
1):模块接口测试 2):模块局部数据结构测试 3):模块中所有独立执行路径测试 4):各种错误处理测试 5)模块边界条件测试。
10:测试用例的基本原则
1):使用成熟测试用例设计方法指导设计
2):测试用例的正确性
3):测试用例的代表性
4):测试结果的可判定性
5):测试结果的可再现性
6):足够详细,准确和清晰的步骤
一:选择题
1.软件测试的目的是(发现软件错误)。
2.软件测试中白盒法是通过分析程序的(内部逻辑 )来设计测试用例的。
3.黑盒法是根据程序的(功能)来设计测试用例的。
4.为了提高软件测试的效率,应该(选择发现错误可能性最大的数据作为测试用例
5.与设计测试用例无关的文档是(项目开发计划)。
6.测试的关键问题是(如何选择测试用例)。
7.软件测试用例主要由输入数据和(预期输出结果)两部分组成。
8.成功的测试是指运行测试用例后(发现了程序错误)。
9.下列几种逻辑覆盖标准中,查错能力最强的是(条件组合覆盖)
10.在黑盒测试中,着重检查输入条件组合的方法是(因果图法)。
11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是(系统功能)。
12.软件测试过程中的集成测试主要是为了发现( c )阶段的错误。B
A)需求分析 B)概要设计 C)详细设计 D)编码
13.不属于白盒测试的技术是( d )。
A)路径覆盖 B)判定覆盖 C)循环覆盖 D)边界值分析
14.集成测试时,能较早发现高层模块接口错误的测试方法为( a)。
A)自顶向下渐增式测试 B)自底向上渐增式测试 C)非渐增式测试 D)系统测试
15.确认测试以(需求规格说明书)文档作为测试的基础。
16.使用白盒测试方法时,确定测试数据应根据( a )和指定的覆盖标准。
A)程序内部逻辑 B)程序的复杂度 C)使用说明书 D)程序的功能
17.程序的三种基本结构是(顺序、选择、循环
18.结构化程序设计的一种基本方法是( d )
A)筛选法 B)递归法 C)归纳法 D)逐步求精法
19.软件调试的目的是(找出错误所在并改正之)
20.程序三种基本结构的共同特点是( d )
A)不能嵌套使用B)只能用来写简单程序
C)已经用硬件实现D)只有一个入口和一个出口
21.下面说法正确的是( c )。
A)经过测试没有发现错误说明程序正确 B)测试的目标是为了证明程序没有错误
C)成功的测试是发现了迄今尚未发现的错误的测试 D)成功的测试是没有发现错误的测试
22.覆盖准则最强的是( d )。
A)语句覆盖B)判定覆盖C)条件覆盖D)路径覆盖
23.发现错误能力最弱的是( a )。
A)语句覆盖B)判定覆盖C)条件覆盖D)路径覆盖
24.实际的逻辑覆盖测试中,一般以( C )为主设计测试用例。
A)条件覆盖B)判定覆盖C)条件组合覆盖D)路径覆盖
25.下面( d )方法能够有效地检测输入条件的各种组合可能引起的错误。
A)等价类划分B)边界值分析C)错误推测D)因果图
26.与确认测试阶段有关的文档是( a )。
A)需求规格说明书B)概要设计说明书C)详细设计说明书D)源程序
27.超出软件工程范围的测试是( c )。D
A)单元测试B)集成测试C)确认测试D)系统测试
28.软件测试不需要了解软件设计的( c )。D
A)功能B)内部结构C)处理过程D)条件
29.( b )方法需要考察模块间的接口和各模块之间的联系。
A)单元测试B)集成测试C)确认测试D)系统测试
30.调试应该由( b )完成。
A)与源程序无关的程序员B)编制该源程序的程序员
C)不了解软件设计的机构D)设计该软件的机构
31.基线是软件生存期中各开发阶段的一个特定点,它可作为一个检查点,当采用的基线发生错误时,我们可以返回到最近和最恰当的(d )上。C
A)配置项 B)程序 C)基线 D)过程
32.版本管理是对系统不同版本进行的( a )过程
A)标识与跟踪 B)标识变更 C)发布变更 D)控制变更
33.在变更控制中,管理各个用户存取和修改一个特定软件配置对象的权限是( a )。D
A)异步控制B)同步控制C)存取控制D)基线控制
34. 在配置管理中,“登入”和“检出”处理实现了两个重要的变更控制要素,即同步控制和( B )。
A)异步控制B)同步控制C)基线控制D)存取控制
35. 按照软件配置管理的原始指导思想,受控制的对象应是( b )。C
A)软件元素 B)软件配置项C)软件项目D)软件过程
36. 软件配置项是软件配置管理的对象,指的是软件工程过程中所产生的( b )。
A)接口B)软件环境C)信息项D)版本
37.在变更控制中,可用来确保由不同用户所执行的并发控制是( B )。
A)异步控制B)同步控制C)存取控制D)基线控制
38.以下说法错误的是( a )。
A)软件配置管理简称SCI
B)软件配置项是配置管理的基本单位
C)软件配置实际上是一动态的概念
D)软件工程过程中某一阶段的变更均要引起软件配置的变更
一、 填空题
1.软件测试的目的是尽可能多地发现软件中存在的纠错的依据。
2.测试阶段的基本任务是根据软件开发各阶段的构 ,精心设计一组 测试用例 ,利用这些实例执行 程序 ,找出软件中潜在的各种 错误 和 缺陷 。
3.测试用例由
4.软件测试方法一般分为两大类:
5.动态测试通过发现错误。根据的设计方法不同,动态测试又分为 黑盒 与 白盒 两类。
6.静态测试采用
7.人工审查程序偏重于而软件审查除了审查要对各阶段 软件产品 进行检验。
8.计算机辅助静态分析利用
9.黑盒法只在软件的足 功能 要求。
10.白盒法必须考虑程序的以检查细节为基础,对程序中尽可能多的逻辑路径进行 测试 。
11.白盒测试是基础设计测试用例。
12.逻辑覆盖是对程序内部有内部的逻辑覆盖程度又可分为 语句覆盖 、 判定覆盖 、 条件覆盖 、 判定/条件覆盖 、 条件组合覆盖 和 路径覆盖 6种覆盖技术。
13.实际的逻辑覆盖测试中,一般以再补充部分用例,以达到 路径 覆盖测试标准。
14.循环覆盖是对程序内部有存在的逻辑结构设计测试用例,它通过限制 循环次数 来测试。
15.基本路径测试是在程序 复杂性,导出 基本路径 集合,从而设计测试用例。
16.黑盒测试是测试,用黑盒技术设计测试用例有4种方法:类 、 边界值分析 、 因果图
和
17.等价类划分从程序的说明,找出一个输入条件(通常是 或 一个短语 ),然后将每个输入条件划分成两个或多个 等价类 。
18.边界值分析是将测试 选取正好等于、刚刚大于或刚刚小于 边界值 的测试数据。如果输入或输出域是一个有序集合,则应选取集合的 第一个 元素和 最后一个 元素作为测试用例。
19.在测试程序时,根据经验或直觉推测程序中可能存在的各种错误,称为推测法 。
20.因果图的基本原理是通过画换为 判定表 ,最后为 判定表 每一列设计一个测试用例。
21.测试的综合策略是在测试中,联合使用各种 法设计基本的测试用例,再用 白盒 法补充一些必要的测试用例。
22.软件测试过程中需要3类信息:具 。
23.软件测试一般经过4 统测试 。
24.实现规定的功能,从而发现模块在编码中或算法中的错误,它涉及 编码 和 详细设计 的文档。
25.单元测试主要测试5个基本特征:构 、 重要的执行路径 、 错误处理 和 边界条件 。
26.在单元测试中,需要为被测模块设计 模块和模块。 用来模拟被测模块的上级调用模块, 桩模块 用来代替被测模块所调用的模
27.集成测试指在测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称 组装 测试或 联合 测试。
28.集成测试的方法有两种:
29.渐增式测试有两种不同的组装模块的方法:合 。
30.自顶向下渐增式测试不需要编写 其步骤是从 顶层 模块开始,沿着被测程序的 软件结构图 的控制路径逐步向下测试,它有两种组合策略: 深度优先策略 和 宽度优先策略 。
31.自底向上渐增式测试不需要编写
32.确认测试指检查软件的与是否与的指标相符合,又称 有效性 测试。
33.确认测试在模拟环境下运用测试方法,由 参加的测试。
34.确认测试开始前需要制定其测试用例要选用 实际运用 的数据。
35.软件配置审查的任务是检查软件的所有文档资料的
36.调试也称,是在成功的测试之后才开始进行,其目的是确定错误的置 和 原因 ,并改正错误。
37.调试技术包括 调试 。
38.回溯法调试是从出发,而归纳法调试是从发现的线索 入手。
39.被测试程序不在机器上运行,而是采用人工检测和计算机辅助分析检测的手段称为 静态 测试。
40.用等价类划分法设计一个测试用例时,使其覆盖合理等价类。
41.用等价类划分法设计一个测试用例时,使其覆盖
42.在单元测试时,需要为被测模块设计
43.在集成测试时有两种测试方法,它们是44.软件测试是为了
45.运行被测程序的方法称为
46.动态测试中,主要测试软件功能的方法称为
47.选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为 判定覆盖 。
48.要覆盖含循环结构的所有路径是不可能的,一般通过限制
49.用等价类划分法设计测试用例时,如果被测程序的某个输入条件规定了取值范围,则可确定一个合理的等在和 两个不合理的等价类 。
50法
51.集成测试中的具体方法是
52.确认测试阶段的两项工作是
53.在单元测试中,测试一个模块时,需要设计
54.软件配置管理,简称SCM
55.SCM是一组管理整个软件生存期各阶段中的活动。
56.基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。因此,基线可以作为项目的一个 检查点 。
二:名词解释
1.软件测试
软件测试是按测试方法用测试工具检查软件错误和缺陷的过程。软件测试指为了发现软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。
2.静态测试
静态测试指被测试的程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
3.动态测试
动态测试是通过运行软件发现错误的过程
4.黑盒测试
黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。
5.白盒测试
白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
6.语句覆盖
语句覆盖指设计足够的测试用例,使被测程序中每个语句至少执行一次。
7.判定覆盖
判定覆盖指设计足够的测试用例,使被测程序中每个判定表达式至少获得一次“真”值或“假”值,从而使程序的每个分支至少都通过一次,因此判定覆盖又称分支覆盖。
8.条件覆盖
条件覆盖指设计足够测试用例,使判定表达式中每个条件的各种可能的值至少出现一次。
9.判定/条件覆盖
判定/条件覆盖指设计足够的测试用例,使得判定表达式中每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
10.条件组合覆盖
条件组合覆盖指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。
11.路径覆盖
路径覆盖指设计足够的测试用例,覆盖被测程序中所有可能的路径。
12.测试用例
测试用例指为寻找程序中的错误而精心设计的一组测试数据。
13.驱动模块
驱动模块指用来模拟被测模块的上级调用模块,其功能比真正的上级模块简单得
变更 、 控制变更 、 确保变更正确地实现 、 报告有关变更 。
55.SCM是一组管理整个软件生存期各阶段中的活动。
56.基线的作用是把各阶段的开发工作划分得更加明确,便于检查与确认阶段成果。因此,基线可以作为项目的一个 检查点 。
二:名词解释
1.软件测试
软件测试是按测试方法用测试工具检查软件错误和缺陷的过程。软件测试指为了发现软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。
2.静态测试
静态测试指被测试的程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
3.动态测试
动态测试是通过运行软件发现错误的过程
4.黑盒测试
黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。
5.白盒测试
白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
6.语句覆盖
语句覆盖指设计足够的测试用例,使被测程序中每个语句至少执行一次。
7.判定覆盖
判定覆盖指设计足够的测试用例,使被测程序中每个判定表达式至少获得一次“真”值或“假”值,从而使程序的每个分支至少都通过一次,因此判定覆盖又称分支覆盖。
8.条件覆盖
条件覆盖指设计足够测试用例,使判定表达式中每个条件的各种可能的值至少出现一次。
9.判定/条件覆盖
判定/条件覆盖指设计足够的测试用例,使得判定表达式中每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
10.条件组合覆盖
条件组合覆盖指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。
11.路径覆盖
路径覆盖指设计足够的测试用例,覆盖被测程序中所有可能的路径。
12.测试用例
测试用例指为寻找程序中的错误而精心设计的一组测试数据。
13.驱动模块
驱动模块指用来模拟被测模块的上级调用模块,其功能比真正的上级模块简单得
多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。
14.桩模块
桩模块指用来代替被测试模块所调用的模块,其作用是返回被测试模块所需的信息。
15.单元测试
单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
16.集成测试
集成测试指在单元测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。也称组装测试或联合测试。
17.确认测试
确认测试指检查软件的功能与性能是否与需求规格说明书中确定的指标相符合,又称有效性测试。
18.渐增式测试
渐增式测试指逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直到程序组装完毕。
19.非渐增式测试
非渐增式测试指首先对每个模块分别进行单元测试,然后把所有的模块按设计要求组装在一起进行测试。
20.调试
调试指确定错误的原因和位置,并改正错误的过程,也称纠错。
21:强度测试:验证软件的性能在各种极端的周边环境和系统条件下的承受能力。 22:性能测试:软件的性能在正常环境和系统条件下重复使用时能否满足性能指标。
23:安全测试:为了验证软件的数据保密性和数据完整性的测试。
24:兼容测试:针对测试软件和其他软件之间,以及不同硬件之间的兼容测性进行测试。
25:集成测试主要是为了检验软件系统是否符合实际软件结构,发现与接口有关的各种错误。
26:验收测试:在软件开发结束之后,用户对软件产品投入实际应用之前,进行最后一次质量检验。
验收测试中
1):α测试:软件开发公司组织内部人员模拟各类用户行为对即将面市的软件产品进行测试,试图发现并修改错误,经过a测试之后的软件产品称为β版本
2):β测试:软件开发公司组织各方面的典型用户在日常生活中实际使用β版本,并要求用户报告异常情况。
27:回归测试:软件系统被修改或扩充后重新进行的测试
28.软件缺陷:存在于软件(程序,文档,数据)之中的不希望出现或不可接受的偏差
29.软件错误:软件在运行的过程中,不希望出现或不可接受的内部状态。
30软件质量:与软件产品满足明确或隐含需求的能力有关的特质和特性的总和 31软件测试过程模型:对测试过程的抽象,用于定义软件测试的流程和方法 四:简答题
1.为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网?
答: ① 软件测试是软件开发中不可缺少的重要一环,原因是:
1:测试的工作量约占整个项目开发工作量的40%左右,几乎一半。:
2:软件测试代表了需求分析、设计、编码的最终复审。
② 软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。
2.软件测试的目的是什么?为什么把软件测试的目的定义为只是发现错误? ① 软件测试是为了发现错误而执行程序的过程。
② 一个好的测试用例能够发现至今尚未发现的错误。
③ 一个成功的测试是发现了至今尚未发现的错误。
软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误。
3.软件测试应当遵循什么原则?为什么要遵循这些原则?
1)所有的测试应该都回溯到用户需求(因为软件开发最根本的目标是满足客户的需求)
2)尽早测试和不断测试(因为软件的复杂性和程序性,错误在任何阶段都有可能发生,所以应该把测试贯穿到每一个阶段)
3)测试工作应该由专业的测试机构完成(因为人的主观性的原因,对自己设计的程序印象深刻,不易发现错误)
4)Pareto原则,事实证明软件测试中的80%的错误,是由20%的模块引起的。
5)测试用例时,应考虑各种情况
4.软件测试的步骤是什么?这些测试与软件开发各阶段之间的关系? ① 软件测试的步骤如图7-3所示。
2
图7-3 软件测试的步骤
② 这些测试与软件开发各阶段之间的关系如图7-2所示。因为系统测试已经超出了软件工程的范围,所以图7-2中的系统测试不包括在内。
5.软件测试的过程是什么?
① 测试设计:根据软件开发各阶段的文档资料和程序的内部结构,利用各种设计测试用例技术精心设计测试用例。
② 测试执行:利用这些测试用例执行程序,得到测试结果。
③ 测试结果比较:将预期的结果与实际测试结果进行比较,如果二者不符合,对于出现的错误进行纠错,并修改相应文档。修改后的程序还要进行再次测试,直到满意为止。如果测试发现不了错误,可能由于测试配置考虑不周到,应考虑重新制定测试方案,设计测试用例。
6.单元测试、集成测试和确认测试各自主要目标是什么?它们之间有什么不同?相互有什么关系?
① 单元测试的主要目标是检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
② 集成测试的主要目标是检查与设计相关的软件体系结构的有关问题。
③ 确认测试的主要目标是检查已实现的软件是否满足需求规格说明书中确定的各种需求。
单元测试、集成测试和确认测试之间的不同如下:
① 测试内容不同:单元测试集中于单个模块的功能和测试;集成测试集中于模块组合的功能和软件结构检验,其测试内容主要包括模块组装中可能出现的问题,即数据穿过接口可能丢失、一个模块可能破坏另一个模块的内容、子功能组装可能不等于主功能、全程数据结构问题、误差累积问题;确认测试集中于论证软件需求的可追溯性,主要包括测试软件功能和性能是否与软件需求一致、测试软件配置的所有程序与文档是否正确完整而且一致。
② 测试的方法不同:单元测试总是使用白盒测试法,为被测模块设计驱动模块和桩模块;集成测试使用渐增式测试和非渐增式测试,渐增式测试又有分为自顶向下结合法和自底向上结合法;确认测试总是使用黑盒测试法。
③ 发现的错误不同:单元测试发现的错误主要是在编码阶段产生的错误,集成测试发现的错误主要是在设计阶段产生的错误,确认测试发现的错误主要是在需求分析阶段产生的错误。
④ 涉及的文档不同:单元测试涉及编码和详细设计文档,集成测试涉及详细设计文档和概要设计文档,确认测试涉及软件需求规格说明书和用户手册。
三者相互关系是:单元测试、集成测试和确认测试是顺序实现的。首先单元测试对各个模块进行测试,然后集成测试以单元测试为基础,将所有已测模块按照设计要求组装成一个完整的系统,对模块组合的功能和软件结构检验进行测试,最后确认测试是以集成测试为基础,测试集成的软件是否满足需求规格说明书中确定的各种需求。
7.什么是黑盒测试与白盒测试?它们都适应哪些测试?
① 黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。
② 白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
③ 白盒测试适应的测试有单元测试、逻辑覆盖(按逻辑覆盖程度不同,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。)、循环覆盖(限制循环次数,有单循环和嵌套循环)和基本路径测试。
④ 黑盒测试适应的测试有:确认测试、等价类划分、边界值分析、错误推测和因
果图。
8.简述软件测试与软件调试的区别。
① 测试从一个侧面证明程序员的失败,而调试是为了证明程序员的正确。
② 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的只是程序是否通过测试。调试一般以不可知的内部条件开始,除统计性调试外,结果是不可预见的。
③ 测试是有计划的,并要进行测试设计,而调试是不受时间约束的。
④ 测试是一个发现错误、改正错误、重新测试的过程,而调试是一个推理过程。 ⑤ 测试的执行是有规程的,而调试的执行往往要求程序员进行必要的推理及知觉的飞跃。
⑥ 测试经常由独立的测试组在不了解软件设计的前提下完成,而调试必须由了解详细设计的程序员完成。
⑦大多数测试的执行和设计可由工具支持,而调试时,程序员能利用的工具主要是调试器。
9:单元测试的主要任务
1):模块接口测试 2):模块局部数据结构测试 3):模块中所有独立执行路径测试 4):各种错误处理测试 5)模块边界条件测试。
10:测试用例的基本原则
1):使用成熟测试用例设计方法指导设计
2):测试用例的正确性
3):测试用例的代表性
4):测试结果的可判定性
5):测试结果的可再现性
6):足够详细,准确和清晰的步骤