软件测试技术基础教程第2版习题答案.docx
- 文档编号:8717087
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:21
- 大小:76.73KB
软件测试技术基础教程第2版习题答案.docx
《软件测试技术基础教程第2版习题答案.docx》由会员分享,可在线阅读,更多相关《软件测试技术基础教程第2版习题答案.docx(21页珍藏版)》请在冰豆网上搜索。
软件测试技术基础教程第2版习题答案
第一章软件测试理论
一、选择题
1、C2、A3、D4、B5、D6、D7、B8、B
二、简答题
1.
参考答案:
软件测试是伴随着软件的产生而产生的。
在软件行业发展初期,没有系统意义上的软件测试,更多的是一种类似调试的测试,测试用例的设计和选取也都是根据测试人员的经验随机进行的,大多数测试的目的是为了证明系统可以正常运行。
到了20世纪70年代以后,很多测试理论和测试方法应运而生,逐渐形成了一套完整的体系。
在产业界,从20世纪70年代后期到20世纪80年代中期,很多软件企业成立了QA或者SQA部门。
后来QA的职能转变为流程监控(包括监控测试流程),而测试(Testing)则从QA中分离出来成为独立的组织职能。
到了20世纪80年代初期,一些软件测试的基础理论和实用技术开始形成,软件测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容。
软件测试已有了行业标准(IEEE/ANSI)。
在我国,软件测试目前还没有形成一个真正的产业,尚处于起步阶段。
但是,在国内,现在在软件测试行业中各种软件测试的方法、技术和标准都还在探索阶段。
总之,国内软件测试行业与一些发达国家相比还存在一定的差距。
2.
参考答案:
软件缺陷造成的修复费用随着时间的推移呈指数级地增长,如下图所示。
3.
参考答案:
软件测试的复杂性体现在:
Ø不可能对程序实现完全测试。
Ø杀虫剂现象,即为了克服被测试软件的免疫力,软件测试员必须不断编写新的测试程序,对程序的各个部分进行不断测试,以避免被测试软件对单一的测试程序具有免疫力而使软件缺陷不被发现。
Ø软件测试的代价不容易掌握,因为随着测试量的增加,测试成本将呈几何数级上升,而软件缺陷数量降低到某一数值之后将没有明显的变化,寻求最优测试点,掌握好测试工作量是至关重要的。
Ø在实际操作过程中,测试人员要进行正确的判断,合理的取舍,根据风险分析来决定哪些故障需要修复,哪些故障可以不修复,即并不是所有的软件缺陷都需要被修复。
4.
参考答案:
软件测试是软件生命期中费用消耗最大的环节。
测试费用除了测试的直接消耗外,还包括其他的相关费用。
影响测试费用的主要因素有:
(1)软件的功能,软件产品需要达到的标准决定了测试的数量。
对于那些至关重要的系统必须进行更多的测试。
(2)目标用户的数量,一个系统的目标用户数量的多少也在很大程度上影响了测试必要性的程度。
(3)潜在缺陷造成的影响
在考虑测试的必要性时,还需要将系统中所包含的信息价值考虑在内。
因此我们应该从经济方面考虑,投入与经济价值相对应的时间和金钱去进行测试。
(4)开发机构的业务能力
一个没有标准和缺少经验的开发机构很可能会开发出充满错误的软件系统。
而一个建立了标准和有很多经验的开发机构开发出来的软件系统中的错误将会少很多。
(5)测试的时机
测试量会随时间的推移发生改变,在一个竞争很激烈的市场里,争取时间可能是制胜的关键。
测试量应该针对合适的目标进行调整。
5.
参考答案:
软件测试是贯穿于整个软件开发的过程。
在软件开发的各个阶段,测试人员必须制订本阶段的测试方案,把软件开发和测试活动集成到一起,如下图所示。
6.
参考答案:
软件测试从测试计划编写到测试实施,需要经过一系列的过程。
这些测试按软件从编写到交付的各个阶段的先后顺序可分为:
单元测试、集成测试、确认(有效性)测试、系统测试和验收(用户)测试5个阶段,如下图所示。
7.
参考答案:
通常软件人员应具备如下素质:
(1)良好的沟通能力
(2)掌握比较全面的技术
(3)充分的自信心
(4)足够的耐心和责任感
(5)要具备怀疑精神和学习能力
(6)超强的记忆力和良好的洞察力
第2章白盒测试技术
一、选择题
1、B2、C3、A4、D5、B
6、B7、C8、C9、A10、A
三、简答题
1.
参考答案:
白盒测试方法可以分为两大类:
静态测试方法和动态测试方法,动态测试方法是设计一系列的测试用例,通过输入预先设定好的数据来动态地运行程序,从而达到发现程序错误的目的。
静态测试方法则不在计算机上实际执行程序,而是以一些人工的模拟技术或使用测试软件对软件进行分析和测试。
动态测试方法主要有逻辑覆盖、独立路径测试等。
静态测试方法主要有静态结构分析、静态质量度量、代码检查方法等。
2.
参考答案:
根据不同的测试要求,覆盖测试可以分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
语句覆盖就是设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。
判定覆盖又称分支覆盖,就是设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。
条件覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断语句中的每个逻辑条件的可能值至少被满足一次。
或者说设计足够多的测试用例,使得被测试程序中的每个逻辑条件的可能值至少被满足一次。
判定/条件覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。
即同时满足100%判定覆盖和100%条件覆盖的标准。
在保证完成要求的情况下,测试用例的数目越少越好。
条件组合覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合至少被满足一次。
路径覆盖就是设计足够多的测试用例,使得被测试程序中的每条路径至少被覆盖一次。
3.
参考答案:
独立路径测试的基本步骤是:
步骤1:
根据源程序导出程序控制流图。
步骤2:
根据程序环形复杂度的计算公式,求出程序环形复杂度。
步骤3:
根据上面环形复杂度的计算结果,设计测试用例。
4.
参考答案:
(1)请画出以上代码的控制流图。
注意:
需要将复合条件分开单独画成节点。
例如:
month>=1&&month<=12分别用节点2-1,2-2表示
month==4||month==6||month==9||month==11分别用节点21-1,21-2,21-3,21-4表示
(2)请计算上述控制流图的环复杂度V(G)(独立线性路径数)
区域法:
V(G)=11
边与节点的关系:
V(G)=27-18+2=11
判定节点的关系:
V(G)=10+1=11
(3)假设输入的取值范围是1000 测试用例编号 year month maxday 覆盖的路径 1 1500 0 0 2-1,26 2 1500 16 0 2-2,26 3 1500 4 30 2-1,2-2,4,21-1,22,25,26 4 1500 6 30 2-1,2-2,4,21-1,21-2,22,25,26 5 1500 9 30 2-1,2-2,4,21-1,21-2,21-3,22,25,26 6 1500 11 30 2-1,2-2,4,21-1,21-2,21-3,21-4,22,25,26 7 1500 7 31 2-1,2-2,4,21-1,21-2,21-3,21-4,24,25,26 8 1201 2 28 2-1,2-2,4,6,20,25,26 9 1240 2 29 2-1,2-2,4,6,8,17,20,25,26 10 1300 2 28 2-1,2-2,4,6,8,10,14,17,20,25,26 11 2000 2 29 2-1,2-2,4,6,8,10,11,14,17,20,25,26 第3章黑盒测试技术 一、选择题 1、B2、B3、A4、C5、B6、C 二、填空题 1.测试程序时,不可能遍历所有可能的输入数据,而只能是选择一个子集进行测试,那么最好的方法是等价类划分法。 2.边界值分析法的测试用例来自于等价类划分的边界。 3.决策表由_条件桩__、_动作桩__、_条件项__、_动作项__4个部分构成。 4.因果图分析法适用于输入条件之间有多种组合情况。 三、简答题 1. 参考答案: 黑盒测试又称功能测试或数据驱动的测试,主要从用户的观点出发,以软件规格说明书为依据,着重测试软件的功能需求,对程序功能和程序接口进行测试。 白盒测试是按照程序内部的结构测试程序检测产品内部动作是否按照软件设计说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。 2. 参考答案: 黑盒测试有两种基本方法,即通过测试和失败测试。 在进行通过测试时,实际上是确认软件能做什么,而不会去考验其能力如何,软件测试人员只是运用最简单、最直观的测试案例。 在设计和执行测试案例时,总是要先进行通过测试,验证软件的基本功能是否都已实现。 在确信软件能正确运行之后,就可以采取各种手段通过搞垮软件来找出缺陷。 这种纯粹为了破坏软件而设计和执行的测试案例,称为失败测试或迫使出错测试。 3. 参考答案: 使用边界值分析方法设计测试用例,首先应确定边界情况。 通常输入和输出等价类的边界,就是应着重测试的边界情况。 应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。 在黑盒测试中,由于采用穷举法不可行,一般可以采用等级类划分法进行初步的测试用例设计,然后再根据边界情况采用边界值分析法补充相应的测试用例。 4. 参考答案: (1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。 v年龄: 一位或两位非零整数,值的有效范围为1~99 v性别: 一位英文字符,只能取值‘M’或’F’ v婚姻: 字符,只能取值‘已婚’或‘未婚’ v抚养人数: 空白或一位非零整数(1~9) v点数: 一位或两位非零整数,值的范围为1~99 输入条件 有效等价类 编号 无效等价类 编号 年龄 20~39岁 1 40~59岁 2 1~19岁 60~99岁 3 小于1 12 大于99 13 性别 单个英文字符 4 非英文字符 14 非单个英文字符 15 ‘M’ 5 除‘M’和‘F’之外的 其它单个字符 16 ‘F’ 6 婚姻 已婚 7 除’已婚’和’未婚’之外的其它字符 17 未婚 8 抚养人数 空白 9 除空白和数字之外 的其它字符 18 1~6人 10 小于1 19 6~9人 11 大于9 20 (2)根据 (1)中的等价类表,设计能覆盖所有等价类的测试用例 测试用例 编号 输入数据 预期输出 年龄 性别 婚姻 抚养人数 保险费率 1 27 F 未婚 空白 0.6% 2 50 M 已婚 2 0.6% 3 70 F 已婚 7 0.1% 4 0 M 未婚 空白 无法推算 5 100 F 已婚 3 无法推算 6 99 男 已婚 4 无法推算 7 1 Child 未婚 空白 无法推算 8 45 N 已婚 5 无法推算 9 38 F 离婚 1 无法推算 10 62 M 已婚 没有 无法推算 11 18 F 未婚 0 无法推算 12 40 M 未婚 10 无法推算 第4章软件测试计划、文档及测试用例 一、简答题 1.参考答案: 测试计划的目的是明确测试活动的意图,它规范了软件测试内容、方法和过程,为有组织地完成测试任务提供保障。 测试计划的主要内容包括: 测试目的、测试范围、测试对象、测试策略、测试任务、测试用例、资源配置、测试结果分析和度量及测试风险评估等,测试计划应当足够完整但也不应当太详尽。 2. 参考答案: 测试文档(TestingDocumentation)是测试活动中非常重要的文件,用来记录和描述整个测试流程。 整个测试流程会产生很多个测试文档,一般可以把测试文档分为两类: 测试计划类文档和测试分析报告类文档。 测试计划类文档描述将要进行的测试活动的范围、方法、资源和时间进度等,如测试计划、测试设计规格说明、测试用例规格说明和测试步骤规格说明等。 测试分析报告类文档是对测试结果进行分析说明,说明软件经过测试以后,结论性的意见如何,软件的能力如何,存在哪些缺陷和限制等,如测试日志、测试事件报告、测试总结报告等。 3. 参考答案: 测试计划为实现可管理且高质量的测试过程提供基础。 在制订测试计划时,要避免把测试单纯理解成系统测试,或者把各类型测试设计(测试用例的编写和测试数据准备)全部放入生命周期的“测试阶段”,合理的测试阶段应遵循如下图所示的划分方法。 需求 设计 编码 单元测试 集成测试 系统测试 确认测试 单元测试 计划 设计 执行 集成测试 计划 设计 执行 系统测试 计划 设计 执行 确认测试 计划、设计 执行 图4-1测试与项目开发生命周期的关系 在项目开发生命周期的各个阶段可以同步进行相应的测试计划编制,而测试设计也可以结合在开发过程中实现并行,测试的实施即执行测试的活动可连贯在开发之后。 4. 参考答案: 软件测试的过程是由一系列的不同测试阶段所组成,这些软件测试的步骤分为: 需求分析审查、设计审查、单元测试、集成测试(组装测试)、功能测试、系统测试、验收测试、版本发布、回归测试(维护)等。 软件生命周期各阶段的测试任务与可交付的文档详细内容如下表所示。 阶 段 输入和要求 输出 需求分析审查 RequirementsReview 市场/产品需求定义、分析文档和相关技术文档。 要求: 需求定义要准确、完整和一致,真正理解客户的需求 需求定义中问题列表,批准的需求分析文档。 测试计划书的起草 设计审查 DesignReview 产品规格设计说明、系统架构和技术设计文档、测试计划和测试用例。 要求: 系统结构的合理性、处理过程的正确性、数据库的规范化、模块的独立性等清楚定义测试计划的策略、范围、资源和风险,测试用例的有效性和完备性 设计问题列表、批准的各类设计文档、系统和功能的测试计划和测试用例。 测试环境的准备 单元测试 UnitTesting 源程序、编程规范、产品规格设计说明书和详细的程序设计文档。 要求: 遵守规范、模块的高内聚性、功能实现的一致性和正确性 缺陷报告、跟踪报告;完善的测试用例、测试计划。 对系统功能及其实现等了解清楚 集成测试 IntegrationTesting 通过单元测试的模块或组件、编程规范、集成测试规格说明和程序设计文档、系统设计文档。 要求: 接口定义清楚且正确、模块或组件一起工作正常、能集成为完整的系统 缺陷报告、跟踪报告;完善的测试用例、测试计划;集成测试分析报告; 集成后的系统 功能测试 Functionality Testing 代码软件包(含文档),功能详细设计说明书;测试 计划和用例。 要求: 模块集成功能的正确性、适用性 缺陷报告、代码完成状态报告、功能验证测试报告 系统测试 System Testing 修改后的软件包、测试环境、系统测试用例和测试 计划。 要求: 系统能正常地、有效的运行,包括性能、可靠性、安全性、兼容性等。 缺陷报告、系统性能分析报告、缺陷状态报告、阶段性测试报告 验收测试 Acceptance Testing 产品规格设计说明、预发布的软件包、确认测试用例 要求: 向用户表明系统能够按照预定要求那样工作,使系统最终可以正式发布或向用户提供服务。 用户要参与验收测试,包括α测试(内部用户测试)、β测试(外部用户测试)。 用户验收报告、缺陷报告审查、版本审查。 最终测试报告 版本发布 Release 软件发布包、软件发布检查表(清单) 当前版本已知问题的清单、版本发布报告 维护 Maintance 变更的需求、修改的软件包、测试用例和计划。 要求: 新的或增强的功能正常、原有的功能正常,不能出现回归缺陷 缺陷报告、更改跟踪报告、测试报告 5. 参考答案: 测试用例的内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。 测试用例通常根据其所关联的测试类型或测试需求来分类,而且将随类型和需求进行相应地改变。 最佳方案是为每个测试需求至少编制两个测试用例: 一个测试用例用于证明该需求已经满足,通常称作正面测试用例;另一个测试用例反映某个无法接受、反常或意外的条件或数据,用于论证只有在所需条件下才能够满足该需求,这个测试用例称作负面测试用例。 6.举例说明测试用例的设计方法。 参考答案: 略 7.请以某个实际工作为例,详细的描述一次测试用例设计的完整的过程。 参考答案: 略 8.选择一个小型应用系统,为其做出系统测试的计划书、设计测试用例并写出测试总结报告。 参考答案: 略 第5章软件自动化测试 1.简述软件测试自动化的意义和作用。 软件自动化测试的意义是减轻手工测试的工作量,从而达到提高软件质量的目的。 软件自动化测试的作用包括: 它能完成许多手工测试无法实现的或者难以实现的测试,甚至可以提供要比手工测试更好、更快的测试执行方式,可以省去许多繁杂的工作,节省大量的测试时间。 实施正确、合理的自动化测试,能够快速、完整地对软件进行测试,从而提高软件的质量,进而提高对整个软件开发工作的质量并节约软件开发经费,缩短软件产品发布的周期,带来显著的生产效果和经济效益。 2.简述自动化测试和手工测试有什么主要区别。 自动化测试并不能完全取代手工测试,二者各有优缺点。 通常手工测试的目的着重于发现新的软件故障,而自动化测试则着重于发现旧的软件故障。 手工测试具有创造性,可以举一反三,从一个测试用例想到另外一些测试用例,特别是可以考虑到测试用例不能覆盖的一些特殊的或边界的情况。 同时,对于那些复杂的逻辑判断、界面是否友好,手工测试具有明显的优势。 自动化测试可以对程序的新版本运行回归测试,可以运行更多更频繁的测试,可以进行一些手工测试难以完成或不可能完成的测试,充分地利用资源,测试具有一致性、可重复性和复用性,能缩短软件发布的时间,并增强软件的可靠性。 3.自动化测试工具大致可以分为几类? 举例说明几种与之相对应的测试工具。 根据测试方法的不同,自动化测试工具可以分为白盒测试工具、黑盒测试工具和测试管理工具。 白盒测试工具又可以分为静态测试工具和动态测试工具。 其中静态测试工具的代表有Telelogic公司的Logiscope软件、PR公司的PRQA软件。 动态测试工具的代表有Compuware公司的DevPartner软件、Rational公司的Purify 软件。 黑盒测试工具适用于系统功能测试和性能测试,黑盒测试工具的代表有Rational公司的TeamTest、Compuware公司的QACenter。 测试管理工具用于对测试进行管理。 测试管理工具的代表有Rational公司的TeamManager、Compuware公司的TrackRecord、MercuryInteractive公司的TestDirector等软件。 4.简述对常用自动化测试工具的认识。 (略) 5.试从网络上免费下载自动化测试工具,并在客户机或服务器上安装和运行。 (略) 6.下载本章所介绍的白盒测试、黑盒测试、负载测试等工具,学习其主要功能及使用方法,尝试进行实例测试。 (略) 第6章面向对象的软件测试 1.简述面向对象的特点与其测试的概念。 面向对象的特点包括对象唯一性、抽象性、继承性和多态性等。 除了运用传统的面向过程的测试方法,面向对象的测试还综合考虑面向对象软件存在的诸如继承、关联、动态绑定等关系,针对面向对象软件进行的测试。 2.面向对象的软件测试与传统的软件测试有什么区别? 与传统的面向过程的程序设计相比,面向对象程序设计产生错误的可能性增大或者使得传统软件测试中的重点不再那么突出,使原来测试经验和实践证明的次要方面成为了主要问题。 此外,与传统软件相比,由于存在的诸如继承、关联、动态绑定等关系,面向对象软件具有更复杂的依赖关系,一个类将不可避免的依赖于其他的类,从而增加了面向对象软件测试的难度。 3.通常情况下,类测试驱动程序是由测试人员还是程序员进行开发的? 一般由开发人员来开发。 4.如何进行面向对象交互测试? 面向对象交互测试的重点是确保对象之间能够正确地进行消息传递。 测试的前提是参与交互的类已经被单独测试过,且具有完整的实现。 交互测试有两种方法,一种方法是将交互对象嵌入到应用程序中进行测试,另一种是在独立的测试工具提供的环境中使对象相互交互来执行测试。 5.如何进行面向对象系统测试? 系统测试应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测试系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段。 系统测试时,应该参考面向对象分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全“再现”问题空间。 系统测试不仅是检测软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认。 可以使用两种方式选择系统的测试用例。 一种是确定用户使用系统的使用概貌,即确定用户是怎样使用系统的,然后根据这些步骤创建测试用例;另一种是分析产品可能包含的缺陷类型,然后编写测试用例来检测这些缺陷。 为了测试需求的一致性,可以从说明需求的用例来构建测试用例。 第7章Web网站测试 1.简述Web网站的测试内容。 Web网站测试的内容包含: 功能测试、性能测试、安全性测试、可用性/易用性测试、配置和兼容性测试、数据库测试、代码合法性测试和完成测试。 2.功能测试包括哪些方面? 功能测试主要包括: 页面内容测试、链接测试、表单测试、Cookies测试和设计语言测试。 3.负载/压力测试的作用是什么? 负载测试主要是为了测试C/S系统在某一负载级别上的性能,以保证系统能在同一时间响应大量的用户,在需求范围内能够正常工作。 压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。 4.概括安全性测试中的登录测试内容。 登录测试内容主要有: ✧测试用户名和输入密码是否有大小写区别。 ✧测试有效和无效的用户名和密码。 ✧测试用户登录是否有次数限制,是否限制从某些IP地址登录。 ✧假设允许登录失败的次数为3次,那么在用户第3次登录的时候输入正确的用户名和口令,测试是否能通过验证。 ✧测试口令选择是否有规则限制。 ✧测试哪些网页和文件需要登录才能访问和下载。 ✧测试是否可以不登录而直接浏览某个页面。 ✧测试Web应用系统是否有超时的限制,也就是说,用户登录后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登录才能正常使用。 5.简述兼容性测试。 兼容性测试需要测试各种操作系统平台、浏览器、打印机以及上述的组合测试。 6.简述数据库测试。 数据库测试是Web网站测试的一个基本组成部分。 测试人员要真正
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 技术 基础教程 习题 答案