完整诠释软件质量模型

2017-05-08   出处: 软件质量报道  作/译者: 朱少民


为了能够在产品发布前,对产品质量能够做出比较准确的判断,需要清楚质量的属性,这就需要建立质量模型,如McCall质量模型、Boehm 模型、ISO 9126 模型等。传统质量管理更强调过程质量、内部质量,其关系如图1所示,过程质量影响内部质量、内部质量影响外部质量、外部质量影响使用质量,而使用质量依赖外部质量、外部质量依赖内部质量......



                                图1  过程质量、内部质量、外部质量、使用质量之间的关系 


个人认为,关注内部质量还是非常有必要的,内部质量需要考虑内部技术度量,包括代码规模、代码复杂度和开发规范的度量,如代码耦合性、数据耦合性、模块化、变量命名、程序规范性等,如图2所示。这些度量说实实在在的,度量的数据更为客观,如发现问题,也比较容易修正。



                                                                  图2 内部质量的部分属性度量公式及其说明


根据目前目前国际标准 ISO/IEC 25010:2011 软件质量分为使用质量产品质量将ISO 9126 内部质量、外部质量合并为产品质量,改进的模型可能是倒退,因为让开发者容易忽视软件的内部质量)。


1. 产品质量

产品质量是指在特定的使用条件下产品满足明示的和隐含的需求所明确具备能力的全部固有特性(内在特性),体现了产品满足产品要求的程度(外部表现),是产品的质量属性,包括功能适用性、效率、兼容性、易用性、可靠性、安全性、可维护性和可移植性,如图3、图4所示。系统安全性(security)已经被独立出来了,今天绝大多数的系统或软件都运行在互联网或网络环境下,安全已经无法忽视,这也让我们的安全性测试名正言顺。另外,兼容性也被独立出来,也预示着今天的环境复杂性和多样性,而且不以开发商的意志为转移。表1ISO/IEC 25010:2011和之前的标准(ISO 9126,即GB/T 16260)进行一个对比



                                                       图3 产品质量模型(中文





                                            图4 产品质量模型(英文


表1 ISO 25010与ISO 9126)的对比



下面将效率、兼容性、易用性、可靠性、安全性、可维护性和可移植性等进行简要介绍(详细见下面附录),以帮助大家理解为什么要进行功能性测试还要进行非功能性测试。

  1. 功能适应性(functional suitability):软件所实现的功能达到其设计规范和满足用户需求的程度,强调正确性、完备性、适合性等。

  2. 效率(efficiency):在指定条件下,软件对操作所表现出的时间特性(如响应速度)以及实现某种功能有效利用计算机资源(包括内存大小、CPU占用时间等)的程度,局部资源占用高通常是性能瓶颈存在;系统可承受的并发用户数、连接数量等,需要考虑系统的可伸缩性。

  3. 兼容性(compatibility),涉及共存和互操作性,共存要求软件能给与系统平台、子系统、第三方软件等兼容,同时针对国际化和本地化进行了合适的处理。 互操作性要求系统功能之间的有效对接,涉及API和文件格式等。

  4. 易用性(usability):对于一个软件,用户学习、操作、准备输入和理解输出所作努力的程度,如安装简单方便、容易使用、界面友好,并能适用于不同特点的用户,包括对残疾人、有缺陷的人能提供产品使用的有效途径或手段(即可达性)

  5. 可靠性(reliability):在规定的时间和条件下,软件所能维持其正常的功能操作、性能水平的程度/概率,如成熟性越高,可靠性就越高;用MTTF (mean time to failure,平均失效前时间) 或MTBF(mean time Between failures,平均故障间隔时间)来衡量可靠性。

  6. 安全性(security),要求其数据传输和存储等方面能确保其安全,包括对用户身份的认证、对数据进行加密和完整性校验,所有关键性的操作都有记录(log),能够审查不同用户角色所做的操作。它涉及保密性、完整性、抗抵赖性、可核查性、真实性。

  7. 可维护性(maintainability):当一个软件投入运行应用后,需求发生变化、环境改变或软件发生错误时,进行相应修改所做努力的程度。它涉及模块化、复用性、易分析性、易修改性、易测试性等

  8. 可移植性(portability)软件从一个计算机系统或环境移植到另一个系统或环境的容易程度,或者是一个系统和外部条件共同工作的容易程度。它涉及适应性、易安装性、易替换性。


2. 使用质量

ISO/IEC 25000标准看,软件测试还要关注使用质量,如图5所示。在使用质量中,不仅包含基本的功能和非功能特性,如功能(有效、有用)、效率(性能)、安全性等,还要求用户在使用软件产品过程中获得愉悦,对产品信任,产品也不应该给用户带来经济、健康和环境等风险,并能处理好业务的上下文关系,覆盖完整的业务领域详细见下面附录




                                                        图5  使用质量的属性描述

为了帮助大家理解使用质量,举一个我自己亲身经历的例子,当我在手机上安装了一个英语学习软件后,趁我讲课时,也没有判断我手机连接的是Wi-Fi还是3G4G,它自动下载该款软件用到的多个语音库(如新概念英语、六级英语等),造成我的流量大大超过套餐额度,带来额外的300元流量费。从功能上看,自动下载是一个不错的功能,但有很大的经济风险,在使用质量上有明显缺陷。

      再简单说一下健康风险。例如,从游戏产品本身看,越吸引人、越让用户爱不释手,说明游戏产品越好。但同时,游戏需设置防玩家沉迷的功能或提示,尽量减少游戏软件对青少年健康的负面影响。而且游戏是一关一关的玩,过一关的时间不应该太长。但目前微信、滴滴打车、地图软件并没有判断用户在街上一面行走一面使用的危险场景,说明没有帮助用户避免生命安全风险,值得改进的地方

附录:

1. ISO/IEC 25000质量标准架构


2. ISO/IEC 25010:2011 模型说明


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
631° /6311 人阅读/0 条评论 发表评论

登录 后发表评论