质量一词,在百度百科解释为“质量是物体本身的属性,物体的质量与物体的形状、物态及其所处的空间位置无关,质量是物体的一个基本属性”。

针对软件,可将质量理解为“软件产品满足用户或规定显性需求或隐性需求的程度”。

从质量定义可以看出,软件质量的关键点是满足要求,可使用差、好及优秀等修饰词进行表述。

针对软件而言,“满足要求”包含两个层次:

一是用户显性需求;

二是满足其隐性需求。

通常情况下,用户容易表述其显性需求,如需要何种功能、何种性能表现等,但无法明确其隐性需求,如软件产品无论在哪种用户需求背景下,都需满足法律法规的限制、行业限制、用户约定俗成习惯,甚至是企业内部的规章制度等。因此,考虑软件质量时,既需考虑用户显性需求,也需考虑其隐性需求,这点测试工程师在分析测试需求时必须考虑。

衡量一个软件系统的好坏,可从过程质量、内部质量、外部质量、使用质量等几个方面考察。

  • 过程质量关注软件产品整个生产流程是否规范;
  • 内部质量关注软件内部设计及静态测度是否合格;
  • 外部质量关注软件产品功能、性能的表现,使用质量则关注软件系统在使用过程中的易用性、满意度表现。

对于测试工程师而言,如果从集成测试角度考虑,需关注内部质量、外部质量及使用质量,如果仅做黑盒测试,则可从外部质量及使用质量考虑。

衡量软件好坏的关键在于检验被测对象“满足要求”的程度。这些“要求”对应的是特性,那么衡量软件好坏的关键点转变为特性的达到程度,如果通过量化指标将这些特性进行量化,便可以根据指标达标情况判断被测对象的优劣。

国标软件质量GB/T16260.1—2006/ISO9126:2001定义了衡量软件质量的6个特性,分别是功能性、可靠性、易用性、效率、可移植、可维护等。

国标GB/T25000.51标准对9126标准做了补充,增加了使用质量评价,关注于用户满意度,特别对COTS(商用现货软件)规定了基本的质量要求及测试方法,以便于软件的供应、选择、采购及测试。

从软件测试角度而言,测试工程师需要了解每个特性及其子特性,以便于在分析测试需求、提取测试需求及评价被测对象时有的放矢,依据标准开展有效的测试活动。

一、功能性

功能性是指软件在指定条件下使用时,满足用户明确和隐含需求的功能的能力。功能性包含以下5个子特性。

1、适合性:软件为指定的任务和用户目标提供一组合适功能的能力。

2、准确性:软件提供具有所需精确度的正确或相符的结果或效果的能力。

3、互操作性:软件与一个或更多的规定系统进行交互的能力。

4、保密安全性:软件保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问。

5、功能性依从性:软件遵循与功能性相关的标准、约定或法规以及类似规定的能力。这些标准要考虑国际标准、国家标准、行业标准、企业内部规范等。

二、可靠性

可靠性是指软件在指定条件下使用时,维持规定的性能级别的能力。可靠性要求有两个重要的概念:平均故障修复时间(mean time to repair,MTTR)、平均无故障时间(mean time between failures,MTBF),MTTR值越小,说明故障修复时间越短,故障处理响应速度较快,MTBF值越大,说明软件故障率低,系统可靠性高。可靠性包含以下4个子特性。

1、成熟性:软件为避免由软件中错误而导致失效的能力。

2、容错性:在软件出现故障或者违反指定接口的情况下,软件维持规定的性能级别的能力。

3、易恢复性:在失效发生的情况下,软件重建规定的性能级别并恢复受直接影响的数据的能力。

4、可靠性依从性:软件遵循与可靠性相关的标准、约定或法规的能力。

三、易用性

易用性是指在指定条件下使用时,软件被理解、学习、使用和吸引用户的能力。易用性包含以下5个子特性。

1、易理解性:软件使用户能理解软件是否合适,以及如何能将软件用于特定的任务和使用环境的能力。

2、易学性:软件使用户能学习其应用的能力。

3、易操作性:软件使用户能操作和控制它的能力。

4、吸引性:软件吸引用户的能力。

5、易用性依从性:软件遵循与易用性相关的标准、约定、风格指南或法规的能力。这些标准要考虑国际标准、国家标准、行业标准、企业内部规范等,如企业内部的界面规范。

四、效率

效率是指在规定条件下,相对于所用资源的数量,软件可提供适当性能的能力。效率包含以下3个子特性。

1、时间特性:在规定条件下,软件执行其功能时,提供适当的响应和处理时间以及吞吐率的能力,即完成用户的某个功能需要的响应时间。

2、资源利用性:在规定条件下,软件执行其功能时,使用合适的资源数量和类别的能力。

3、效率依从性:软件遵循与效率相关的标准或约定的能力。

五、可维护性

可维护性是指软件可被修改的能力。修改可能包括修正、改进或软件对环境、需求和功能规格说明变化的适应。可维护性包含以下5个子特性。

1、易分析性:软件诊断软件中的缺陷、失效原因或识别待修改部分的能力。

2、易改变性:软件使指定的修改可以被实现的能力。

3、稳定性:软件避免由于软件修改而造成意外结果的能力。

4、易测试性:软件使已修改软件能被确认的能力。

5、维护性依从性:软件遵循与维护性相关的标准或约定的能力。

六、可移植性

可移植性是指软件从一种环境迁移到另外一种环境的能力。可移植性包含以下5个子特性。

1、适应性:软件无须采用有别于为考虑该软件的目的而准备的活动或手段,就可能适应不同指定环境的能力。

2、易安装性:软件在指定环境中被安装的能力。

3、共存性:软件在公共环境中同与其分享公共资源的其他独立软件共存的能力。

4、易替换性:软件在同样环境下,替代另一个相同用途的指定软件产品的能力。

5、可移植性依从性:软件遵循与可移植性相关的标准或约定的能力。