卢倩 肖蕾 曲延羽 覃高峰
摘 要:针对当前软件产品质量的评价需求,基于软件测试度量指标的质量模型成为评估软件测试质量的有效手段。本文以软件测试流程为驱动,研究静态测试度量元,总结软件产品的测试度量指标,结合ISO/ICE 25010模型,探索基于软件测试度量指标的质量模型,建立软件测试评价体系,以评估软件产品的质量。
关键词:软件测试;软件质量;质量度量
中图分类号:TP311.5 文献标识码:A 文章编号:1003-5168(2021)31-0012-03
Research on Quality Model Based on Software Test Metrics
LU Qian XIAO Lei QU Yanyu QIN Gaofeng
(SAIC GM Wuling Automobile Co., Ltd., Liuzhou Guangxi 545007)
Abstract: In view of the requirement of software product quality evaluation, the quality model based on software testing measurement index is an effective way to evaluate software testing quality. Driven by the software testing process, this paper studies the static test metrics, summarizes the test metrics of software products, explores the quality model based on the software testing metrics combined with ISO/ICE 25010 model, and establishes the software testing evaluation system to evaluate the quality of software products.
Keywords: software testing;software quality;quality measures
软件测试度量可以判断测试的有效性和完整性,以量化产品质量的程度,包括对开发软件系统或生命周期过程中具有某个给定属性的度的定量[1]。软件度量指标表示软件产品或开发过程的特征。软件质量模型已有许多成熟的定义,比较常见的有McCall模型、Boehm模型、ISO/ICE 25010模型等。ISO/ICE 25010软件质量模型建立在McCall和Boehm模型基础上,加入了功能适用性、安全性和互用性,对软件产品的内部和外部质量属性能进行有效识别,因此适用于大多数软件工程系统[2]。
然而,随着软件质量要求的不断提升,传统的软件测试验证和质量管理方法已无法满足如今发展迅速的软件产品,逐渐显露出缺乏软件测试质量的有效度量指标,无法量化评估软件产品质量等弊端,因此建立有效的软件测试评价体系愈发紧迫。软件测试质量是由人、过程、工具共同决定的。软件测试质量影响产品质量,而产品质量依赖于软件测试质量[3],其关系如图1所示。将度量元和软件测试度量指标融入软件质量模型,有助于量化软件测试评价体系,提高软件测试有效性和完整性,评估和提升软件产品质量。
1 静态测试度量元
静态测试度量元是对代码进行检查、对静态结构进行分析后评估代码质量的度量元素[4]。HIS Metrics是德国几大汽车OME所倡导的静态测试度量元,主要从软件的复杂性、可维护性、可读性的角度考察软件质量。HIS Metrics可直接由QAC工具按一定的规则规范检测代码并对代码进行静态结构分析后导出测试报告得到。HIS的关键度量元包括以下几部分。
1.1 圈复杂度STCYC
圈复杂度的计算值是决策点数量加1。STCYC高意味著函数的模块化不充分或函数内逻辑较复杂。HIS指定的范围是1~10,有限放宽到50,整个工程比例最多为15%。项目工程的圈复杂度即工程中所有函数的圈复杂度之和,下面分析其计算方式。
先计算单个函数的圈复杂度STCYC,其中[e]是决策点的数量,即
1.2 return语句个数STM19
通过return语句数量来计算模块出口数。该度量元不考虑特定出口函数的调用,如exit( )。STM19少说明代码结构好、运行稳定。HIS指定的范围为0~1,有限放宽到1,整个项目占比为1%。
1.3 函数被调用的频次STM29
统计某个函数被调用的次数,一个函数被调用的次数越多表明此函数越重要。该度量元是针对函数度量的,主要用来确定关键函数。
1.4 嵌套深度STMIF
STMIF表示代码中控制流图中最大的嵌套深度。嵌套深度小,说明代码复杂度低、可读性高、白盒测试难度低。降低该值的办法之一是将嵌套拆分成多个函数。HIS指定的范围为0~4,有限放宽到10,整个项目最多占7%。
1.5 函数语句个数STST1
统计函数中的语句个数,作为程序可维护性的指标。该值越大,表明语句越多,操作数和操作符越多,程序越难被理解,维护难度越高。
2 软件测试度量指标
软件测试的重要作用之一是评估和保证软件产品的质量。在软件开发过程中,通过不断重复测试、发现问题、修复缺陷的过程来提高软件产品质量[5]。因此,需要有明确的度量指标来衡量软件测试质量,进而评估产品质量。根据软件测试的特性,从进度、成本、规模、测试质量和产品质量5个方面总结了度量指标,如表1所示。
3 软件质量模型
ISO25010软件质量模型由8个特性(涵盖31个子特性)组成,是软件质量标准的核心[6]。根据软件生命周期,创新性地把软件测试度量指标和静态测试度量元结合到ISO25010模型,建立软件测试评价体系,如图2所示,有效地量化评价软件产品的质量。
ISO25010模型的功能正确性主要验证功能是否正确,可将测试通过率和有效缺陷率作为度量指标;功能完备性是检验提供的功能是否完整,可用需求覆盖率作为度量指标之一;功能适合性是看所设计的功能是否满足需求,可将需求通过率作为度量指标。
可靠性是软件在规定条件下有正常的功能、性能水平的程度,可将N次回归故障率、缺陷修复率和缺陷密度作为衡量指标,还可用平均无故时间、平均恢复时间、平均失效间隔时间等量化软件产品的可靠性程度。
安全性是产品保护信息和数据的能力。效率性是在规定资源下可提供适当性能的程度。这两个特性与功能性和可靠性高度相关。根据相关规定或标准,需着重关注功能安全和资源可靠,可针对性地选取功能性和可靠性的度量指标作为衡量标准。
维护性和可移植性是维护或移植软件的有效性和效率的程度。兼容性是软件进行信息交互的能力。静态分析代码时,可用HIS度量元作为初步度量指标,再结合其他特性最终衡量。
易用性主要针对特定用户在使用软件产品时满足他们满意度要求的特定目标的程度,这就要从不同的用户角度出发,灵活进行人为度量,因为数据度量很难达到要求。
4 结语
软件需求是软件测试的本质。软件测试是软件质量的基石。软件测试度量元和度量指标结合到软件质量模型中,可用来量化评估软件产品的质量。但是,评估软件的质量应该是一个多维的球形,软件测试有效性度量需要很强的实践性研究。本文只是浅显的表层模型探索,建立有效的软件测试度量指标体系不仅需要大量的知识积累,还需要在项目软件测试中不断进行实践研究。
参考文献:
[1]陈文兵.基于软件测试的质量度量研究和应用[D].北京:中国科学院大学,2015:65.
[2]孙洋,袁玉宇.ISO/IEC 25010质量模型标准现状[J].信息技术与标准化,2008(11):33-36.
[3]顾俊杰.浅谈产品质量模型在质量评估中的应用[J].核标准计量与质量,2019(2):45-50.
[4]荣志文,李嘉,蔡立志.基于圈復杂度的软件测试方法研究[J].软件产业与工程,2012(1):45-48.
[5]杜以团,严彬宾,王今朝.软件测试在软件质量提升中的价值探讨[J].电子质量,2021(9):85-88.
[6]51Testing教研团队.软件测试核心技术[M].北京:人民邮电出版社,2020:42-66.