软件测试题库
第一章:软件测试的基本概念
一、选择题:
1、Myers1979年提出了一个重要的观点,软件测试的目的是为了(B)。················(B)
A.证明程序正确
B.查找程序错误
C.改正程序错误
D.验证程序无错
2、对程序的测试最好由(B)来做,对程序的调试最好由(B)来做。··················(B)
A.程序员/第三方测试机构
B.第三方测试机构/程序员
C.程序开发组/程序员
D.程序开发组/程序开发组
3、下列选项中,不属于软件产品使用质量的属性是(C)。 ·································(C)
A.有效性
B.安全性
C.稳定性
D.满意度
4、下列软件属性中,软件产品首先满足客户的是(A)。 ····································(A)
A.功能需求
B.性能需求
C.可扩展性和灵活性
D.容错、纠错能力
5、在测试和使用软件产品过程中进行的度量是(B)。 ·······································(B)
A.内部度量
B.外部度量
C.使用度量
D.性能度量
6、内部质量需求包括(D)。 ········································································(D)
A.静态模型
B.动态模型
C.文档和源代码
D.以上都是
7、以下不属于软件缺陷的一项是(D)。 ·························································(D)
A.软件没有实现产品规格说明所要求的功能
B.软件中出现了产品规格说明指明不应该出现的错误
C.软件实现了产品规格说明没有提到的功能
D.软件实现了产品规格说明所要求的功能,但因受性能限制而未考虑可移植性问题
8、在软件生存周期过程中,修改错误代价最大的阶段是(D)。 ···························(D)
A.需求阶段
B.设计阶段
C.编程阶段
D.发布运行阶段
9、功能或特性没有实现,主要功能部分丧失,次要功能完全丧失,或致命的错误声明,这属于软件缺陷级别中的(B)。 ·······································································(B)
A.致命的缺陷
B.严重的缺陷
C.一般的缺陷
D.微小的缺陷
10、软件缺陷的基本状态有(D)。·································································(D)
A.激活状态
B.已修正状态
C.关闭或非激活状态
D.以上都是
11、软件缺陷产生的原因有(D)。·································································(D)
A.技术问题
B.团队工作
C.软件本身
D.以上都是
12、经验表明:在程序测试中,某模块与其他模块相比,若该模块已发现并改正的错误数目较多,则该模块中残存的错误数目与其他模块相比,通常应该是(B)。·················(B)
A.较少
B.较多
C.相似
D.不确定
13、为了提高测试的效率,正确的做法是(A)。···············································(A)
A.选择发现错误可能性大的数据作为测试用例
B.在完成程序的编码之后再制定软件的测试计划
C.随机选取测试用例
D.取一切可能的输入数据作为测试用例
14、黑盒测试是一种重要的测试策略,又称为数据驱动测试,其测试数据来源于(A)。……………………………………………………………………………………………(A)
A.软件规格说明
B.软件设计说明
C.概要设计说明
D.详细设计说明
15、以程序内部的逻辑结构为基础的测试用例设计技术属于(D)。 ······················(D)
A.灰盒测试
B.数据测试
C.黑盒测试
D.白盒测试
16、软件验证和确认理论是测试过程的理论依据,其中验证是检查我们是否正在正确地建造一个产品,强调的是(A)。··········································································(A)
A.过程的正确性
B.产品的正确性
C.测试的正确性
D.规格说明的正确性
17、下列有关测试过程管理的基本原则,错误的一项是(B)。·····························(B)
A.测试过程管理应该首先建立测试计划
B.测试需求在测试过程中可以是模糊的、非完整的
C.在测试任务较多的情况下,应该建立测试任务的优先级来优化处理
D.整个测试过程应该具有良好的可测性和可跟踪性,强调以数据说话
18、软件质量的定义是(D)。·······································································(D)
A.软件的功能性、可靠性、易用性、效率、可维护性、可移植性
B.满足规定用户需求的能力
C.最大限度达到用户满意
D.软件特性的总和,以及满足规定和潜在用户需求的能力
19、在软件内部/外部质量模型中,可移植性不包括的子特性是(C)。···················(C)
A.适应性
B.共存性
C.兼容性
D.易替换性
20、GB/T16260-2003将软件质量特性分为内部质量特性、外部质量特性和(D)。 ···(D)
A.安全质量特性
B.适用质量特性
C.性能特性
D.使用质量特性
21、两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是(C)个。···············································································································(C)
A.25
B.30
C.50
D.60
22、GB/T16260-2003《软件工程产品质量》规定的软件产品使用质量特性包括(B)。…(B)
A.适应性、生产率、可靠性、满意度
B.有效性、生产率、安全性、满意度
C.有效性、可靠性、适应性、满意度
D.适应性、适用性、效率、满意度
二、论述题:
1、简述软件测试的八个基本原则。
答案解析
1、[答案]:B
[解析]:详见Myers提出的3个重要观点。
2、[答案]:B
[解析]:根据软件测试的概念,软件的开发与测试应该分离开来。所以测试最好由第三方测试机构来做,而调试工作需要对源代码的熟悉程度比较高,最好由程序员来执行。
3、[答案]:C
[解析]:在ISO质量模型中,使用质量包括有效性、生产性、安全性、满意度,稳定性不在其中。
4、[答案]:A
[解析]:CMU SEI的Watts Humphrey指出:“软件产品必须提供用户所需的功能,如果做不到这一点,什么产品都没有意义。”
5、[答案]:B
[解析]:外部度量是在测试和使用软件产品过程中进行的。
6、[答案]:D
[解析]:内部质量是表征软件产品在规定条件下使用时,决定其满足规定的和隐含的要求能
力的产品属性的全体,内部质量是从内部的观点看软件产品的全部特性,内部质量需求包括静态模型、动态模型和其他文档、源代码等。
7、[答案]:D
[解析]:D选项并不在软件缺陷定义的5种情况之中。
8、[答案]:D
[解析]:修复错误所花费的代价是随着时间轴而递增的。
9、[答案]:B
[解析]:软件缺陷严重性有四种级别,分别是:
(1)严重级:致命的错误,造成系统崩溃、死机,或造成数据丢失、主要功能完全丧失等。当这种情况发生时,应设为最高优先级,需要立即修复错误,并停止进一步的测试行为。(2)较严重级:严重错误,指功能模块或特性没有实现,主要功能部分丧失,次要功能全部丧失,或致命的错误声明。
(3)一般级:不太严重的错误,如次要功能模块丧失、提示信息不够准确、用户界面差和操作时间长等。设修复级别为次高优先级,在时间条件允许的情况下应修复。
(4)建议级:一些小问题如有个别错别字、文字排版不整齐等,对功能几乎没有影响,软件产品仍可使用。设修复级别为最低优先级,可以修复也可以先发布产品。
10、[答案]:D
[解析]:软件缺陷有3种基本状态:激活状态(Active或Open)、已修正状态(Fixed或Resolves)、关闭或非激活状态(Close或Inactive)。
11、[答案]:D
[解析]:在软件开发的过程中,软件缺陷的产生是不可避免的。造成软件缺陷的主要因素有:技术问题、团队工作和软件本身。
12、[答案]:B
[解析]:根据软件测试原则:应充分注意测试中的群集现象,可知错误也有群集现象,由此可知本题模块中发现的错误数较多。
13、[答案]:A
[解析]:由测试原则:充分注意测试中的群集现象,可知在测试中应当对错误群集的程序段进行重点测试来提高测试的效率。再根据2-8原则,如果发现某一程序模块似乎比其他程序模块有更多的错误倾向时,则应当花费较多的时间和代价测试这个程序模块。
14、[答案]:A
[解析]:黑盒测试是一种重要的测试策略,又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子,测试目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规格说明书正确运行的环境条件中。测试数据完全来源于软件规格说明。
15、[答案]:D
[解析]:白盒测试是对程序的逻辑结构进行检查,从中获得测试数据,所以说白盒测试是一种以程序内部的逻辑结构为基础的测试用例设计技术。
16、[答案]:A
[解析]:验证是检查软件开发的各个阶段过程活动的结果是否满足规格说明的描述,证实各阶段和阶段之间的逻辑协调性、完备性和正确性。确认是证实在一个给定的外部环境中软件的逻辑正确性,是否满足用户的要求。验证强调的是过程的正确性,确认强调的是产品的正确性。
17、[答案]:B
[解析]:测试需求在测试过程中起到指导性作用,所以测试需求必须是明确的,不能是模糊
的、非完整的。
18、[答案]:D
[解析]:最新版国家标准《软件工程术语》(GB/T11457-2006)中将软件质量定义:软件产品中能满足给定需要的性质和特性的总体。
19、[答案]:C
[解析]:参见图1-1“Boehm质量模型”。
20、[答案]:D
[解析]:按照ISO/IEC9126-1:2001,软件质量特性可以分为内部质量、外部质量和使用质量特性。
21、[答案]:C
[解析]:两组发现的有效缺陷总数为40个,按照软件测试的2-8原则,可计算出总计缺陷约50个。
22、[答案]:B
[解析]:使用质量分成4个特性,分别是有效性、生产率、安全性和满意度。
二、论述题
参考答案:
软件测试的八个基本原则:
(1)所有的软件测试都应追溯到用户需求。
(2)尽早和不断地进行软件测试。
(3)在设计测试用例时,应该包括合理的输入与不合理的输入以及相应的预期的输出结果。(4)充分注意测试中的群集现象。
(5)程序员应避免检查自己的程序。
(6)尽量避免测试的随意性。
(7)应当对每个测试结果做全面的检查。
(8)保留测试文档,包括测试计划、用例、出错统计和最终分析报告。
第二章:软件开发阶段与测试类型
一、选择题:
1、软件设计阶段测试主要采取的方式是()。···········································(C)
A.黑盒测试
B.白盒测试
C.评审
D.动态测试
2、下列不属于内部设计的是()。 ······························································(C)
A.数据设计
B.逻辑设计
C.界面设计
D.结构设计
3、设计阶段的测试对象来自设计文档,下列不属于这一阶段设计文档的是()。 ··(B)
A.逻辑设计规格说明
B.物理设计规格说明
C.内部设计规格说明
D.外部设计规格说明
4、以下属于功能易用性测试关注范畴的是()。 ············································(B)
A.软件提供的功能是否丰富
B.当执行耗时较长的任务时,软件是否能定时向用户提示当前任务完成的进度
C.软件是否能够在多种操作系统环境下运行
D.软件是否能在不同的硬件配置下运行
5、以下说法中错误的是()。 ····································································(D)
A.软件配置项测试的目的是检验软件配置项与软件需求规格说明的一致性
B.软件配置项测试一般由软件供方组织,由独立于软件开发的人员实施,软件开发人员配合
C.软件配置项测试要求被测软件配置项已通过单元测试和集成测试
D.软件配置项测试不得委托第三方实施
6、软件测试按实施组织分,应该包括()。 ··················································(A)
①开发方测试②用户方测试③第三方测试④验收测试⑤确认测试
A.①②③
B.③④⑤
C.①②④
D.①②③④⑤
7、把经过评审通过的各项需求转换为一个相应的体系结构,包括数据的体系结构、系统和软件的体系结构,这是软件生命周期()阶段的工作。 ···································(C)
A.系统和需求定义
B.编程和单元测试
C.软件设计
D.运行和维护
8、对已经交付使用的软件产品进行维护,其目的是为了()。 ··························(D)
A.增加软件的功能或功能上的变更
B.增加软件的功能或功能上的变更,软件产品的工作环境发生变化,引起相应变化
C.在软件使用过程中发现错误需要更正,软件产品的工作环境发生变化,引起相应变化
D.增加软件的功能,或功能上的变更,在软件使用过程中发现错误需要更正,软件产品的工作环境发生变化,引起相应变化
9、下列可以作为软件测试对象的是()。 ·····················································(D)
A.需求规格说明
B.软件设计规格说明
C.源程序
D.以上都是
10、规划阶段实际上指的是()。································································(C)
A.数据获取和定义阶段
B.产品实施规划
C.需求获取和定义阶段
D.测试用例设计阶段
11、单元测试时,调用被测试模块的是()。 ·················································(C)
A.桩模块
B.通信模块
C.驱动模块
D.代理模块
12、测试过程中的4项基本活动是测试策划、测试设计、测试总结和()。··········(A)
A.测试执行
B.测试报告
C.测试度量
D.测试需求
13、软件测试类型按开发阶段划分为()。····················································(B)
A.需求测试、单元测试、集成测试、验证测试
B.单元测试、集成测试、确认测试、系统测试、验收测试
C.单元测试、集成测试、验证测试、确认测试、验收测试
14、下列说法错误的是()。 ······································································(B)
A.单元测试又称为模块测试,是针对软件测试的最小单位——程序模块进行正确性检验的测试工作
B.集成测试也叫做组装测试,通常在编码完成的基础上,将所有的程序模块进行有序的、递增的测试
C. 集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统
D. 系统测试是在真实或模拟系统运行环境下,检查完整的程序系统能否和相关硬件、外设、网络、系统软件和支持平台等进行正确配置与连接,并满足用户需求
15、验收测试的定义是()。 ······································································(C)
A.由用户按照用户手册对软件进行测试以决定是否接收
B.由某个测试机构代表用户按照需求说明书和用户手册对软件进行测试以决定是否接收
C.按照软件任务书或合同、供需双方约定的验收依据进行测试,决定是否接收
D.由开发方和用户按照用户手册执行软件验收
16、在软件设计和编码过程中,下列将使软件更加容易理解和维护的做法为()。(C)
A.良好的程序结构,有无文档均可
B.使用标准或规定之外的语句
C.编写详细正确的文档,采用良好的程序结构
D.尽量减少程序中的注释
二、论述题:
1、简单说明传统的软件生命周期过程包括的几个阶段。
答案解析
1、[答案]:C
[解析]:在设计阶段,测试的对象来自设计文档,主要采用的是评审的方式。
2、[答案]:C
[解析]:内部设计包括功能设计、系统结构设计和逻辑设计,界面设计属于外部设计。
3、[答案]:B
[解析]:逻辑设计规格说明属于内部设计规格说明,设计阶段的测试对象包括外部设计文档、内部设计文档、逻辑设计文档。
4、[答案]:B
[解析]:A选项中提到的软件功能是否丰富是根据软件需求决定的,C、D选项都是兼容性测试关注的范围。
5、[答案]:D
[解析]:软件配置项可以委托第三方实施。
6、[答案]:A
[解析]:验收测试与确认测试都是按照软件开发方式划分的测试类型。
7、[答案]:C
[解析]:开发人员在设计阶段把通过评审的各项需求转换为相应的体系结构,贯标中的每个组成部分都和某需求相对应。
8、[答案]:D
[解析]:增加软件功能或应对变更,修复在使用过程中发现的错误,应对工作环境变化产生的变更都属于维护阶段的工作:将软件投入使用,若发现问题,应适当进行更正。
9、[答案]:D
[解析]:需求规格说明和软件设计规格说明是设计阶段的测试对象,源程序是编码阶段单元的内容。
10、[答案]:C
[解析]:根据规划阶段的目的,可知为需求获取和定义阶段。
11、[答案]:C
[解析]:驱动模块相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。所以在单元测试时,由驱动模块来调用被测模块。
12、[答案]:A
[解析]:测试策划、测试设计均为测试执行前的准备阶段,而测试总结是测试完成后的阶段,所以测试执行是整个测试过程中必需的阶段。
13、[答案]:B
[解析]:传统的软件生命周期过程包括制定计划、系统与软件需求定义、软件设计、编程与单元测试、集成测试与系统测试、运行和维护等几个阶段。所以根据开发阶段划分测试分类为单元测试、集成测试、确认测试,产品交付之前和之后,分别需要系统测试和验收测试。
14、[答案]:B
[解析]:集成测试,通常在单元测试完成之后,将程序模块进行有序的、递增的测试,而不是所有的程序模块。
15、[答案]:C
[解析]:验收测试是以需方为主的测试,其对象是完整的、集成的计算机系统。其目的是在
真实的用户(或称系统)工作环境下检验完整的软件系统是否满足软件开发技术合同(或软件需求规格说明)规定的要求。其结论是软件的需方确定是否接收该软件的主要依据。验收测试以需方为主,但是不一定需要第三方测试机构代表用户来测试;验收测试强调的是根据需求来验证软件是否符合用户要求,所以选C。
16、[答案]:C
[解析]:代码的可读性是非常重要的,每个开发人员的编码风格都有所不同。程序良好的风格表现在源程序文档化、数据说明、语句结构和输入/输出4个方面。
二、论述题
参考答案:
传统的软件生命周期过程包括制定计划、系统与软件需求定义、软件设计、编程与单元测试、集成测试与系统测试、运行和维护等几个阶段。
第三章:桌面检查、代码检查、走查与评审
一、选择题:
1、桌面检查通常由()来实施。································································(C)
A.项目经理
B.架构师
C.程序员
D.软件测试工程师
2、下列不是桌面检查内容的一项是()。 ·····················································(B)
A.常量检查
B.缓冲区溢出检查
C.等价性检查
D.控制流检查
3、下列选项中不属于桌面检查中常量检查内容的是()。 ································(C)
A.常量的取值
B.常量的类型
C.常量的引用率
D.定义与引用的一致性
4、桌面检查的文档是一种()文档。··························································(A)
A.过渡性、不公开的
B.过渡性、公开的
C.非过渡性、不公开的
D.非过渡性、公开的
5、下列选项中不能直接从表中查出说明/使用错误的是()。 ····························(B)
A.循环层次表
B.常数表
C.变量交叉引用表
D.标号交叉引用表
6、程序语句中的小括号配对错误是一种()。 ···············································(A)
A.表达式错误
B.类型错误
C.引用错误
D.接口一致性错误
7、为了检测引用异常,需要检查通过程序的每一条路径。通常采用类似()的方法遍历程序流程图的每一条路径。 ··········································································(C)
A.广度优先
B.随机访问
C.深度优先
D.自底向上
8、代码走查以()方式进行。···································································(B)
A.交互
B.会议
C.自由
D.电话
9、()主持代码走查会议,对整个代码走查过程负责。 ···································(D)
A.记录员
B.测试员
C.程序员
D.协调人
10、在代码走查的计划走查会议阶段,协调人完成的工作不包括()。················(B)
A.组建走查小组
B.设计测试用例
C.安排会议时间
D.分发所需要的材料
11、下列选项中不属于代码走查优点的是()。··············································(C)
A.一旦发现错误,就能够对错误进行精确定位
B.降低了调试成本
C.可以发现兼容性问题
D.可以发现成批的错误
12、代码检查小组的人员()。···································································(D)
A.越多越好
B.越少越好
C.1~2人
D.4~7人
13、下列关于代码检查小组组建过程的描述错误的是()。·······························(C)
A.协调人是整个代码检查工作的负责人
B.小组成员可以由相关部门推荐
C.检查小组必须全部来自开发部门
D. 检查人员的工作量不能超过25%以上
14、下列选项中不属于代码检查过程中协调人的职责的是()。·························(A)
A.在会议上对检查内容进行讲解
B.组建检查小组
C.确定检查是否可以结束
D.改进检查过程
15、下列选项中,不属于代码检查小组成员的是()。·····································(C)
A.开发人员
B.协调人
C.项目经理
D.检查人员
16、代码检查的两个阶段按照顺序分为()。·················································(C)
A.分发资料,执行检查
B.执行检查,评价检查
C.个人准备,召开会议
D.召开会议,个人总结
17、下列关于代码检查辅助工具的描述中,错误的是()。·······························(B)
A.辅助工具可以进行文档检查
B.辅助工具不可以进行会议支持
C.辅助工具可以进行数据收集
D.辅助工具不可以进行自动编码
18、下列选项不属于输入错误检查列表中的输入/输出检查的是()。··················(D)
A.文件属性是否正确
B.缓冲大小与记录大小是否匹配
C.文件在使用前否打开
D.文件扩展名是否为.exe
19、下列关于同行评审的描述中,错误的是()。···········································(B)
A.评审小组成员包括协调人、作者、评审员三种角色
B.代码评审的评定员人数比需求评审人数一般要多
C.作者可以是部门经理或文档撰写人
D.应该控制评审会议的规模,避免人数过多
20、下列过程不属于同行评审的是()。·······················································(C)
A.正式评审
B.技术审查
C.抽查
D.走查
21、下列选项中不属于同行评审内容的是()。··············································(B)
A.用例图
B.可行性研究报告
C.测试用例
D.软件架构设计
22、不属于接口错误的是()。···································································(D)
A.类是否实现接口中的所有方法
B.方法调用的参数类型是否正确
C.是否错误覆盖了父类中的方法
D.是否存在死循环
23、下列关于正式评审流程的描述中,正确的是()。·····································(A)
A.为保证评审的质量,可以先进行一个预备会议
B.评审会议不宜太久,一般以4个小时左右为宜
C.评审报告的内容只包括问题清单
D.评审人员负责解决确定的所有缺陷和问题
24、技术审查流程不包括()。···································································(C)
A.准备
B.评审
C.测试
D.跟踪
25、()不属于桌面检查的内容。································································(A)
A.性能检查
B.常量检查
C.风格检查
D.函数检查
26、桌面检查是一种()的检查方法。 ························································(B)
A.项目经理检查程序员代码
B.程序员自己检查自己的代码
C.测试人员检查程序员的代码
D.桌面检查小组在会议上检查程序员的代码
27、在代码检查中,负责提供关于检查项目的资料并回答检查人员问题的角色是()。………… ························································································(B)
A.协调人
B.开发人员
C.检查人员
D.讲解员
28、下列关于走查的说法不正确的是()。····················································(A)
A.走查的主要工作是由程序编写者本人来完成的
B.走查与代码检查一样,都是以小组为单位进行的
C.走查是一种走查小组集体扮演计算机角色检查源程序的方法
D.走查是借助程序流程图来进行数据流和控制流的分析
二、论述题:
1、请简单描述一下桌面检查、代码走查和代码检查。
答案解析
1、[答案]:C
[解析]:桌面检查是程序员对自己编写的代码进行的检查。
2、[答案]:B
[解析]:缓冲区溢出不是桌面检查的内容,一般需要在软件测试阶段才能发现。
3、[答案]:C
[解析]:常量的引用率不属于桌面检查中的常量检查内容。
4、[答案]:A
[解析]:桌面检查的文档是一种过渡性的文档,不是公开的正式文档。
5、[答案]:B
[解析]:能直接从表中查出说明/使用错误的引用表有:循环层次表、变量交叉引用表、标号交叉引用表等。常数表用于为用户提供辅助信息。
6、[答案]:A
[解析]:程序语句中的小括号配对属于表达式层次的括号配对错误,因此属于表达式错误。
7、[答案]:C
[解析]:引用异常的检测流程是:当扫描抵达一个出度大于1的节点V时,深度优先探测算法要求先检查最左分支的那一部分程序流程,然后再检查其他分支。在遍历最左分支之前,应把定义表与未引用表的当前内容用一个栈中恢复该节点定义表和未引用表的老的副本,然后再去遍历该节点的下一个分支。这个过程要继续到全部分支被检查完为止。
8、[答案]:B
[解析]:代码走查和代码检查以及评审都是采用会议的形式进行的,只有桌面检查是由程序员自己进行的。
9、[答案]:D
[解析]:协调人负责主持代码走查会议,是整个小组的组长。
10、[答案]:B
[解析]:设计测试用例是走查产品阶段的工作内容。
11、[答案]:C
[解析]:兼容性问题需要在系统测试阶段才能发现。
12、[答案]:D
[解析]:一般来说,代码检查小组的人员4~7人为最好。人太少则工作量大,质量难以把握;人太多则交流起来有困难,工作效率不高。
13、[答案]:C
[解析]:检查小组应该来自不同的部门,具有不同的技术领域经验,这样才能够发现更多的问题。
14、[答案]:A
[解析]:对检查内容的讲解是检查员的职责。
15、[答案]:C
[解析]:项目经理属于管理人员,一般不参与技术方面的检查工作。
16、[答案]:C
[解析]:代码检查分为个人准备和召开会议两个阶段,个人准备阶段由小组成员对资料进行熟悉,召开会议的过程则是执行检查过程。
17、[答案]:B
[解析]:辅助工具可以进行会议支持,项目管理人员可以使用计算机监控的个人准备时间信息来剔除那些没有做好个人准备的成员,或者督促他们投入更多的努力。
18、[答案]:D
[解析]:输入/输出错误检查内容包括:
(1)文件属性是否正确。
(2)OPEN语句是否正确。
(3)I/O语句是否符合格式规范。
(4)缓冲大小与记录大小是否匹配。
(5)文件在使用前是否打开。
(6)文件在使用后是否关闭。
(7)文件结束条件是否被正确处理。
(8)是否处理了I/O错误。
19、[答案]:B
[解析]:需求评审的人数一般比较多,代码评审一般只需要2个评审员。
20、[答案]:C
[解析]:抽查不是同行评审的内容,它属于质量检查过程中的一种技术。
21、[答案]:B
[解析]:可行性研究报告是项目立项前的文档,不属于同行评审的内容。
22、[答案]:D
[解析]:是否存在死循环属于控制流程错误。
23、[答案]:A
[解析]:预备会议可以起到提高评审质量的作用:评审会议一般以2小时为宜;评审报告还包括问题的严重程度和其他一些信息;作者负责缺陷的修复。
24、[答案]:C
[解析]:技术审查过程并不包括测试的内容,评审本身就是一种特殊的测试技术。
25、[答案]:A
[解析]:参见3.1.1节桌面检查的内容。
26、[答案]:B
[解析]:桌面检查就是程序员对自己的代码进行一次自我检查,“桌面检查”技术在众多行业中都存在,是人们对工作成果自我完善的一种技巧。
27、[答案]:B
[解析]:参见3.3.2节代码检查小组成员角色和职责开发人员职责。
28、[答案]:A
[解析]:代码走查由专门的走查小组完成,只有桌面检查由开发人员自己完成。
二、论述题
参考答案:
桌面检查就是程序员对自己的代码进行一次自我检查。
代码走查是成立一个代码走查小组,以会议的方式来检查代码,一般代码走查是项目内部展开的代码检查工作。
代码检查是组成一个小组来对代码进行阅读,应用预先定义好的标准和检查技术,来检
查已经编写好的程序和文档,发现错误和缺陷的过程。
第四章:覆盖率(白盒)测试
一、选择题:
1、使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。·············(A)
A.程序的内部逻辑
B.程序的复杂结构
C.使用说明书
D.程序的功能
2、下列选项中不属于覆盖率对软件测试作用的是()。 ···································(D)
A.得知测试是否充分
B.了解测试的弱点在哪些方面
C.指导设计能够增加覆盖率的测试用例
D.协助找出代码中的语法错误
3、如果程序中有两个判定条件,其复合条件表达式分别为(a=1)and(b<10)和(a>0)or (c<4),为了达到100%的判定覆盖率,至少需要设计的测试用例个数为()个。………………·······················································································(B)
A.1
B.2
C.3
D.4
4、以下程序的路径数为()条。································································(B)
A.3
B.6
C.8
D.12
if(a>0)
{
If(b>0)
Result=a+b;
}
if(c>0)result+=1;
5、数据流覆盖关注的是程序中某个变量从其声明、赋值到引用的变化情况,它是()的变种。······································································································(C)
A.语句覆盖
B.判定覆盖
C.路径覆盖
D.分支覆盖
6、下列选项中不能作为定义节点的是()。 ··················································(D)
A.过程调用
B.循环控制语句
C.输入语句
D.输出语句
7、下列选项中不能作为使用节点的是()。 ··················································(C)
A.过程调用
B.循环控制语句
C.输入语句
D.输出语句
8、以下程序如果采用路径覆盖法进行测试,则至少需要()个测试用例。··········(C)if(result==null || result.getRowCount()==0){
found=false;
System.out.println(“没有结果!!!”);
}else{
if(type==1)
found=true;
else
found=false;
}
A.2
B.3
C.4
D.5
9、路径覆盖必定也满足()。 ····································································(C)
A.判定覆盖
B.条件覆盖
C.语句覆盖
D.多条件覆盖
10、在用逻辑覆盖法设计测试用例时,有语句覆盖、分支覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等。其中()是最强的覆盖准则。 ·····························(D)
A.语句覆盖
B.条件覆盖
C.判定/条件覆盖
D.路径覆盖
11、白盒测试方法的优点是()。 ································································(C)
A.可测试软件的特定部位
B.能站在用户立场测试
C.可按程序内部结构测试
D.可发现实现功能需求中的错误
12、白盒测试方法的缺点是()和()。····················································(B)
①不可测试软件的特定部位②不能发现功能需求中的错误/
③无法检验软件的外部特性④无法测试未实现功能需求的软件的内部缺陷
A.①②
B.②③
C.③④
D.①④
13、多条件覆盖是一种逻辑覆盖,它的含义是设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次,满足多条件覆盖级别的测试用例也是满足()级别的。…………·····························································································(A)
A.语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖
B.判定覆盖、条件覆盖、条件判定组合覆盖、修正条件判定覆盖
C.语句覆盖、判定覆盖、条件判定组合覆盖、修正条件判定覆盖
D.路径覆盖、判定覆盖、条件覆盖、条件判定组合覆盖
14、对于一个嵌套型分支结构的程序,若有4个判定语句,则要覆盖它的每一条路径至少需要的测试用例数为()个。 ·······································································(C)
A.4
B.3
C.5
D.6
15、关于数据流测试,说法正确的是()。····················································(A)
A.数据流测试是一种路径测试
B.执行定义节点不会改变变量在存储单元中的内容
C.执行使用节点会改变变量在存储单元中的内容
D.定义/使用路径往往不是存在潜在的错误的地方
16、如果一个判定句中的复合条件表达式为(A>1)or(B<=3),则为了达到100%的判定覆盖率,至少需要设计()个测试用例。 ························································(B)
A.1
B.2
C.3
D.4
17、下列几种逻辑覆盖标准中,设计足够的测试用例,运行被测程序,使得程序中所有可能的路径至少执行一次,称为()。································································(D)
A.判定覆盖
B.条件覆盖
C.语句覆盖
D.路径覆盖
18、在程序控制流图中,有8条边、6个节点,则控制流图的环路复杂性V(G)等于()。………… ························································································(B)
A.2
B.4
C.6
D.8
19、针对程序段if(x>10)AND(y<20)then w=w/a,对于(x,y)的取值,以下()组测试用例能够满足判定覆盖的要求。 ····································································(D)
A.(30,50)(40,10)
B.(3,0)(30,30)
C.(5,25)(10,20)
D.(20,10)(1,100)
20、下列选择测试覆盖率原则正确的是()。·················································(C)
A.保证100%的覆盖率
B.路径覆盖率最强,因此任何测试都应该选择路径覆盖
C.覆盖率不是目的,只是手段
D.达到了100%的测试覆盖率,就可以保证所有的错误都被检测出来
二、论述题:
1、请将以下程序分别按照语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多条件覆盖设计测试用例。
if((a>2&&b<3)&&(c>4||d<5))
{
statement1;
}
else
{
statement2;
}
2、以下使用C语言编写,它根据输入的分数计算学生的成绩等级。
int score2leve1(int score)
{
int leve1;
if(score>100||score<0)level=-1 ;
else if(score>=90)level=1 ;
else if(score>=80)leve1=2;
else if(score>=70)leve1=3;
else if(score>=60)leve1=4;
else leve1=5;
return leve1;
}
请画出上面程序的控制流图,计算上述控制流图的环路复杂度V(G)。
3、以下程序的作用是从i到n个元素的序列A[i…n]中选取具有最小值的元素,通过下标k 得到该元素的位置。现对程序执行简单循环,限定循环次数为0次、1次和2次,请设计该程序的简单循环测试用例。
int minvalue(int A[],int n,int i)
{
int k=I;
for(int j=i+1;j<=n;j++)