软件质量模型
1 软件质量
ANSI/IEEE 定义软件质量为:“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。
具体包含四层含义:
(1)能满足给定需要的性质和特性的全体
(2)具有所期望的各种属性的组合程度
(3)顾客和用户觉得能满足其综合期望的程度
(4)确定软件在使用中将满足顾客预期要求的程度
2 质量模型
前面说过测试是对软件质量的度量,那么如何度量,从哪些角度度量,怎样的质量算作良好。
没错,我们需要一套标准,或者说模型来作参考,赋予不同指标不同的权重,通过计算软件质量的得分,便可以评判出质量的好坏。
2.1 ISO/IEC 9126质量模型
ISO/IEC 9126在1991年12月发布,将软件质量归为6大特性和27个子特性
-
功能性:软件产品提供满足明确和隐含需求功能的能力
-
适合性:为规定任务提供一组合适功能的功能,即做了该做的事
-
准确性:得到正确或相符的预期结果的能力
-
互操作性:与其他系统软件交互的能力
-
保密安全性:防止对程序及数据的非授权的故意或意外访问的能力
-
-
可靠性:软件产品维护规定的性能级别的能力
-
成熟性:避免软件内部的错误扩散而导致系统失效的能力
-
容错性:防止外部接口错误扩散而导致系统失效的能力
-
易恢复性:系统失效后,重新恢复原有的功能和性能的能力
-
-
易用性:软件产品被理解、学习、使用及吸引用户的能力
-
易理解性:交互性要清晰、准确和易懂
-
易学性:用户学习软件所花努力的属性
-
易操作性:用户操作和控制软件的能力
-
吸引性:吸引用户的能力
-
-
效率:相对于所用资源的数量,软件产品可提供适当性能的能力
-
时间特性:软件执行功能时的响应、处理时间和吞吐率
-
资源特性:软件执行功能时所使用的资源数量和类型
-
-
维护性:软件产品可以被修改的能力,修改可能包括修改、改进或者适应环境、需求和功能规约的变化
-
易分析性:诊断缺陷或失效原因所需努力的属性
-
易改变性:进行修改、排除错误或适应环境变化的能力
-
稳定性:避免软件修改而造成意外结果的能力
-
易测试性:提供辅助性手段帮助测试人员实现其测试意图
-
-
可移植性:软件产品从一个环境迁移到另一个环境的能力
-
适应性:无需相应变动就能适应不同环境的能力
-
易安装性:尽可能少的提供选择,方便用户直接安装
-
共存性:与其他公共软件共存
-
易替换性:同等环境下,替换其他同类产品的能力
-
2.2 GB/T 25000
ISO/IEC 9126已经由ISO/IEC 25010取代,GB/T 25000正是参考了ISO/IEC 25000,形成了属于我们自己的国标,于2016年发布。
相较于ISO/IEC 9126,新标准将质量模型划分成8个特性
部分新特性解读:
-
容量,产品或系统参数最大限度满足需求的程度
-
用户差错防御性,系统预防用户犯错的程度
-
信息安全性,产品或系统保护信息和数据的程序,以使用户、其他产品或系统具有与其授权和授权级别一致的数据访问度
-
保密性,产品或系统确保数据只有在被授权时才能被访问的程度
-
完整性,系统、产品或组件防止未授权访问、篡改计算机程序或数据的程度
-
抗抵赖性,活动或事件发生后可以被证实且不可被否认的程度
-
可核查性,实体的活动可以被唯一地追溯到该实体的程度
-
真实性,对象或资源的身份标识能够被证实符合其声明的程度
-
-
模块化,由多个独立组件组成的系统或计算机系统中,其中一个组件的变更对其他组件影响最小的程度
大方向没有改变,新增的2大特性(信息安全性、兼容性)也是从原有的功能性和可移植性中分裂出来。
换个角度来看,将信息安全性和兼容性单独拎出来,说明人们越来越关注它们对软件质量的影响。
说到兼容性,没有太多想法,就记得3Q大战时,腾讯宣布在装有360软件的电脑上停止运行QQ软件,用户必须卸载360软件才可登录QQ。至于微信不支持分享抖音链接算不算,大家可以自行思考。
再说到信息安全性,问题就大了。勒索病毒WannaCry席卷全球、Facebook5000万用户数据被利用,疑似影响美国大选、Reaper僵尸病毒每天可感染1万台loT设备、各大网络用户信息泄露,并在网上公开叫卖等等。当社会越来越信息化时,信息的安全就显得尤为重要。
3 模型的使用
以一个大型计算机系统或软件产品而言,确定或测量所有部分的所有子特性是不切实际的,因此,不可能针对所有可能的用户任务场景确定或测试使用质量。质量特性相对重要性取决于项目的高层目标和宗旨。因此,宜在将模型作为需求分解的一部分使用之前,依据利益相关方的产品目标和宗旨,将模型进行裁剪,以便标识最重要的,作为不同类型测量之间分配资源的那些特性和子特性。
然后根据这些特性,有针对性地设计测试用例,不仅能更全面地覆盖软件的使用场景,也能对软件进行更全面的质量评估。