基于测试数据的装备软件质量评价
2019-08-05孙陇平
张 峰 孙陇平 陈 伟
(1.91404部队 秦皇岛 066000)(2.江苏自动化研究所 连云港 222061)
1 引言
软件质量是软件符合明确叙述的功能和性能等需求、及文档中明确描述的开发标准的程度。软件测试是保证发布的软件产品达到一定的质量标准的一种有效手段,测试数据是在软件测试过程中产生的软件缺陷数据,是评价软件质量的重要方式。根据装备软件系统的特点,通过采集软件测试过程产生的缺陷数据,建立软件质量评价模型,开展基于测试数据的软件质量评价技术研究,对于衡量以及促进提高软件产品的质量有重要意义。
2 软件质量评价体系
将软件质量[1~2]从评价目标开始逐层分解到能够独立度量的层次,形成软件质量要素、衡量标准和度量标准相结合的三层次结构。软件的质量体系由一系列可以体现系统可见的行为化特征的高等级质量因素的质量要素组成,软件质量是这些高等级质量要素构成的函数;每一个质量要素由若干衡量标准表示,而衡量标准是与软件产品和设计相关的质量特征的属性,如可靠性由精确性、容错能力、一致性和简单性来表示,正确性由可追踪性、完备性和一致性来表示;每一衡量标准由若干定量化指标度量标准进行度量,而每个度量标准指标都是获得质量准则的某些属性的度量。软件质量评价框架如图1所示。
对软件的质量要素、衡量标准进行充分分解,在此基础上对衡量标准进行分解,形成多个可以度量的度量元。构建基于测试数据的软件质量评价体系如图2所示。
图1 软件质量评价框架
图2 软件系统质量评价指标体系
3 软件质量评价体系映射
通过对测试数据进行相关度分析,建立属性集;对测试数据按相关属性进行纵向管理;建立度量标准库和测试数据源仓库的映射实体。通过研究测试流程到数据采集流程的映射,建立能满足基于测试数据驱动的软件质量评价的数据采集技术以及对测试数据进行分析和管理,从而建立以软件质量评价为目的数据源仓库。
软件质量评价体系[3~8,10]与软件测试数据映射最重要的是对分解的最末端的软件度量指标的进行可计算度量的映射,形成软件质量评价衡量指标可以使用软件测试数据进行度量计算,而对应的软件测试数据应该覆盖软件测试的全过程数据。软件质量评价体系与软件测试过程之间的对应关系如图3所示。
图3 软件质量评价体系与软件测试过程映射
3.1 软件质量评体系映射方法
针对软件质量评价体系的度量指标不能简单地通过数据标定后定义为“好”、或“优”、“略”,这样的指标数据找不到明确的边界,既不能进行衡量标准、质量要素层级的汇总、计算,也无法体现出各个指标值之间的差距如何。通过模糊评价方法来评价软件的度量指标。
1)模糊数学隶属函数的定义
设在论域U上给定了一个映射
则称A为U上的模糊集,A(u)成为A的隶属函数(或称为对A的隶属度)。
上述定义说明,论域U的一个模糊子集A完全由其隶属函数所刻划,隶属函数把U中每个元素u和区间[0,1]中的一个数A(u)结合起来,它表示u在A中的资格,即元素对模糊集合的隶属程度。当A(u)的值越接近1时,则U隶属于A的资格就越高。
2)定义计算公式
采用如下公式对软件质量评价指标进行评价。
其中X为评价值,A为软件过程中发现的软件未满足或满足功能、性能、接口等数据,B为软件需求功能、性能、接口等数据,其中0≤X≤1.0越接近1.0越好。
3.2 软件质量评价体系映射关系
对照软件需求描述的功能及、软件测评大纲、软件测试用例情况,通过对比软件测试时发现的软件缺陷,达到对软件功能性度量,具体软件功能性与软件测试数据映射关系见表1。
表1 功能性与软件测试数据映射关系
4 基于测试数据的软件质量评价
4.1 评价模型概述
基于测试数据的软件质量评价模型[9,11]的建立可分为如下步骤。
2)确定权重,由于基于测试数据的软件质量评价指标体系具有不确定性,对于某些因素缺失的状况,对缺失的权重进行二次分配;对于群组评价的情况下,给出群组评价的权重确定方法。
4.2 因素集及权重确定方法
1)因素集
软件质量是各种特性的复杂集合[12],会随着应用的不同和用户要求的不同而不同。针对基于测试数据的质量评价指标体系建立模型,对于具体软件评判的特殊要求可在现有模型基础上添加。
根据评价指标体系中的层次化结构,将软件质量评判因素划分为6个子集。
U1:功能性度量子集;U2:可靠性度量子集;U3:易用性度量子集;U4:效率度量子集;U5:可维护性度量子集;U6:可移植性度量子集。
每个子集中包含不同的子子集,子子集中的元素是质量特性中的子特性。U1={ }
U11,U12,...U15,其中U11:适合性;U12:准确性;U13:互操作性;U14:安全保密性;U15:功能依从性;其他子集中的元素依此类推。
其中,U11也是一个集合,其子集为适合性的度量标准。
U11={RM1,RM2,RM3,RM4} ,其中 RM1:功能的充分性;RM2:功能的完整性;RM3:功能实现的覆盖率;RM4:功能规格说明的稳定性。其他子集中的元素依此类推。
2)标度
标度是用于事物之间进行比较的标准,包括比例标度和绝对标度。比例标度的测度往往需要进行比较才能确定,绝对标度的测度往往不需进行比较就可直接决定。
采用比例标度的方法对评价指标体系进行量化,采用矩阵法确定指标体系中个质量特性、子特性以及数据元素之间的权重。
比例标度一般把对事物的特性的比较分成5档,用1~9的整数及其倒数对比进行测度(级差为2)。表2给出了一种对应关系。
表2 定性信息与定量值的对应关系
3)判断矩阵
设Ce是递阶层次结构中第k层的一个元素,A1,A2,…,An是第k+1层且与Ce有联系的元素,每对Ai和Aj的定量判断可通过下面的模型进行计算,即相对于Ce,元素Ai和Aj哪一个重要,重要的程度如何。
称 A=(aij)n×n为元素 A1,A2,…,An相对于 Ce的判断矩阵,显然判断矩阵满足:aij>0,aij=1/aji,aii=1。因此对于一个n阶判断矩阵来说,需要输入的信息量为n(n-1)/2(上三角或下三角部分)。相对于可靠性来说,可恢复性(A1)和容错能力(A3)同等重要,成熟性(A2)稍重要于可恢复性和容错能力,得到判断矩阵:
4)残缺判断矩阵
由于知识的限制等原因,可能无法提供n(n-1)/2个判断。如果判断少于n(n-1)/2个,则称判断矩阵为不完全信息下的残缺判断矩阵。
5)从判断矩阵产生权重
得到相对于某一特性的子特性或相对于某一子特性的指标符的判断矩阵(包括残缺判断)后,可用特征根法求出一种质量特性(或属性)的权重向量W。设判断矩阵是A的最大特征根,特征根法就是求满足AW=λmaxW的特征向量。需要说明的是,对于残缺判断矩阵,若元素aij残缺,则用wiwj代替aij。问题是得到一组软件质量特性的判断矩阵A后,其最大特征根λmax是否存在?若λmax存在,相应的作为权重向量的特征向量W的分量是否全为正分量。
定理1 设A是n阶判断矩阵,则
1)A的最大特征根 λmax必存在,则 λmax≥n ;
2)A的最大特征根λmax有对应的正特征向量。
下面给出求判断矩阵A=(aij)n×n的最大特征根λmax和相应特征向量W的迭代算法。
(1)设初值特征向量为W(0),计算精度为ε>0。为方便起见,一般取;
(2)计算W(k)=AWk-1,k≥1,其中Wk-1为上一次迭代得到的归一化向量;
(4)以 W(k)作 为 权 重 向 量 W,并 求 出。
4.3 群组评价权重确定方法
通常人们习惯用引入群组评价的方法来保证评价的科学性,群组评价方法为:k个质量评价者根据判断矩阵法对待评价的指标体系进行判定,分别给出各自的判断矩阵。本节主要研究当出现K的相同(K的评价者的评价结果一致)或者不同(K的评价者的评价结果不尽相同)时,如何确定最终的判断矩阵。
假定有k个软件质量评价者,它们给出的一组质量特性判断矩阵为
两种处理方法包括如下两种:
1)对k个判断矩阵求均值,然后以均值矩阵为基础,按照4.2节中介绍的方法求权重向量W。即:,对A求权重向量W。
分别对k个判断矩阵按照4.2节中介绍的方法求权重向量Ws,然后对k的权重向量求均值。即:假定 As的权重向量为Ws( )s=1,2,...,k , 则。
由于方法1)更接近于实际情况下的群组决策方法,采用1)进行群组评价的矩阵确定。
4.4 误差解决策略研究
设相对于成熟性而言,子特性RM1,…,RM6的判断矩阵为。若定性判断 RM3稍重要于 RM2,RM2和 RM4同等重要,即 a32=3,a24=1,则一般就隐含着 RM3稍重要于RM4,即a34=a32·a24=3,但有时由于人的判断的误差,实际判断时a34并不一定等于3,这种情况尤其在元素较多(判断矩阵阶数较大)时不可避免。为使判断误差在一个可接收的范围内,引入一致性指标的概念。
定理2 若A为n阶一致性判断矩阵,则其最大特征根λmax=n。
定义2 设A为n阶判断矩阵,λmax是A的最大特征根,称CI=(λmax-n)/(n-1)为A的一致性指标。
一致性指标反应了A偏离一致性的程度。不难看出,2阶判断矩阵总是一致的,阶数n越大,即涉及的判断因素越多时,一致性就越难达到。因此,用随机一致性指标RI来修正一致性指标CI。随机一致性指标可通过统计检验得到(表3)。
表3 一致性指标统计表
定义3 设CI和RI分别是判断矩阵A的一致性指标和随机一致性指标,称CR=CI/RI为A的平均随机一致性指标。
当CR<0.1时,认为A具有满意的一致性,即判断误差是可接受的。当然0.1这个界限值也可改变,它只是一个经验值。
4.5 权值二次分配策略
由于测试数据是在测评过程中产生的一系列复杂数据。被测软件各自特性的迥异会导致数据有可能能覆盖到评价指标体系中的所有指标,也有可能只覆盖到部分指标,为保证最终的加权值为1,应该对未被覆盖到的指标进行二次分配。
当数据缺失时,根据质量评价的层次模型,依次判断数据元素层的各个数据元素,若数据元素的缺失不会导致子特性的缺失,则将数据元素的权值按照该数据元素所在子特性下现有数据元素的权重比例,把缺失的数据元素的权值进行二次分配;若数据元素的缺失导致了子特性的缺失,则将缺失的子特性的值按照该子特性所在特性下现有子特性的权重比例,把缺失的子特性的权值进行二次分配。
假设集合U为质量要素,R为衡量标准,RM为质量标准。
∀ui∈U,f()ui表示质量要素ui所占权重;
4.6 基于测试数据的软件质量评价验证
根据特征根法,求得可恢复性、成熟性和容错性的权重值分别为 0.2,0.6和 0.2,λmax=3,CR=CI=0。
相对于成熟性而言,RM1稍重要于RM2,RM3明显重要于 RM5,RM6稍重要于 RM4,RM4和RM2同等重要,RM3明显重要于RM2,求出的权重值见表4。
λmax=6.005545,CI=0.001109,CR=CI/RI<0.1。
表4 权重值表
指示符的测度值可通过与指示符有关的数据元素的绝对标度得到,并被映射成评价准备阶段定义的等级。
为定义等级,使用两个值0.4和0.6作为阀,并且使用3个等级值0,0.5,1分别表示差,中等和好(表5)。
表5 质量特性和子特性的等级值
质量特性的等级值可从与其相关的指示符的等级值和权重得到,成熟性的测度值为0.68。RM5的测度值NULL意味着指示符未被测度,所以上面的计算中就不包括RM5。
成熟性和可恢复性的测度值分别是0.68和0.7,通过映射,给这2个子特性等级值赋予1。容错子特性未被度量。
可靠性的测度值为( )1×0.2+1×0.6/0.8=1,其等级值按等级定义应该是1。然而可靠性的等级值根据约束规则置为0.5。这个规则是:如果一个特性的等级值为1,它的子特性少于4个且其中至少有一个未被测度,则这个特性的等级值强制赋予0.5。
图4仅展示了一个特性的测度,其他特性的测度可类似得到。当所有特性都被测度之后,就可根据质量需求确定软件质量是否满意。
图4 质量评价实例
5 结语
以软件质量评价背景,针对软件质量评价构建了软件质量评价体系,并将软件质量评价体系的质量要素、衡量标准分解细化,形成软件质量度量标准;然后分析整个软件测试过程,并将软件测试过程产生的数据和软件质量评价体系的度量标准进行映射,使测试数据覆盖度量标准,为度量标准提供数据支撑;研究基于测试数据的软件质量评价模型,针对建立的基于测试数据的软件质量评价指标体系,研究因素集以及权重的确定方法,并对群组评价、误差以及权值的二次分配给出了相应的策略。最后对软件的可靠性研究成果进行实例验证。提出的软件质量评价体系和测试数据与软件质量评价特性的映射,解决了软件质量评价数据的来源,突破了测试数据采集的不客观和不易采集性;研究成果可直接应用于软件产品的质量评价分析,可以直观、快捷地评价软件质量,并能对多个软件的质量指标进行细化对比,为软件产品的质量评
价提供一种全新的、科学的、合理的方法,可以提高软件质量评价的准确性。