第3章 软件质量与评价(软件测试标准)
3.1 质量的定义
质量是多维的概念,包括:实体、实体的属性和对实体的观点。GB/T 6583-ISO 8404(1994版)《质量管理与质量保证术语》对质量的定义为“反映实体满足明确的和隐含的需要的能力的特性的总和”。作为软件质量,GB/T 18905-ISO 14598(1999版)《软件工程产品评价》定义为:“实体特性的总和,满足明确或隐含要求的能力”。
3.2 测度与度量
一、测度
在软件质量中用于测量的一种量化的标度和方法即为“测度”。测度是把数字和符号分配给现实世界实体的属性。
运用测度,能较好地理解建立质量模型的属性,并评价所建立的工程化产品或系统质量。虽然软件技术度量不是绝对的,但测度的建立提供了基于一套清晰定义规则的系统方法来评价软件质量。软件质量模型和评价技术是基于运用测度的建立原则发展起来的。测度的运用是建立测量方法的依据,也是软件质量测量的关键。
二、度量
软件工程中,“度量”用来指测量的结果。
3.3 软件质量模型
一、影响软件质量的因素
从测量的角度出发,可分为:可直接测量(如各功能点错误)和间接度量(如可用性)。
二、软件质量模型
1.McCall质量模型
McCall质量模型为早期的软件质量模型。1977年McCall和其同事建立了此模型,提出了影响质量因素的分类。McCall质量模型如图3-1所示,集中在软件产品的三个重要方面:操作特性(产品运行)、承受可改变能力(产品修订)、新环境适应能力(产品变迁)。
图3-1 McCall质量模型
2.分层结构的软件质量模型
1978年Boehm和其同事提出了分层结构的软件质量模型,该模型除包含了用户的期望和需要的概念,该点同McCall,还包括了McCall模型中没有的硬件特性。Boehm质量模型如图3-2所示。
图3-2 Boehm质量模型
Boehm模型始于软件的整体效用,从系统交付后涉及不同类型的用户考虑,主要类型如下:
(1)第一种用户为初始顾客,系统做了顾客所期望的事,顾客对系统非常满意;
(2)第二种用户是要将软件移植到其他软硬件系统下使用的客户;
(3)第三种用户是维护系统的程序员。
三种用户都希望系统可靠有效。因此,Boehm模型反映了对软件质量的理解,即软件做了用户要它做的:有效地使用系统资源,易于用户学习和使用,易于测试与维护。
3.ISO 9126—1991标准
(1)简介
国际标准化组织1991年颁布了ISO9126—1991标准《软件产品评价——质量特性及其使用指南》。我国于1996年发布软件产品质量评价标准GB/T 16260—1996。其为分层质量模型,有6个影响质量的特性。质量特性与质量子特性的层次结构如图3-3所示。
图3-3 ISO 9126质量模型
(2)标准的软件质量测度的建立过程
软件质量模型分三个层次,第一层有6个影响软件质量的主要因素,在标准中称之为“质量特性”。而每个质量特性又可以通过第二层的若干个子特性测量,第二层的每个子特性在评价时要定义并实施若干个度量。
(3)特点
①ISO 9126的出发点为使软件最大限度地满足用户的明确的和潜在的需求。以上6个质量特性最大可能地涵盖了其他早期质量模型中所有的因素,而且彼此交叉最小。
②软件质量特性与子特性的定义从用户的角度、开发者的角度和管理者的角度全方位考虑。因此,它是当时最先进、严格的质量模型,划时代地统一了十几年来国际上推出的各种质量模型。
3.4 标准的发展
一、1999年,国际软件工程标准化组织将软件“产品评价”与“产品质量”分两个标准,“产品评价”注重软件质量评价的支持和评价过程;“产品质量”注重软件本身的质量度量模型。软件质量评价的基本部分包括:质量模型、评价方法、软件的测量和支持工具。
二、GB/T 18905—2002(ISO 14598—1999)系列标准为软件产品质量的测量、评估和评价提供了方法。其所描述的既不是软件生产过程的评价方法,也不是预算成本的方法。由于质量特性和相关的度量可用于软件产品评价,也可用于质量需求的定义等,国际软件工程标准化组织颁布了ISO 14598—1999,在2001年修订了ISO 9126—1991标准。
三、早期的GB/T 16260—1996(ISO 9126—1991)被两个相关的由多部分组成的标准:GB/T 18905—2002(ISO 14598—1999)《软件工程产品评价》和GB/T 16260—2003(ISO 9126—2001)《软件工程产品质量》所取代。
3.5 GB/T 18905产品评价
一、GB/T 18905基本组成
(1)GB/T 18905.1《软件工程 产品评价》第1部分,概述。
(2)GB/T 18905.2《软件工程 产品评价》第2部分,策划和管理。
(3)GB/T 18905.3《软件工程 产品评价》第3部分,开发者用的过程。
(4)GB/T 18905.4《软件工程 产品评价》第4部分,需方用的过程。
(5)GB/T 18905.5《软件工程 产品评价》第5部分,评价者用的过程。
(6)GB/T 18905.6《软件工程 产品评价》第6部分,评价模块的文档编制。
GB/T 18905.1概述了软件产品评价的过程,提供评价需求和指南;GB/T 18905.2和GB/T 18905.6给出了关于公司或部门级的评价管理和支持;GB/T 18905.3、GB/T 18905.4和GB/T 18905.5给出了项目级的评价需求和指南。这些标准和技术报告之间的关系如图3-4所示。
图3-4 评价过程与评价支持标准的关系
二、评价者用的过程(GB/T 18905.5)
1.开发者用的过程
计划开发新产品或增强现有的产品,以及打算利用自己的技术人员进行产品评价的组织应使用GB/T 18905.3。该部分主要强调使用那些能预测最终产品质量的指标,这些指标将从度量在生存期期间开发的中间产品中得到。
2.需方用的过程
计划获取或复用某已有软件产品或预先开发的软件产品的组织应使用GB/T 18905.4。该部分可用来决定接受产品或者从众多可选产品中选择某个产品(产品可以是自包含的,或是系统的一部分,或者是较大产品的一部分)。
3.评价者用的过程
对软件产品执行独立评估的评价者应使用GB/T 18905.5。该评价应开发者、需方或其他方的请求来进行;该部分将由那些执行独立评价的人员使用,他们通常为第三方组织工作。
三、关于评价支持
上述各评价过程的标准都能与GB/T 18905.2(策划和管理)和GB/T 18905.6(评价模块的文档编制)结合起来使用,如图3-4所示。
图3-4 评价过程与评价支持标准的关系
1.策划和管理
GB/T 18905.2为策划和管理部分,包含对软件产品评价的支持功能的需求和指南。这种支持与策划和管理软件评价过程及相关的活动有关,包括组织内评价专业知识的开发、获取、标准化、控制、转换和反馈。可供管理者制定一个定量的评价计划。
2.评价模块
GB/T 18905.6为编制评价模块的文档提供指南。这些模块包括质量模型的规范(即特性、子特性和相应的内部或外部度量),与模型计划的应用有关的数据、信息和与模型的实际应用有关的信息。各评价都应选择适当的评价模块。在某些情况下,还有必要开发新的评价模块,以供组织用来产生新的评价模块。
四、通用评价过程
软件产品的评价过程为:确立评价需求,然后,规定、设计和执行评价,如图3-5所示。
图3-5 软件评价过程
五、评价需求
软件质量评价是为了直接支持开发和获得能满足用户和消费者要求的软件。最终目标是保证产品能达到所要求的质量,即满足用户明确和隐含的要求。
1.评价中间产品质量的目的
(1)决定(是否)接受分包商交付的中间产品;
(2)决定某个过程的完成,以及何时把产品送交下个过程;
(3)预计或估计最终产品的质量。
(4)收集中间产品的信息以便控制和管理过程。
2.评价最终产品质量的目的
(1)决定(是否)接受产品;
(2)决定何时发布产品;
(3)与相互竞争的产品进行比较;
(4)从众多可选的产品中选择一种产品;
(5)使用产品时评估产品积极和消极的影响;
(6)决定何时增强或替换该产品。
六、确定要评价产品的类型
评价中间或最终软件产品的类型取决于所处的生存周期的阶段和评价的目的,如图3-6所示。
图3-6 软件生存周期中的质量
七、度量之间的关系
将软件的内部质量属性与外部质量需求联系起来十分重要,它使得开发中的软件产品(中间和最终的软件产品)的质量特性可根据最终系统的质量需求来进行评估。内部度量的值很低,除非有证据表明其与外部质量有关。如图3-7所示。
图3-7 度量之间的关系
八、规定质量模型
软件评价所用的质量模型通常代表软件质量属性的总体,这些质量属性用特性和子特性的分层树结构进行分类,如图3-8所示。
图3-8 质量特性、子特性和属性
该结构的最高级由质量特性构成,最低级由软件质量属性构成。GB/T 16260.1提供了通用模型,定义了6种软件质量特性,包括功能性、可靠性、易用性、效率、可维护性和可移植性。这些特性进一步被分解为具有可测量属性的子特性。
在特定的使用环境下,质量特性的组合效应被定义为使用质量。软件产品的内部质量属性是软件产品的可测量的性质,这些性质影响产品满足明确和隐含要求的能力。可以用一个或更多的属性来评估一个特定的软件质量特性或子特性。
九、规定评价
1.选择度量
质量特性的定义方式不允许对其直接进行测量。需要建立与软件产品特性相关的度量。与某个质量特性相关的各可量化的软件内部属性和各可量化的软件外部属性,与其软件环境进行相互作用,能被确立为一种度量。度量随环境和应用度量的开发过程阶段不同而有所区别。用于开发过程的度量应与用户观点的度量有关,因为从用户视角出发的度量至关重要。
2.测量的种类
评价有以下两个主要目的:
(1)确定问题以便解决问题;
(2)与可替换的产品进行比较,或对照需求比较产品质量。
所需的测量种类取决于评价的目的。如果主要目的是为了了解和纠正缺陷,可以对软件采取多种测量,以便监视和控制改进。
3.确立度量评定等级
可量化的特征可用度量质量的方法进行定量的测量。结果为,将测量值映射到某一标度上。该值本身并不表示满意的等级,因此,该标度必须根据需求的不同满意度级别分成不同的范围。定义当前级是为了控制新系统不因当前状况而恶化;计划级是指一旦资源可利用,产品即可获得;最差级是指万一产品不符合计划级时用户的可接受边界。如图3-9所示。
图3-9 度量的等级
4.确立评估准则
为评估产品质量,需要总结针对不同特性的评价结果。评价者应准备一个规程,其中,对不同的质量特性使用不同的评价准则,每个质量特性又以数个子特性或子特性的加权组合来说明。规程通常还包括时间和成本等有助于在特定环境下评估软件产品质量的因素。
3.6 GB/T 16260.1产品质量
一、基本组成
GB/T 16260—2003《软件工程 产品质量》。该系列标准由以下4部分组成:
(1)GB/T 16260.1《软件工程 产品质量》第1部分,质量模型。
(2)GB/T 16260.2《软件工程 产品质量》第2部分,外部度量。
(3)GB/T 16260.3《软件工程 产品质量》第3部分,内部度量。
(4)GB/T 16260.4《软件工程 产品质量》第4部分,使用质量度量。
二、标准概述
1.标准的变化
与原标准相比,主要区别在于:
(1)质量特性中增加了使用质量特性;
(2)质量度量分为外部度量、内部度量和使用质量度量;
(3)子特性作为标准一部分,在原版标准资料的附录中的子特性的基础上增加了一些;
(4)删除了评价过程内容(已在ISO 14598中进行了说明);
(5)与ISO 14598的内容基本协调。
我国在2003年颁布的GB/T 16260—2003(ISO 9126—2001)取代了1996年颁布的GB/T 16260。
2.标准之间的关系
GB/T 18905.1概述是产品评价标准的总则,GB/T 16260的评价过程与度量遵循GB/T 18905。GB/T 18905和GB/T 16260系列标准之间的关系如图3-10所示。
图3-10 GB/T 18905和GB/T 16260系列标准之间的关系
GB/T 18905的各个部分应与GB/T 16260中描述的软件质量特性和度量部分一起使用。
三、标准的范围
标准可从软件的获取、需求、开发、使用、评价、支持、维护、质量保证和审核方面来确定和评价软件产品的质量。可被开发者、需方、质量保证人员和独立评价者,特别是对确定和评价软件产品质量负责的人员使用。本标准中定义的质量模型使用实例如下:
(1)确认需求定义的完整性;
(2)确定软件需求;
(3)确定软件设计目标;
(4)确定软件测试目标;
(5)确定质量保证准则;
(6)为完整的软件产品确定验收准则。
软件质量标准可以和软件质量保证过程,以及与软件过程改进有关的标准一起使用。
四、质量模型框架
1.软件质量特性与度量
(1)质量特性和子特性(GB/T 16260.1);
(2)外部度量(GB/T 16260.2);
(3)内部度量(GB/T 16260.3)。
GB/T 16260.1定义了质量特性、相关的子特性以及GB/T 16260质量模型上面三层之间的关系。GB/T 16260.2和GB/T 16260.3确定了每种度量(外部和内部的)与其相应的特性和子特性之间的关系,如图3-11所示。注意,某些内部度量有对应的外部度量。
图3-11 软件质量特性与度量
2.质量途径
(1)简介
软件产品质量可以通过测量内部属性,或者测量外部属性,或者测量使用质量的属性来评价。目标就是使产品在特定的使用环境和条件下具有所需的效用,如图3-12所示。
图3-12 生存周期的质量途径
过程质量有助于提高产品质量,提高产品质量有助于提高使用质量。故评估和改善是提高产品质量的手段,而评价和改进产品质量是提高使用质量的方法。同样,评价使用质量可以为改进产品提供反馈,而评价产品则可为改善过程提供反馈。适当的软件内部属性是获得所需外部特性的先决条件,而适当的外部特性则是获得使用质量的先决条件。
(2)软件产品质量需求
软件产品质量需求包括内部质量、外部质量和使用质量的评估准则,以满足开发者、维护者、需求方以及最终用户的需要。
3.产品质量和生存周期
内部质量、外部质量和使用质量的观点在软件生存周期中是变化的。在软件生存周期的不同阶段存在着关于产品质量和相关度量的不同观点,如图3-13所示。
图3-13 软件生存周期的质量
(1)用户的质量要求
可按使用质量的度量、外部度量或内部度量来规定质量需求。当验证产品时,这些由度量规定的需求应作为准则使用。
(2)外部质量需求
从外部观点来规定必须的质量级别,包括来源于用户质量要求。外部质量需求用作不同开发阶段的验证目标。
(3)内部质量需求
内部质量需求是从产品的内部观点来规定必须的质量水平。内部质量需求用来规定中间产品的属性,包括静态的和动态的模型、其他的文档和源代码。内部质量需求可用作不同开发阶段的验证目标。
(4)使用质量
使用质量是从用户观点出发,来看待软件产品用于特定环境和条件下的质量。其测量用户在特定环境中达到其任务目标的程度,而不是测量软件自身的性质。
(5)外部质量
外部质量是从外部观点出发的软件产品特性的总体,它是当软件执行时,在模拟环境中,模拟数据使用外部度量测试时,所被测量和评价的质量。
(6)内部质量
内部质量是从内部观点出发的软件产品特性的总体,是针对内部质量需求被测量和评价的质量。
五、外部质量和内部质量的质量模型
外部质量和内部质量的质量模型软件,其质量属性划分为6种特性(功能性、可靠性、易用性、效率、维护性和可移植性),并进一步细分为一些子特性,如图3-14所示。
图3-14 外部质量和内部质量的质量模型
软件的每个质量特性和子特性都有相应的定义。对于每个特性和子特性,软件的能力由可测量的一组内部属性决定,内部度量的示例在GB/T 16260.3中给出。这些特性和子特性根据包含该软件的系统提供能力的程度从外部进行测量,外部度量的示例在GB/T16260.2中给出。
1.功能性
功能性指当软件在指定条件下使用时,软件产品满足明确和隐含要求功能的能力。
(1)适合性
适合性指软件产品为指定的任务和用户目标提供一组合适的功能的能力。
(2)准确性
准确性指软件产品具有所需精确度的正确或相符的结果及效果的能力。
(3)互操作性
互操作性指软件产品与一个或更多的规定系统进行交互的能力。
(4)保密安全
保密安全指软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,但不拒绝授权人员或系统对其访问。
(5)功能性依从性
功能性依从性指软件产品依附于同功能性相关的标准、约定或法规以及类似规定的能力。
2.可靠性
可靠性指在指定条件下使用时,软件产品维持规定的性能级别的能力。
(1)成熟性
成熟性指软件产品避免因软件中错误的发生而导致失效的能力。
(2)容错性
容错性指在软件发生故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力。
(3)易恢复性
易恢复性指在失效发生时,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。
(4)可靠性依从性
可靠性依从性指软件产品依附于同可靠性相关的标准、约定或规定的能力。
3.易用性
易用性指在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。
(1)易理解性
易理解性指软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用环境的能力。
(2)易学性
易学性指软件产品使用户能学习其的能力。
(3)易操作性
易操作性指软件产品使用户能操作和控制其的能力。
(4)吸引性
吸引性指软件产品吸引用户的能力。
(5)易用性依从性
易用性依从性指软件产品依附于同易用性相关的标准、约定、风格指南或规定的能力。
4.效率
效率指在规定条件下,相对于所用资源的数量,软件产品可提供适当的性能的能力。
(1)时间特性
时间特性指在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间及吞吐率的能力。
(2)资源利用性
资源利用性指在规定条件下,软件产品执行其功能时,使用合适的数量和类型的资源的能力。
(3)效率依从性
效率依从性指软件产品依附于同效率相关的标准或约定的能力。
5.维护性
维护性指软件产品可被修改的能力。修改可能包括修正、改进或软件适应环境、需求和功能规格说明中的变化。
(1)易分析性
易分析性指软件产品诊断软件中的缺陷或失效原因,以及判定待修改的部分的能力。
(2)易改变性
易改变性指软件产品使指定的修改可以被实现的能力。
(3)稳定性
稳定性指软件产品避免由于软件修改而造成意外结果的能力。
(4)易测试性
易测试性指软件产品使已修改软件能被确认的能力。
(5)维护性依从性
维护性依从性指软件产品依附于同维护性相关的标准或约定的能力。
6.可移植性
可移植性指软件产品从一种环境迁移到另外一种环境的能力。
(1)适应性
适应性指软件产品无需采用为考虑该软件的目的而准备的活动或手段,就可能适应不同的指定环境的能力。
(2)易安装性
易安装性指软件产品在指定环境中被安装的能力。
(3)共存性
共存性指软件产品在公共环境中同与其分享公共资源的其他独立软件共存的能力。
(4)易替换性
易替换性指软件产品在环境相同、目的相同的情况下替代另一个指定软件产品的能力。
(5)可移植性依从性
可移植性依从性指软件产品依附于同可移植性相关的标准或约定的能力。
六、使用质量的质量模型
使用质量是从用户角度看待的质量,其属性分为4种:有效性、生产率、安全性和满意度,如图3-15所示。
图3-15 使用质量的质量模型
软件产品具有指定用户在指定的使用环境下,获得与有效性、生产率、安全性和满意度相关的规定目标的能力。
1.有效性
有效性指软件产品在指定的使用环境下,使用户获得满足准确度和完整性要求的规定目标的能力。
2.生产率
生产率指软件产品在指定的使用环境下,使用户可使用与获得的有效性有关的合适数量资源的能力。
3.安全性
安全性指软件产品在指定使用环境下,获得可接受的对人类、事务、软件、财产或环境有害的风险级别的能力。
4.满意度
满意度指软件产品在指定使用环境下,使用户满意的能力。
3.7 软件测试国家标准
一、GB/T 9386—1988《计算机软件测试文件编制规范》。
二、GB/T 15532—1995《计算机软件单元测试规范》。
三、GB/T 17544—1998《信息技术软件包质量要求和测试》。
四、GB/T 16260.1—2003《软件工程 产品质量》第1部分,质量模型。
五、GB/T 16260.2—200X《软件工程 产品质量》第2部分,外部度量。
六、GB/T 16260.3—200X《软件工程 产品质量》第3部分,内部度量。
七、GB/T 16260.4—200X《软件工程 产品质量》第4部分,使用质量度量。
八、GB/T 18905.1—2002《软件工程 产品质量》第1部分,概述。
九、GB/T 18905.2—2002《软件工程 产品质量》第2部分,策划和管理。
十、GB/T 18905.3—2002《软件工程 产品质量》第3部分,开发者用的过程。
十一、GB/T 18905.4—2002《软件工程 产品质量》第4部分,需方用的过程。
十二、GB/T 18905.5—2002《软件工程 产品质量》第5部分,评价者用的过程。
十三、GB/T 18905.6—2002《软件工程 产品质量》第6部分,评价模块文档编制。