您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 38软件质量与质量保证
软件测试技术与实践浙江大学城市学院第2章软件质量与质量保证第2章软件质量与质量保证•质量与软件质量•软件质量困境•WebApp设计质量•实现软件质量•软件质量保证•软件可靠性•ISO9000质量标准•随着软件应用逐渐融入社会日常生活的各个方面,人们越来越关注软件的质量,但是,却很难对软件质量给出一个全面的描述。•各种各样的软件质量度量和因素,都试图定义一组属性,包括可靠性易用性维护性功能性可移植性等第2章软件质量与质量保证.•从本质上说,每个人都希望建立高质量的系统•但生产“完美”软件所需的时间和工作量在市场主导的世界里根本无法达到。whycan’tweachievethat?•这个问题就转化成为,是否应该生产“足够好”的软件呢?•虽然许多公司是这样做的,但这样也会有很大的负面影响。第2章软件质量与质量保证•不管选择什么方法,从预防、评估和失效等方面来考虑,质量都是有成本的。•预防成本包括所有被设计成将预防缺陷放在首位的软件工程活动;•评估成本是与评估软件工作产品以确定其质量的活动有关的成本;•失效成本包括失效的内部代价和低劣质量造成的外部影响。•软件质量是通过软件工程方法、扎实的管理措施和全面质量控制的应用达到的——所有这些都依靠软件质量保证基础设施的支持。第2章软件质量与质量保证2.1质量与软件质量•哈佛商学院的DavidGarvin指出:“质量是一个复杂多面的概念”,可以从5个不同的观点来描述:--玄妙观点认为质量是马上就能识别的东西,却不能清楚地定义;--用户观点是从最终用户的具体目标来说的。如果产品达到这些目标,就显示出质量--制造商观点是从产品的原始规格说明的角度来定义质量,如果产品符合规格说明,就显示出质量;--产品观点认为质量是产品的固有属性(比如,功能和特性);--基于价值的观点根据客户愿意为产品支付多少钱来评测质量。实际上,质量涵盖所有这些观点,甚至更多。2.1质量与软件质量•设计质量是指设计师赋予产品的特性。•原料等级、公差和性能等规格说明决定了设计质量。如果产品是按照规格说明书制造的,那么使用了较高等级的原料,规定了更严格的公差和更高级别的性能,产品的设计质量就能提高。•在软件开发中,设计质量包括设计满足需求模型规定的功能和特性的程度。符合质量关注的是实现遵从设计的程度以及所得到的系统满足需求和性能目标的程度。2.1质量与软件质量•RobertGlass认为它们之间比较“直观的”关系符合下面的公式:用户满意度=合格的产品+好的质量+按预算和进度安排交付•Glass认为质量是重要的。但是,如果用户不满意,其他任何事情就都不重要了。2.1.1什么是软件质量•一般地,软件质量可以定义为:在一定程度上应用有效的软件过程创造有用的产品,为生产者和使用者提供明显的价值。•该定义强调了以下3个重要的方面:–1)有效的软件过程为生产高质量的软件产品奠定了基础。软件工程实践允许开发人员分析问题、设计可靠的解决方案——二者皆为生产高质量软件的关键所在。最后,诸如变更管理和技术评审等普适性活动与其他部分的软件工程活动密切相关。2.1.1什么是软件质量–2)有用的产品是指交付最终用户要求的内容、功能和特征,但最重要的是,以可靠、无误的方式交付这些东西。有用的产品总是满足利益相关者明确提出的那些需求,另外,也要满足一些高质量软件应有的隐性需求(例如易用性)。2.1.1什么是软件质量–3)通过为软件产品的生产者和使用者增值,高质量软件为软件组织和最终用户群体带来了收益。–最后的结果是:①软件产品的收入增加;②当应用系统支持业务流程时,收益更好;③提高了信息可获得性,这对商业来讲是至关重要的。2.1.2Garvin的质量维度•DavidGarvin建议采取多维的观点考虑质量,包括从符合性评估到抽象的(美学)观点。尽管Gravin的8个质量维度不是专门为软件制定的,但考虑软件质量时依然可以使用:–性能质量。软件是否交付了所有的内容、功能和特性?这些内容、功能和特性在某种程度上是需求模型所规定的一部分,可以为最终用户提供价值。–特性质量。软件是否首次提供了使最终用户满意的特性?–可靠性。软件是否无误地提供了所有的特性和能力,当需要(使用该软件)时,它是否是可用的,是否无错地提供了功能?2.1.2Garvin的质量维度–符合性。软件是否遵从本地的和外部的与应用领域相关的软件标准,是否遵循了事实存在的设计惯例和编码惯例?例如,对于菜单选择和数据输入等用户界面的设计是否符合已接受的设计规则?–耐久性。是否能够对软件进行维护(变更)或改正(改错),而不会粗心大意地产生意料不到的副作用?随着时间的推移,变更会使错误率或可靠性变得更糟吗?–适用性。软件能在可接受的短时期内完成维护(变更)和改正(改错)吗?技术支持人员能得到所需的所有信息以进行变更和修正缺陷吗?2.1.2Garvin的质量维度–审美。毫无疑问,关于什么是美的,每个人有着不同的、非常主观的看法。可是,我们中的大多数都同意美的东西具有某种优雅、特有的流畅和醒目的外在,这些都是很难量化的.但显然是不可缺少的。–感知。在某些情况下,一些偏见将影响人们对质量的感知。例如,有人给你介绍了一款软件产品,该软件产品是由过去曾经生产过低质产品的厂家生产的,你的自我保护意识将会增加,你对于当前软件产品质量的感知力可能受到负面影响。类似地,如果厂家有极好的声誉,你将能感觉到好的质量,甚至在质量实际并不存在的时候。2.1.3McCall的质量因素•McCall、Richards和Walters提出了影响软件质量因素的一种有用的分类。•这些软件质量因素侧重于软件产品的3个重要方面,即操作特性、承受变更的能力以及对新环境的适应能力。如图2-1所示。图2-1McCall的软件质量因素维护性灵活性易测试性可移植性可复用性互操作性产品转移产品修改产品运行正确性易用性效率可靠性完整性2.1.3McCall的质量因素•针对图2-1中所提到的因素,McCall及他的同事提供了如下描述:–正确性。程序满足其需求规格说明和完成用户任务目标的程度。–可靠性。期望程序以所要求的精度完成其预期功能的程度。需要注意的是,还有更完整的可靠性定义。–效率。程序完成其功能所需的计算资源和代码的数量。–完整性。对未授权的人员访问软件或数据的可控程度。–易用性。对程序进行学习、操作、准备输入和解释输出所需要的工作量。–维护性。查出和修复程序中的一个错误所需要的工作量。2.1.3McCall的质量因素–灵活性。修改一个运行的程序所需的工作量。–易测试性。测试程序以确保它能完成预期功能所需要的工作量–可移植性。将程序从一个硬件和(或)软件系统环境移植到另一个环境所需要的工作量。–可复用性。程序(或程序的一部分)可以在另一个应用系统中使用的程度。这与程序所执行功能的包装和范围有关。–互操作性。将一个系统连接到另一系统所需要的工作量。2.1.4ISO9126质量因素•国际标准ISO9126的制定是试图标识计算机软件的质量属性。这个标准标识了6个关键的质量属性:–功能性。软件满足已确定要求的程度,由以下子属性表征:适合性、准确性、互操作性、依从性和安全保密性。–可靠性。软件可用的时间长度,由以下子属性表征:成熟性、容错性和易恢复性。–易用性。软件容易使用的程度,由以下子属性表征:易理解性、易学习性和易操作性。–效率。软件优化使用系统资源的程度,由以下子属性表征:时间特性和资源利用特性。2.1.4ISO9126质量因素–维护性。软件易于修复的程度,由以下子属性表征:易分析性、易改变性、稳定性和易测试性。–可移植性。软件可以从一个环境移植到另一个环境的容易程度,由以下子属性表征:适应性、易安装性、符合性和易替换性。•与前面讨论的软件质量因素一样,ISO9126中的质量因素不一定有助于直接测量。然而,它们确实为间接测量提供了有价值的基础,并为评估系统质量提供了一个优秀的检查单。2.1.5定向质量因素•前面所提出的质量维度和因素关注于软件整体,可以用其作为应用系统质量的一般性指标。•软件团队可以提出一套质量特征和相关的问题以调查满足每个质量因素的程度。•例如:McCall把易用性看做重要的质量因素,当要求评审用户界面和评估易用性时,可能要从McCall提出的子属性——易理解性、易学习性和易操作性开始。2.1.5定向质量因素•为了进行评价,需要说明白界面的具体的、可测量的(或至少是可识别的)属性。例如:•直觉。界面遵照预期使用模式的程度,使得即使是新手,不经过专门培训也能使用。–界面布局易于理解吗?–界面操作容易找到和上手吗?–界面使用了可识别的隐喻吗?–输入安排得节约敲击键盘和点击鼠标吗?–界面符合3个重要原则吗?–美学的运用有助于理解和使用吗?2.1.5定向质量因素•效率。定位或初步了解操作和信息的程度。–界面的布局和风格可以使用户有效地找到操作和信息吗?–一连串的操作(或数据输入)可以用简单动作达到吗?–输出的数据和显示的内容是否能立即被理解?–分层操作是否组织得能使用户完成某项工作所需导航的深度最小?2.1.5定向质量因素•健壮性。软件处理有错的输入数据或不恰当的用户交互的程度。–如果输入了规定边界上的数据或恰好在规定边界外的数据,软件能识别出错误吗?更为重要的是,软件还能继续运行而不出错或性能不下降吗?–界面能识别出常见的错误,并能清晰地指导用户回到正确的轨道上来吗?–当发现了与软件功能有关的错误,界面是否提供有用的诊断和指导?2.1.5定向质量因素•丰富性。界面提供丰富特征集的程度。–界面是否能按照用户的特定要求进行客户化?–界面是否提供宏操作以使用户将单个的行为或命令当做一连串的常用操作?2.2软件质量困境•在网上发布的一篇访谈中,BerttandMeyer这样论述所谓的质量困境:–如果生产了一个存在严重质量问题的软件系统,你将受到损失。因为没有人想去购买。–另一方面,如果你花费无限的时间、极大的工作量和高额的资金来开发一个绝对完美的软件,那么完成该软件将花费很长的时间,生产成本是极其高昂的,以至于破产。要么错过了市场机会,要么几乎耗尽所有的资源–所以企业界努力达到奇妙的中间状态:一方面,产品要足够好不会立即被抛弃(比如在评估期);另一方面,又不是那么完美,不需花费太长时间和太多成本。2.2.1“足够好”的软件•坦率地说,如果准备接受Meyer的观点,那么生产“足够好”软件是可接受的吗?•对于这个问题的答案只能是“肯定的”,因为大的软件公司每天都这么做。•这些大公司生产带有已知缺陷的软件,并发布给大量的最终用户。他们认识到,1.0版提供的一些功能和特性达不到最高质量,计划在2.0版改进。•他们这样做,知道有些客户会抱怨,但他们认识到上市时间胜过更好的质量,只要交付的产品“足够好”。2.2.1“足够好”的软件•但对于一些小公司来说,就要警惕这一观念,当你交付一个足够好(有缺陷的)产品时,是冒着永久损害公司声誉的风险,你可能再也没有机会提供2.0版本了,因为不良言论可能会导致销售暴跌和公司关门。2.2.2质量成本•质量是有成本的•但缺乏质量也有成本2.2.2质量成本•质量成本包括追求质量过程中或在履行质量有关的活动中引起的费用以及质量不佳引起的下游费用等所有费用。•质量成本可分为预防成本、评估成本和失效成本。2.2.2质量成本•预防成本包括:–1)计划和协调所有质量控制和质量保证所需管理活动的成本;–2)为开发完整的需求模型和设计模型所增加的技术活动的成本;–3)测试计划的成本;–4)与这些活动有关的所有培训成本。2.2.2质量成本•评估成本包括为深入了解产品“第一次通过”每个过程的条件而进行的活动。评估成本的例子包括:–对软件工程工作产品进行技术审查的成本。–数据收集和度量估算的成本。–测试和调试的成本。2.2.2质量成本•失效成本是那些如果在将产品发给客户之前或之后没有错误就不会存在的费用。•失效成本可分为内部失效成本和外部失效成本。内部失效成本发生在当你在发货之前发现错误时,内部失效成本包括:–为纠正错误进行返工(修复)所需的成本
本文标题:38软件质量与质量保证
链接地址:https://www.777doc.com/doc-3306145 .html