1、第一章 软件质量保证练习答案1、 软件质量的定义?软件质量是软件产品满足使用要求的程度。对于软件质量的衡量,就是高质量的软件系统能够准时地交付给用户,所耗费的成本不超出预算,并且最重要的是,能够正常地运行。“正常地运行”意味着该软件必须尽可能没有缺陷(bug)。2、 软件质量保证的定义?软件质量保证是一系列系统性的活动,它提供开发出满足使用要求产品的软件过程的能力证据。3、 质量控制中的测试技术有哪些?想一想各自的适用情况。审查(Inspection):软件的一种基本测试方法,它以一系列典型问题为依据进行检测。走查(Walkthrough):一对一的审查,比审查更加仔细。回顾(Review):
2、以发现软件中存在的错误和缺陷为目的的一种软件测试方法,它是在软件证实执行之前完成。4、 SDLC各阶段的文档有哪些,各自的质量目标是什么?请参照学生用书3-5页,对于各阶段的目标,抓住主要的要点。5、 质量计划的手段和技巧分别有哪些?A、效益成本分析B、基本水平标准C、流程图,包括因果图、系统程序流程图等D、试验设计6、质量控制的手段和技巧分别有哪些? 有以下控制的手段和技巧:检验、控制表、排列图、抽样调查统计、流程图和趋势分析等。作业答案1、判断是非:好的测试员不懈追求完美。 错。好的测试员知道何时完美无法企及,何时达到“够好”。2、有没有质量很高但是可靠性很差的产品?请举例说明。 有可能,
3、但是它取决于客户对质量的期望。不少人购买高性能跑车,认为提速、时速、式样、舒适度和装饰好就是高质量。此类汽车一般可靠性差,经常抛锚,修理费用昂贵,而车主不把可靠性差当作质量问题。3、请思考,可能完全测试程序吗? 除了极短小的简单程序,完全测试需要太多的输入、输出和分支组合。此外,软件说明书也许不客观,可以用多种方式解释。4、在学习完本章后,判断下列哪种方法会减少成本: a、让客户去找缺陷b、发现缺陷而不是预防它们c、预防缺陷而不是发现它们d、忽视小的缺陷答案:c第二章 测试技术练习答案1. 对2. 错3. 代码4. 功能5. 归纳法、演绎法和回溯法。6. 对7. 错作业答案1、列举软件测试原则
4、 软件测试过程中需要创建试用例来“破坏系统”,但在设计用例之前,需要遵循以下几个原则: 完全测试程序是不可能的 软件测试是有风险的行为 测试无法显示潜伏的软件缺陷 找到的软件缺陷越多,就说明软件缺陷越多 并非所有软件缺陷都能修复 软件测试一项讲究条理的技术专业2、d3、a第三章 测试工具练习答案1. b2. 对3. 错4. 错5. 对作业答案第1题答案: Panorama2-C/C+的主要好处如下:1. 全面:它支持 - 错误较少和风险较小的编码; 使用图表理解、复查和检查代码; 对系统结构、类继承、控制流等的静态分析; 通过程序逻辑分析和图表来检查逻辑错误; 通过指定自下而上的测试顺序而不设
5、计和使用占位程序函数来进行增量式的单元和集成测试; 代码执行频率分析(在分支/段级别); 对类模板、常规类、函数、块、分支、段和条件输出的基于.mak文件且面向对象的代码测试以及测试覆盖分析,同时以图形化方式显示测试结果并突出显示未执行的元素; 自动错误模拟; 测试执行监视; 在测试结果和需求/测试用例间进行跟踪; 数据(全局和静态变量)使用分析; 运行时错误分析和运行时错误定位(显示错误在源代码中的原始行数); 质量标准值设置; 突出相关代码并报告相关数据的安全代码修改; NFS网络中的客户端 服务器应用程序;2. 自动化:只需输入.mak文件/批处理文件和测试脚本文件,所有的静态和动态分析
6、结果都会自动生成。3. 集成:所有的工具协同工作并共享一个增量式数据库。4. 易于查看结果:程序的所有静态和动态分析结果都可以通过以不同颜色进行标记的图/图表来生动表示。5. 易于使用:提供Motif/OpenLook/Widows GUI、在线帮助和逐步的演示指导。 Panorama2-C/C+的主要局限有以下几点: 1、中文显示问题(对于这个缺点,请教师和学员在上机安排过程中,注意自己的操作系统环境,在一些显示中可能会有乱码,但这些乱码一般不会影响对于最终) 2、使用自己的脚本技术,但这种脚本技术与其他的测试工具不兼容 3、需要执行.mak文件,而不是编译C程序后生成的.obj文件 4、仅
7、能处理C/C+程序 5、界面不够友好第四章 测试计划和单元测试练习答案1. 对2. 对3. 错4. 等价划分5. 白盒6. 对7. 对作业答案第1题答案:单元测试说明书由一系列单元测试用例组成。每个单元测试用例都应该包括四个基本要素: 单元的初始状态说明,这是测试用例的起点(仅适用于单元在各次调用之间保持状态不变的情形) 单元的输入,包括单元读入的任何外部数据的值 测试用例实际要测试的内容,根据单元的功能性以及在设计测试用例时采用的分析(例如,要测试单元中的哪些判定)来制订 测试用例的预期结果(测试用例的预期结果应该始终在执行测试之前在测试说明书中定义好)第2题答案:制定单元测试说明书所包括的
8、步骤:步骤1 - 使它运行起来任何单元测试说明书的第一个测试用例的目的都应该是尽可能以最简单的方式来执行被测试的单元。实际执行测试时,知道至少第一个单元测试能够执行将可以大大增强信心。如果执行不了的话,那么更可取的做法是进行简单的调试(例如从起点开始)。合适的技术: 根据说明书进行的测试 等价划分步骤2 正面测试测试用例应该设计为能够表明被测试的单元实现了它应该实现的功能。测试设计者应该通读相关的说明书;每个测试用例应该测试说明书中的一条或多条陈述。涉及到多个说明书时,最好能够使测试用例的顺序与单元主要说明书上的陈述的顺序相对应。合适的技术: 根据说明书进行的测试 等价划分 状态变换测试步骤3
9、负面测试应该改进现有的测试用例并且设计更进一步的测试用例,以表明软件没有实现任何未指明要完成的功能。此步骤主要依赖于错误猜测,依赖于测试设计者预测问题域的经验。合适的技术: 错误猜测 边界值分析 内部边界值测试 状态变换测试步骤4特殊事项测试用例应该设计为针对性能、安全需求和保密需求等问题。特别是在安全和保密方面,可以很方便地对测试用例进行特殊重点考虑,以帮助进行保密分析或安全分析和证明。针对保密问题和安全危险而设计好的测试用例应该在单元测试说明书中加以标识。此外,还应该在单元测试说明书中添加测试用例,以确保该单元所有可能的保密问题和安全危险都得到充分体现。合适的技术: 根据说明书进行的测试步
10、骤5覆盖测试设计好的测试用例可能达到的测试覆盖率应该是可视化的。此外,可以在单元测试说明书中添加测试用例以达到特定的测试覆盖目标。设计好覆盖测试之后,就可以制定测试规程并执行测试。合适的技术: 分支测试 条件测试 数据定义-使用测试 状态变换测试步骤6执行测试根据上面五个步骤设计的测试说明书在大多数情况下都应该能为单元提供全面的测试。在此阶段,可以使用该测试说明书来制定实际的测试规程,这个测试规程将用于执行这些测试。测试规程的执行将识别单元中的错误,然后可以更正这些错误并对该单元重新进行测试。测试规程执行期间的动态分析将会测量测试的覆盖率,表明覆盖目标是否已经达到。于是,设计测试说明书的过程中
11、还要有一个更进一步的覆盖完成步骤。步骤7覆盖完成除代码本身外,单元内的处理过程可能没有其他结构说明书,这取决于组织对单元说明书的标准。制定测试说明书的过程中有可能会有人为的错误。结果,代码中可能存在一些复杂的判定条件、循环和分支,执行测试时,可能未达到它们的覆盖目标。在未达到覆盖目标情况下,应该进行分析以确定其背后的原因。第3题答案:错误猜测主要是凭经验,同时还需要诸如边界值分析等其他技术的一些辅助。凭借经验,测试设计者猜测特定类型的软件中可能出现的错误类型,并设计测试用例来找到它们。例如,如果有任何类型的资源是动态分配的,那么查找错误的一个好地方就是在解除资源分配的地方。是不是所有资源都正确
12、地解除分配了,或者软件执行过程中是否丢失了某些资源?由有经验的工程师来进行错误猜测可能是最有效地设计能发现错误的测试的唯一方法。定位准确的错误猜测能够找到很多其他测试用例设计技术容易遗漏的错误。相反,任用不合适的人来进行错误猜测可能会浪费时间。在最大程度地利用现有经验并为此测试用例设计技术添加一些结构时,创建一个不同类型错误的检查列表是一个不错的想法。然后可以使用这个检查列表来帮助“猜测”错误可能在单元中的什么地方出现。应该根据从较早的单元测试中获得的经验来维护这个检查列表,以改进错误猜测的整体效率。第五章 度量测试结果与缺陷管理练习答案 1.c、d、e 2.每一处设计。 3.错误作业答案第1
13、题答案:缺陷可以定义成: 没有实现预定的使用需求或合理期望 与规格说明书或标准存在偏差 在与标准的一致性方面导致客户不满的任何问题第2题答案缺陷管理的实现分各个不同阶段逐步完成。这些阶段如下所示:1. 缺陷标识、记录和报告2. 缺陷的消除和跟踪3. 缺陷度量和根由分析4. 缺陷预防/过程改进5. 软件开发生命周期所有阶段的测试6. 安装测试工具7. 缺陷管理问题包括:a. 缺陷遗漏b. 同类缺陷重复8. 数据库更新不完全9. 分类不严谨-每个缺陷都划分为其他类型10. 用来攻击项目分类的缺陷数据11. 很多不负责任的错误12. 重置是一个瓶颈13. 相同的缺陷重现第3题答案测试完成之后,需要以
14、适当的格式对它进行正式的报告。错误报告必须包含以下类型的信息:错误报告错误报告标识 - (序号)错误出现的环境 错误出现时使用的系统和操作环境 发现错误的测试用例 系统应有的行为和它实际的行为谁批准进行纠错?谁需要进行纠错以及在何时?找到并纠正错误之后,应该编写修改报告,其中包括问题报告并添加下列信息:错误是否被确认为有效?导致错误的原因是什么?进行了什么修改? 修改前的代码 修改后的代码进行了什么测试来确认以下问题: 修改是否纠正了所报告的错误? 修改是否引入了任何新的错误?第6章 CMM和ISO练习答案 1.(B) 2.(A) 3.(A) 4.(B) 5.(B)作业答案第1题答案:“能力成
15、熟度模型”是SEI(软件工程研究所)在1986年开发的过程,用于改善组织的软件技术的应用过程。这个过程分为五个定义良好的顺序提高的等级:初始级、可重复级、已定义级、已管理级、优化级。能力成熟度模型(CMM)是设计用来帮助组织解决软件过程问题的。能力成熟度模型提供了一种有效的和经过检验的方法,用以不断地加强对产品开发过程的控制,并改进产品开发过程;它提供了一个标尺,使组织可用来对其生产过程进行定期的测量;它也提供了进行优化及管理改进工作的数据。CMM描述了软件特有的产品开发实践和所有组织必须遵守的通用管理实践。这些实践被组织为5个等级,以个性化的特定过程开始,以受控制的、结构化的、持续改进的过程
16、结束。每一个等级都比前一等级加强了对生产环境的控制和管理。依据模型对组织的实践进行评价,称为评估。评估确定组织的等级,确定组织的当前状况,确定组织应该将主要精力投入到哪些管理实践,使投资获得高回报。 初始级(1)优化级(5)可重复级(2)已定义级(3)已管理级(4)第2题答案: 能力成熟度模型等级框图 持续改进的过程第3题答案: CMM的不同等级是 可预测的过程 1级:初始级 标准和一致的过程 2级:可重复级 3级:已定义级 经律化过程 4级:已管理级 5级:优化级2级:可重复级有效的过程可以描述为经过实践、已文档化、强力推行、已经培训、经过测量并可以改进的过程。1. 软件配置管理2. 软件质
17、量保证3. 软件分包管理4. 软件项目跟踪和监督5. 软件项目规划6. 需求管理用于管理软件项目的方针和实施这些方针的规程都已建立。新项目的规划和管理,是基于类似项目的经验。达到2级的目标之一是使有效的软件项目管理过程制度化,使得组织能重复以前项目中的成功实践,尽管项目实施的具体过程可能不同。有效的过程可以描述为经过实践、已文档化、强力推行、已经培训、经过测量并可以改进的过程。2级组织在项目中设置基本的软件管理控制。实际的项目约定是基于对以前项目的观察结果和当前项目的需求。项目的软件经理跟踪软件成本、进度和功能;识别在满足约定方面出现的问题。对软件需求和为满足需求所开发的工作产品建立基线,并且
18、其完整性得到控制。软件项目标准均已确定,并且组织能保证切实地执行这些标准。如果有分包商的话,软件项目人员与他们一起努力,建立牢固的顾客 供应商关系。2级组织的软件过程能力可概括为纪律化的,因为软件项目的规划和跟踪是稳定的,能重复以前的成功。根据以前项目的实施情况制定切实可行的计划,并遵循该计划,项目处在项目管理系统的有效控制之下。3级:已定义级3级组织的软件过程能力可概括为标准和一致的,因为软件工程活动和管理活动都是稳定的和可重复的。1. 同行评审2. 组间协调3. 软件产品工程4. 集成软件管理5. 培训计划6. 组织过程定义7. 组织过程聚焦在全组织范围内建立了开发和维护软件的标准过程(包
19、括软件工程过程和软件管理过程)文档,而且将这些过程集成得浑然一体。在整个CMM中,称此标准过程为组织的标准软件过程。3级组织建立的过程,用来(必要时,可以修改)帮助软件经理和技术人员更有效地工作。在建立软件过程标准时,采用有效的软件工程实践。有一个组负责组织的软件过程活动,例如,软件工程过程组(SEPG)。组织执行全组织培训计划,保证职员和经理具有履行其职责所必需的知识和技能。项目组通过剪裁组织的标准软件过程,建立他们自己定义的软件过程,形成该项目独有的特征。在CMM中,这种剪裁后的过程称作项目定义的软件过程。项目定义的软件过程包含一组协调的、集成的、妥善定义的软件工程过程和管理过程。妥善定义
20、的过程具有准备就绪准则、输入、标准、进行工作的规程、验证机制(例如同行评审)、输出以及完成准则。因为软件过程已妥善定义,管理人员就能洞察所有项目的技术进展。3级组织的软件过程能力可概括为标准和一致的,因为软件工程活动和管理活动都是稳定的和可重复的。在所建立的各种产品线内,可以监控项目的成本、进度和功能,可以跟踪软件质量。这种过程能力建立在整个组织对所定义过程中的活动、角色和职责的共同理解之上。第4题答案:国际标准化组织(ISO)是由来自140多个国家的标准团体构成的世界联合体,每一个国家只能有一个机构代表其国家参加ISO。ISO是建立于1947年的非政府组织。ISO的宗旨是:在全世界范围内促进标准化工作和相关活动的发展,以便于国际物资和服务的交流,扩大在知识、科学、技术和经济方面的合作。ISO的工作产生国际协议,这些协议作为国际标准发布。