购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 基于质量的认知

软件测试虽然不能等同于软件质量保证(SQA),但它是软件质量保证的主要手段之一。当我们讨论软件测试时,绝对离不开“质量”。基于质量的认识,软件测试就是对软件产品的质量评估,提高软件产品有关的质量信息。即使从1.1节中我们认为软件测试就是发现软件产品中的bug(缺陷),哪什么是“缺陷”呢?简单地说, 缺陷就是质量的对立面,一切违背质量的问题都可以看作软件缺陷 (虽然从专业术语来仔细辨析的话,会将问题分为“内在错误,外部失效”等)。所以要理解软件测试,就必须理解软件质量。

说起“质量”这个概念,我们都很熟悉,会说“坏的质量会怎样怎样,好的质量会怎样怎样”,但让我们给出质量的正式定义,可能不是容易的事情。我们也可以查国际标准,了解如何给质量下定义。例如IEEE Std 829-2008定义质量就是系统、组件或过程满足特定需求的程度,满足客户/用户需求或期望的程度。满足程度越高,质量就越好。例如,从软件需求定义文档来看,它所描述的需求和客户实际业务需求越吻合,将来实现的软件越有可能满足客户的业务需求,也意味着需求文档的质量越高。但这样说,还是比较宽泛,很难衡量质量。那究竟如何评估质量?从哪些维度来衡量质量呢?这就引出质量模型。基于质量模型,我们可以清楚质量有哪些属性(或维度),然后针对这些属性逐个地进行评估,不需要对软件质量进行整体评估,相当于按质量的各个维度来进行评估、各个击破。

过去将软件质量分为内部质量、外部质量和使用质量,像代码的规范性、复杂度、耦合性等可以看作是内部质量,内部质量和外部质量共用一个质量模型。现在国际/国家标准将内部质量和外部质量合并为产品质量。产品质量可以认为是软件系统自身固有的内在特征和外部表现,而使用质量是从客户或用户使用的角度去感知到的质量。因为质量是相对客户而存在,没有客户就没有质量,质量是客户的满意度。过去认为,内部质量影响外部质量、外部质量影响使用质量,而使用质量依赖外部质量、外部质量依赖内部质量。今天可以理解为产品质量影响使用质量,而使用质量依赖产品质量。

1.产品质量

根据国际标准IEEE 24765-2010,产品质量是指在特定的使用条件下产品满足明示的和隐含的需求所明确具备能力的全部固有特性。而根据ISO 25010:2011标准, 质量模型从原来的6个特性增加到8个特性,新增加了 安全性、兼容性 ”。如图1-2所示, 蓝色标注 的内容属于新增加或改动的内容。这里的安全性是指信息安全性(Security),原来放在“功能性”下面,但现在绝大部分产品都是网络产品,安全性越来越重要,所以有必要作为单独的一个维度来度量。今天系统互联互通已经很普遍,其次终端设备越来越多,除了传统的PC机,还有许多智能移动设备,如手机、平板电脑、智能手环、智能手表等,这些都要求系统具有良好的兼容性。这些特性就对应着测试类型,如功能测试、性能测试(效率)、兼容性测试、安全性测试等。

图1-2 ISO 25010 2016 产品质量模型

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

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

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

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

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

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

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

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

2.使用质量

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

图1-3 使用质量的属性描述

为了便于理解使用质量,下面举3个例子。

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

【例1-2】当我们玩游戏,沉醉于某款游戏,从产品本身质量属性看。是一个好产品,没有问题。但从使用质量看,会有损于玩家的健康,有健康风险,所以需要设置防沉迷功能。

【例1-3】当我们使用百度地图、滴滴打车等软件时,往往是在大街上。如果站在人行道或安全地方使用没问题,但是如果一面横穿马路一面还在使用,就有安全风险。这类软件应该给予提示,否则它们要承担相应的风险责任。 y1pDlNv2zjtNmKBDZ51YOjejmioUejfRmHC3XIOYnGeChPUsvY+TdqvN8lS2E7FE

点击中间区域
呼出菜单
上一章
目录
下一章
×