《软件质量保证和测试复习资料》由会员分享,可在线阅读,更多相关《软件质量保证和测试复习资料(8页珍藏版)》请在金锄头文库上搜索。
1、第1章 软件质量保证和测试的背景IEEE关于软件质量的定义:软件质量是:系统部件不见或者过程满足需求的规定需求的程度。系统、部件或者过程满足顾客或者用户需要或期望的程度。ANSI关于软件质量的定义。软件质量定义为“与软件产品满足规定的和隐含的需求的能力有关的特征和特征的全体” 具体包括:软件产品中能满足用户给定需求的全部特性的集合。软件具有所有期望值的各种属性的集合。用户观得出的软件是否满足其综合期望的程度。决定所用软件在使用中将满足其综合期望程度的软件特性。IEEE给出软件质量保证的定义,软件质量保证(SQA)是:(1) 一种有计划的,系统化的行动模式,它是为项目或者产品符合已有技术需求提出
2、充分信任所必需的。(2) 设计用来评价开发或者制造产品的过程的一组活动,与质量控制有区别。软件测试是使用人工或者自动手段来运行或测试某个系统的过程,检验它是否满足规定的需求或者弄清预期结果和实际结果之间的差别。随着时间的推移,修复软件缺陷的费用惊人的增长。软件测试是软件质量保证的重要手段之一。第2章 软件质量工程体系软件质量控制的定义:软件质量控制是一组由开发组织使用的程序和方法,使用它可在规定的资金投入和时间限制的条件下,提供满足客户质量要求的软件产品并持续不断地改善开发过程和开发组织本身,以提高将来生产高质量软件产品的能力。目标问题度量法:书P31页主要看看思想。风险管理法:P32页 图P
3、DCA计划 Plan:确定参数要求实施 Do:根据要求展开活动检查 Check:通过评审、度量、测试,确认满足要求改进 Action:纠正参数要求,在开发软件质量保证控制模型参数:产品、过程、资源。SQA(软件质量保证)是CMM(软件能力成熟度)2级一个重要关键过程区域,它是贯穿于整个软件过程的第三方审查活动,在CMM过程中从当重要角色。简要描述几种常见的质量控制模型(见上):控制方法:风险避免:通过变更计划消除风险的触发条件,如采用成熟技术、增加资源减少软件范围等。 风险弱化:降低风险发生的概率,如简化流程、更多测试、开发原型系统等。风险承担:制定应急方案,随机应变。风险转移:将风险发生的结
4、果连同应对权利转移给有应对能力的第三方。第3章 软件质量度量和配置管理Measure:度量(名词):是根据一定规则赋予软件过程或产品属性的数值或类别软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程。软件度量在软件工程中的作用有三:1、 通过软件度量增加理解。2、 通过软件度量管理软件项目,主要是计划和估算、跟踪和确认;3、 通过软件度量指导软件过程改善,主要是理解,评估和包装。影响软件质量的因素:首先是人的因素,其次是过程的因素最后是技术因素。简述几种常见的软件质量模型?软件质量保证模型:McCall模型,Boehm模型,FURPS模型ISO1926简述软件过
5、程度量的目标对象方法和结果?软件过程度量的目标:软件过程度量的目标是为了对软件过程的行为进行目标管理,并在度量的基础上对软件过程进行控制,评价和改善软件过程度量最终为项目管理和软件过程管理服务。软件过程度量就其对象而言,主要包括三个:工作产品、软件项目和过程。软件过程度量的方法:对软件过程度量的方法是过程性方法,软件过程行为是事件行为,对过程的度量也具有过程性,从制定度量目标到收集数据再到数据分析表示了典型的度量阶段。软件度量的结果通常是软件产品的复杂度模型和可靠性模型等。简述影响软件质量的因素?首先是人的因素,即M.软件开发是智力劳动,软件是人的脑力劳动,进行创造性思维的结果。其次是过程因素
6、,即P。“过程”一词有很多的定义,ISO9000将过程定义为“一种将输入转化为输出的相互关联或相互作用的活动”。软件过程是人们用来生产软件产品一系列的工具、方法和实践的集合。最后是技术因素,即T,近年来软件技术虽然取得了不少进展,提出了许多新的开发方法,比如充分利用现成软件复用技术,自动生成技术,也研制了一些有效的软件开发工具或开发环境,但在软件项目中采用的比率仍然很低。第4章 软件可靠性度量和测试软件可靠性的定义:(1) 在规定的条件下,在规定时间内,软件不引起系统失效的概率,该效率是系统输入和系统使用的函数,也是软件中存在错误的函数;系统输入将确定是否遇到已存在的错误(如果错误存在的话)(
7、2) 在规定的时间周期内,在所述条件下程序执行所要求功能的能力。影响软件可靠性的因素:需求分析定义错误,设计错误,编码错误,测试错误,文档错误。软件可靠性模型是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型。 Musa和Okumoto根据软件可靠性的5种特征,对模型进行了下述分类:时间域 类别 型式 种类 族简要描述提高软件可靠性的方法和技术?软件重用 使用开发管理工具如Intersolv公司的PVCS软件开发管理工具 加强测试容错设计尽可能不让差错和缺陷潜入软件,这类常用的技术有以下几种:算法模型化,模拟模型化、可靠性模型、软件危险分析与故障树分析第5章 软件质量标准软件质量标准:国
8、际标准、国家标准、行业标准、企业规范、项目规范。CMM关键域等级:初始级、可重复级、已定义级、已管理级、优化级。*软件保证实现的具体实施方法如下:1、定义项目类型和生命周期,2、建立SOA计划,确定项目审计内容,3、生成SOA报告。4、审计SOA报告5、建立汇报。第6章 软件评审为什么需要软件评审?评审是一些用于开发过程早期检查和纠正缺陷的有效方法,它们可以用来检查未形成执行代码的文档的缺陷。总体来说,自开发过程中评审可以让人们获得以下收益:(1) 提高项目的生产率,这是由于早期发现了错误,因而减少了返工时间,还可能减少了测试时间。(2) 改善软件的质量。(3) 在评审的过程中,使开发团队的其
9、他成员更熟悉产品和开发过程。(4) 通过评审,标志着软件开发的一个阶段的完成。(5) 生产更容易维护的软件。评审的内容:管理评审 技术评审 文档评审 过程评审评审的方法:特别检查 轮查 走查 团队评审 检视评审的技术缺陷检查表 规则表 评审工具的使用 从不同角度理解产品 场景分析技术第7章 软件全面质量管理为什么要进行全面软件质量管理?缩短总运转周期 降低质量所需成本 缩短库存周转时间 提高生产率 追求企业利益和成功 使顾客完全满意 最大限度获取利润质量管理蕴含着如下含义:强烈关注顾客 精确度量 坚持不断的改进 向员工授权 改进组织中每项工作的质量 P(Plan)计划D(Do)实施C(Chec
10、k)检查A(Action) 处理 138页图*全面管理与ISO9000:(谈谈软件质量全面管理的思想体系)两者的相同之处:首先,两者的管理理论和统计理论基础是一致的,它们都认为产品质量形成与产品全过程,都要求质量体系贯穿于质量形成的全过程。在实现方法上,两者使用了PDCA质量运行模式。其次,两者都要求对质量实施系统化的管理,都强调一把手对质量的管理。最后,两者的最终目的是一致的,都是为了提高软件产品质量,满足顾客的需要,都强调任何一个过程都是可以不断改进和完善的。两者的不同之处:首先,两者的期间目标不一致。全面质量管理的目标是改变现状。其作业只限于一次,目标实现后,管理活动也就结束了,下一次计
11、划管理活动虽然是在上一次计划管理活动的结果上进行的,但绝不重复与上次相同的作业。相反ISO9000的目标是维持标准现状,他的目标值为定值,它的管理活动是重复相同的方法和作业,使实际的工作结果与标准的偏差量尽量减少,其次,两者的工作中心不同,全面质量管理是以人为中心,ISO9000是以标准为中心。再次,两者执行标准及检查方式不同。实施全面质量的企业所制定的标准是企业结合其自身特点的自我约束的管理体制,其检查方主要是企业内部人员,检查方法是考核和评价。6管理的优点:提升企业的管理能力 节约企业运营成本 增加顾客价值 改进服务水平 形成积极向上的企业文化第8章 高质量编程内存分配方式:从静态存储区域
12、分配 在栈上创建 从堆上分配,也称动态内存分配常见的错误情况:(1) 内纯分配未成功却使用了它(2)内存分配虽然成功,但是尚未初始化就引用它(3) 内存分配成功并且已经初始化,但操作越过了内存的便捷(4)忘记了释放内存,造成内存泄露(5)释放了内存却继续使用它第9章 软件测试过程软件测试时需要以下三类信息:软件配置 测试配置 测试工具综合测试分为4个步骤:单元测试 集成测试 系统测试 验收测试另外 ,在所有的测试过程中,始终贯穿着回归测试辅助测试模块分为以下两种:驱动模块 桩模块测试方法:第13章课后题 请比较非增量式集成、自顶向下、自底向上的集成策略?(1) 非增量测试集成测试方法(2)增量
13、式集成测试方法两种测试方法的比较:自顶向下:优点:1.如果程序错误趋向于发生在程序的顶端时,有利于查处错误。2.可以较早出现程序的轮廓。3.加进输入/输出模块后,较方便描述测试用例 缺点:1.桩模块较难设计。2.模块介入使结果较难观察自底向上:优点:1.如果程序错误趋向于发生在程序的低端时,有利于查出错误。2.容易产生测试条件和观察测试结果。3.容易编写驱动模块。 缺点:1.在加入最后一个模块之前,程序不能作为一个整体存在。2,必必须给出驱动程序常用的选择回归测试的方式如下:再测试全部用例 基于风险的选择 基于操作剖面选择测试 在测试修改部分软件测试贯穿于整个软件开发生命周期。简述软件测试自动
14、化的意义对新版本进行回归测试。执行更多更频繁的测试。执行一些手工测试困难或不可能做的测试。更好的利用资源。测试具有一致性和可重复性。测试的复用性。增加软件的信任度。可以更快的将软件推向市场。第12章 基于缺陷模式的软件测试软件缺陷属性:缺陷标识 缺陷类型 缺陷严重程度 缺陷优先级 缺陷状态 缺陷起源 缺陷来源 缺陷根源 CMM1级(初始级) CMM2(可重复级)CMM3级(已定义级)CMM4级(已管理级) CMM5级(持续优化级)缺陷管理目标:(1) 及时了解并跟踪每个被发现的缺陷。(2) 确保每个被发现的缺陷都能够被处理(3) 收集缺陷数据并根据缺陷趋势曲线来识别测试过程是否结束(4) 收集
15、缺陷数据并在其上进行数据分析,作为组织的过程财富。一个简单的软件缺陷生命周期(P288)图实践中的软件缺陷生命周期(P289)缺陷分析指标:缺陷发现率 缺陷潜伏期 缺陷密度 缺陷清除率第13章 集成测试集成测试与单元测试和系统测试的区别:集成测试与单元测试关注的范围有很大的不同 三者的依据也不同三明治集成测试(P301)三明治集成测试。三明治集成测试是将自顶向下测试与自底向上测试两种模式有机结合起来,采用并行的自顶向下、自底向上集成方式,形成改进的三明治方法。采取持续集成的策略,软件开发中各个模块不是同时完成,根据进度将完成的模块尽可能早地进行集成,有助于尽早发现缺陷,避免集成阶段大量缺陷涌现。自底向上集成时,先完成的模块将是后期模块的被调用程序,而自顶向下集成时,先期完成的模块将是后期模块的驱动程序,使后期模块的单元测试和集成测试出现了部分交叉,节省了测试代码的编写,提高工作效率。核心系统先行集成测试(P302)核心系统先行集成测试法的思想是先对核心软件部件进行集成测试,在测试通过的基础上再按各外围软件部件的重要程度逐个集成到核心系统中。每次加入一个