版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10月-23王如龙第8章软件质量与质量保证软件工程
2不论什么产品,质量都是极其重要。软件产品是逻辑产品,其特点是研发周期长,耗资巨大,必须特别注意保证质量。软件质量问题引发的事故已直接伤害到生命和社会安全。忽视质量必将付出更大的代价,受到更为严厉的惩罚。质量是唯一不能妥协的,没有质量的生产是一种破坏!P.167
3提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
48.1软件质量的定义P.167ANSI/IEEE(美国国家标准化组织/电气和电子工程师协会)
Std729-1983定义软件质量为:“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。
58.1软件质量的定义P.167定义至少明确了如下要点:1)软件需求是度量软件质量的基础,不符合需求的软件就没有质量。2)在各种标准中定义了一些开发准则,用来指导软件人员用工程化的方法开发软件。如果不遵守这些开发准则,软件质量就得不到保证。3)往往会有一些隐含的需求没有明确地提出来。例如,软件应具备良好的可维护性。如果软件只满足那些精确定义了的需求而没有满足这些隐含的需求,软件质量也不能保证。
6提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
78.2影响软件质量的因素P.167对软件开发项目提出的要求往往只强调系统必须完成的功能、应该遵循的进度计划、以及生产这个系统花费的成本,却很少注意在整个生命周期中软件系统应该具备的质量标准。这种做法的后果是使许多系统的维护费用很高,为了把系统移植到另外的环境中,或者使系统和其他系统配合使用,都必须付出很高昂的代价。
88.2影响软件质量的因素P.1671影响软件质量的主要因素虽然软件具有难于定量度量的软件属性,但是仍然能够提出许多重要的软件质量指标。从管理角度对软件质量进行度量,可以把影响软件质量的主要因素分成以下13类。
98.2影响软件质量的因素P.1671影响软件质量的主要因素1)正确性2)健壮性3)效率4)安全性5)可用性6)风险7)可理解性8)可维修性9)适应性10)可测试性11)可移植性12)可再用性13)互运行性
108.2影响软件质量的因素P.1672软件质量评价应遵守的原则1)应强调软件总体质量(低成本高质量),而不应片面强调软件正确性,忽略其可维护性与可靠性、可用性与效率等。2)应在软件工程化生产的整个周期的各个阶段都注意软件的质量,而不能只在软件最终产品验收时注意质量。3)应制定软件质量标准,定量地评价软件质量,使软件产品评价执行“评测结合,以测为主”的科学方法。
11提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
128.3软件质量保证策略P.168审查复查和管理复审测试
13提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
148.4软件质量保证活动P.169质量保证是复审、开发方法、配置控制与程序测试的综合应用。简单地说,软件的开发方法应该符合规定的软件开发规范;计划和开发时期各个阶段的工作都要进行复审;每个阶段产生的文档都必须严格管理,以确保文档和程序的完整性与一致性;
158.4软件质量保证活动P.169作为最后和最重要的一道防线,还要坚持对程序进行各个层次的测试。所有以上的各项活动内容,都需写入质量保证计划,并由质量保证小组监督实施。由此可见,质量保证既是技术活动,也是管理活动。
168.4软件质量保证活动P.169图8-1质量保证活动内容验证与确认开发时期的配置管理
17提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
188.5软件评审P.170在软件生存期每个阶段的工作中都可能引入人为的错误。当出现错误,如果不及时纠正,就会传播到开发的后续阶段中去,并在后续阶段中引出更多的错误。实践证明,提交给测试阶段的程序中包含的错误越多,经过同样时间的测试后,程序中仍然潜伏的错误也越多。
198.5软件评审P.170所以必须在开发时期的每个阶段,特别是设计阶段结束时要进行严格的技术评审,尽量不让错误传播到下一个阶段。评审是以提高软件质量为目的的技术活动。为此,首先要明确什么是软件的质量。缺乏质量概念的技术评审只是一种拘于形式的为评审而评审的盲目工作。
208.5软件评审P.170通常,把质量定义为用户的满意程度。为使用户满意,有以下两个必要条件。1)设计的规格说明要符合用户的要求。2)程序要按照设计规格说明所规定的情况正确执行。
218.5软件评审P.170人们把上述第一个条件称为设计质量,把第二个条件称为程序质量。图8-2设计质量与程序质量
228.5软件评审P.171设计质量的评审对象是在需求分析阶段产生的软件需求规格说明、数据要求规格说明,在软件概要设计阶段产生的软件概要设计说明等,归纳起来,需要从下述12个方面进行评审。软件的规格说明可靠性保密措施实现操作特性实施性能实现可修改性8.5.1设计质量的评审内容可扩充性互换性可移植性可测试性复用性互连性
238.5软件评审P.175程序质量评审着眼于软件本身的结构、与运行环境的接口、变更带来的影响而进行的评审活动。通常它是从开发者的角度进行评审,直接与开发技术有关。软件的结构与运行环境的接口8.5.2程序质量的评审内容
24提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
258.6软件质量保证的标准P.177质量保证系统可以定义为用于实现质量管理的组织结构、责任、规程、过程和资源。ISO9000标准是以一种能够适用于任何行业的术语描述了质量保证的要素。为了登记成为ISO9000中包含的质量保证系统模型,一个公司的质量系统和操作应该被第三方审计者仔细检查,查看其与标准的符合性以及操作的有效性。
268.6软件质量保证的标准P.177成功登记之后,这一公司将收到由审计者所代表的登记实体颁发的证书。此后每半年进行一次的检查性审计持续地保证该公司的质量系统与标准相符。
278.6软件质量保证的标准P.177ISO对质量保证系统的方法ISO9001标准
28提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
298.7结构化程序的测试P.178软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。
308.7结构化程序的测试P.178软件测试在软件生存期中横跨两个阶段。通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。编码和单元测试属于软件生存期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。
318.7结构化程序的测试P.179
软件测试的目的
软件质量测试人员的任务8.7.1软件测试的目的
328.7结构化程序的测试P.179从不同的角度出发,出现了两种不同的软件测试原则。从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品;从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求。8.7.2软件测试的原则
338.7结构化程序的测试P.179为了达到上述的原则,需要注意以下几点。1)应当尽早测试和不断地测试。2)程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。3)设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况要制造极端状态和意外状态,例如,网络异常中断、电源断电等情况。8.7.2软件测试的原则
348.7结构化程序的测试P.1794)一定要注意测试中的错误集中发生现象,这与程序员的编程水平和习惯有很大的关系。5)对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。6)制订严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。7)回归测试的关联性一定要引起充分的注意,避免修改一个错误而引起更多的错误出现。8)妥善保存测试过程文档有重要意义,因为测试的重现性往往要靠测试文档。8.7.2软件测试的原则
358.7结构化程序的测试P.180软件测试并不等同程序测试。软件测试应该贯穿于软件定义与开发的整个期间。因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试的对象。在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来。8.7.3软件测试的对象
368.7结构化程序的测试P.180软件测试是一个极为复杂的过程。一个规范化的软件测试过程通常包括以下基本的测试活动。1)拟定软件测试计划。2)编制软件测试大纲。3)设计和生成测试用例。4)实施测试。5)生成软件问题报告。8.7.4软件测试的基本过程
378.7结构化程序的测试P.181测试的目的是以最少的测试用例集合来测试出更多的程序中的潜在错误。如何测试得彻底,怎样设计测试用例是测试的关键技术。按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。8.7.5软件测试技术
388.7结构化程序的测试P.181测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。白盒法是通过分析程序内部的逻辑与执行路线来设计测试用例进行测试的方法,白盒法也称逻辑驱动方法。黑盒法是功能驱动方法,仅根据I/0数据条件来设计测试用例,而不管程序的内部结构与路径如何。8.7.5软件测试技术
398.7结构化程序的测试P.181白盒法的测试用例的设计方法有语句覆盖、分支(判定)覆盖、条件覆盖、路径覆盖(或条件组合覆盖),主要目的是提高测试的覆盖率。黑盒法的设计测试用例的方法有等价类划分法、边界值分析法、错误推测法,主要目的是设法以最少测试数据子集尽可能多地测试软件程序的错误。8.7.5软件测试技术
408.7结构化程序的测试P.181静态分析技术动态测试技术黑盒测试和白盒测试8.7.5软件测试技术
418.7结构化程序的测试P.182设计测试方案是测试阶段的关键技术问题。
测试方案包括预定要测试的功能、应该输入的测试数据和预期的结果,其中最困难的问题是设计测试用的输入数据,即测试用例。
不同的测试数据发现程序错误的能力差别很大,为了提高测试效率降低测试成本,应该选用高效的测试数据。
因为不可能进行穷举测试,所以选用少量最有效的测试数据,做到尽可能完备的测试。8.7.6设计测试方案
428.7结构化程序的测试P.182设计测试方案的基本目标是确定一组最可能发现某个错误或某类错误的测试数据。已经研究出许多设计测试数据的技术,这些技术各有优缺点。同一种技术在不同的应用场合效果相差很大,因此,通常需要联合使用多种设计测试数据的技术。白盒法黑盒法8.7.6设计测试方案
438.7结构化程序的测试P.184与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,大型软件系统的测试基本上由单元测试、集成测试、确认测试和系统测试等4个步骤组成,如图8-5所示。8.7.7软件测试的步骤
448.7结构化程序的测试P.1848.7.7软件测试的步骤图8-5测试步骤
458.7结构化程序的测试P.185单元测试集成测试确认测试系统测试验收测试8.7.7软件测试的步骤
468.7结构化程序的测试P.188测试是找出软件外部错误的过程,纠错是在测试出错误的基础上分析错误的性质与原因,找出出错的位置,即找到内部错误(称故障)再加以纠正,直到测试没有错误为止。这种根据测试出错误的外因分析找到内部原因并加以改正的代码执行与人工活动称为纠错。8.7.8软件纠错技术
478.7结构化程序的测试P.189纠错方法主要包括如下种。强力法跟踪法演绎法归纳法8.7.8软件纠错技术测试纠错法试凑法回归测试对分查找法
48提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
498.8面向对象的软件测试P.190
测试的目标是在现实可行的时间间隔内,去发现尽可能多的错误。
对面向对象软件而言,这个基本目标仍保持不变,但是面向对象程序的性质改变了测试的策略和测试方法。为了充分测试OO系统,必须考虑:1)测试的定义必须扩大包括用于OOA和OOD模型的错误发现技术。2)单元和集成测试策略必须有很大的改变。3)测试用例的设计必须考虑OO软件的特征。
508.8面向对象的软件测试P.190面向对象分析和设计模型的正确性面向对象分析和设计模型的一致性8.8.1面向对象分析和设计模型的模型测试
518.8面向对象的软件测试P.192
传统的测试软件的策略是从小型测试开始,逐步走向大型测试。从软件测试的角度来说,也就是从单元测试开始,然后逐步进入集成测试,最后是有效性和系统测试。
在传统应用中,单元测试集中在最小的可编译程序单位(如模块、子例程、进程)中,一旦这些单元均被独立测试后,它们就被集成进程序结构中,这时要进行一系列的回归测试以发现由于模块的接口所带来的错误和新单元加入导致的副作用,最后,系统被作为一个整体测试以发现在需求中的错误。8.8.2面向对象的测试策略
528.8面向对象的软件测试P.192面向对象的单元测试面向对象的组装测试面向对象的确认测试8.8.2面向对象的测试策略
538.8面向对象的软件测试P.193面向对象测试集设计的概念传统测试集设计方法的适用性基于故障的测试面向对象编程对测试的影响测试外部结构和内部结构8.8.3面向对象软件测试集设计
54提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
558.9测试计划与测试分析报告P.195测试是软件生存周期中一个独立的、关键的阶段,也是保证软件质量的重要活动之一。为了提高发现错误的概率,使测试能有计划地、有条不紊地进行,就必须编制相应的测试文档。测试文档主要有测试计划和测试分析报告。
568.9测试计划与测试分析报告P.195根据国家标准,与软件测试直接有关的文档,一个是GB8567-88《计算机软件产品开发文件编制指南》中的“测试计划”和“测试分析报告”;另一个是GB9286-88《计算机软件测试文件编制规范》。后者是前者的补充和细化,这样可以使文档的书写更具体,更有参照性。
578.9测试计划与测试分析报告P.195测试计划可细化为测试计划、测试设计说明、测试用例说明和测试规格说明;测试分析报告可细化为测试项传递报告、测试日志、测试事件报告和测试总结报告。
588.9测试计划与测试分析报告P.195测试计划的内容(附录FP.290)测试分析报告的内容(附录GP.292)
59提纲软件质量的定义影响软件质量的因素软件质量保证策略软件质量保证活动软件评审软件质量保证的标准结构化程序的测试面向对象的软件测试测试计划与测试分析报告软件维护
608.10软件维护P.1968.10.1软件维护分类与特点1软件维护的原因在软件运行与维护阶段对软件产品所进行的修改就是维护。维护的原因归结如下:1)改正在特定的使用条件下暴露出来的一些潜在程序错误或设计缺陷。2)在软件使用过程中因数据环境发生变化或处理环境发生变化,需要修改软件以适应这种变化。3)用户和数据处理人员在使用时常提出改进现有功能、增加新的功能及改善总体性能的要求,为了满足这些要求,就需要修改软件并把这些要求纳入到软件之中。
618.10软件维护P.1978.10.1软件维护分类与特点2维护的分类
按维护性质不同,软件维护可分为改正性维护、适应性维护、完善性维护和预防性维护。1)软件测试不可能揭露旧系统中的所有错误。所以在使用过程中程序还将发生错误,诊断和改正这些错误的过程称为改正性维护。
628.10软件维护P.1978.10.1软件维护分类与特点2维护的分类2)新的硬件产品出现,同时新的操作系统或操作系统的新的版本也不断推出,外部设备和其他的系统部件也经常更新或升级。另一方面,应用软件的使用寿命一般都在10年以上,超过了最初开发这些软件的环境的寿命。为了适应新的变化而进行的修改活动,称为适应性维护。
638.10软件维护P.1978.10.1软件维护分类与特点2维护的分类3)一个软件投人运行过程中,用户不断提出增加新功能、修改现有功能以及一般性的改进要求等。为了满足这些要求,需要进行完善性维护,完善性维护活动是软件维护工作的主要邵分。
648.10软件维护P.1978.10.1软件维护分类与特点2维护的分类4)为了改进软件未来的可维护性或可靠性,或者为了给未来的改进提供更好的基础而对软件进行修改,这类活动通常叫做预防性维护。当然这类维护比前面3类要少得多。这类维护的特点是采用再造工程技术。
658.10软件维护P.1978.10.1软件维护分类与特点2维护的分类从上可见,软件维护不局限于纠正错误。统计数字表明,完善性维护占全部维护活动的50%~60%,改正性维护占17%~21%,适应性维护占18%~25%,其他维护活动只占4%左右。上述4类维护活动都必须应用于整个软件配置,维护软件文档和维护软件的可执行代码是同样重要的。
668.10软件维护P.1978.10.1软件维护分类与特点3维护的特点结构化维护与非结构化维护维护的代价与软件维护有关的部分问题
678.10软件维护P.1998.10.2软件维护步骤1维护步骤分析和理解程序修改程序分析与修改模块内容细节向用户提供回避措施修改代码以适应变化重新验证程序
688.10软件维护P.2018.10.2软件维护步骤2维护组织软件维护阶段相对来说是漫长而且不定期的,长期以来很少建立正式的维护组织,然而对于一个小的软件开发队伍而言,非正式地定岗定责也绝对必要。图8-10给出了一种组织模式。
698.10软件维护P.2018.10.2软件维护步骤2维护组织图8-10维护的一种组织模式
708.10软件维护P.2018.10.2软件维护步骤2维护组织每个维护申请通过维护管理员转告给系统管理员,系统管理员一般都是对程序特别熟悉的技术人员,他们对维护申请及可能引起的软件修改进行评估,并向修改控制决策机构(一个或一组管理者)报告,由它最后确定是否采取行动。按这样的组织方式开展维护活动,能减少混乱和盲目性,避免因小失大的情况发生。当然,上述各个岗位都不需要专职人员,但必须为胜任者,并且要早在维护活动开始之前就明确各自责任,避免互相推委的现象出现。
718.10软件维护P.2018.10.3软件的可维护性软件可维护性指对软件的理解、改正、调整和改进的难易程度。可维护性是指导软件工程各个阶段的基本原则,也是软件工程追求的目标之一。影响可维护性的因素量化的测度保证可维护性的复审
728.10软件维护P.2028.10.4软件维护的副作用软件修改是一项很危险的工作,对一个复杂的逻辑过程,仅仅做一项微小的改动,都可能引入潜在的错误,虽然设计文档化和细致的回归测试有助于排除错误,但是维护仍然会产生副作用。软件维护的副作用指由于维护或在文档化过程中其他一些不期望的行为引入的错误。
738.10软件维护P.2038.10.4软件维护的副作用软件维护的副作用大致可分为3类:代码副作用数据副作用文档的副作用
748.10软件维护P.2038.10.5逆向工程和再生工程逆向工程与再生工程是目前预防性维护采用的主要技术,逆向工程源于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《贵州省职教高考总复习指导与同步练:语文》(第一部分 专题1 语音)
- 【教案】煮出一锅“粥”到幸福-小学二年级劳动“花样粥 我来煮”教学设计
- 《寻河溯源·大道至简-高中地理(2025-2026学年·选择性必修1)“河流地貌的发育”高阶整体教学设计(示范课专用)》
- 高中地理选择性必修二教学设计:从“煤铁心脏”到“欧洲深科技引擎”-区域发展的涅槃与启示
- 心理韧性培养与生涯规划视域下的主题班会课教学设计
- 苏科版小学劳动一年级下册《折笔帽》核心素养导向教学设计
- 初中班会教案·《数智节水·世纪日新-2026年“世界水日”“中国水周”跨学科主题班会》
- 准高三·慧陪伴-高二下学期散学典礼家长学校讲义
- 高中思想政治必修课第38个爱国卫生月主题班会教学设计-共建健康城镇共筑健康防线(高中二年级)
- 高中德育主题班会教学设计:驶向内卷时代的人生坐标-动画电影《你想活出怎样的人生》与期中备考生命叙事融合课
- 检验科尿微量白蛋白标准操作规程
- 水利水电工程设计工程量计算规定
- 2023年技术经纪人初级考试题目
- GB/T 26480-2011阀门的检验和试验
- GB/T 13277.3-2015压缩空气第3部分:湿度测量方法
- 多层钢结构施工方案设计
- GA/T 508-2014道路交通信号倒计时显示器
- 冠状动脉粥样硬化性心脏病lxf课件
- 世界中世纪史第五讲-十字军东征课件
- 围挡结构抗台风稳定性计算书
- 交管12123驾照学法减分题库200题(含答案完整版)
评论
0/150
提交评论