宋亚魁 张 刚 王 瑞(中国航天系统科学与工程研究院,北京 100048)
军用软件测试工作量的动态估计方法研究
宋亚魁 张 刚 王 瑞(中国航天系统科学与工程研究院,北京 100048)
军用软件测试通常作为一个独立的项目进行管理。对软件测试项目进行合理、准确的工作量估计是保证测试工作顺利完成的重要前提。为解决目前软件测试项目工作量估计准确率较低的问题,采用一种动态的估计方法,将工作量估计贯穿于软件测试项目的整个生命周期,实现了工作量估计方法的持续改进。实验结果表明,该动态估计方法能够有效地提高估计精度。
军用软件,软件测试,工作量估计,生命周期,动态估计
在军用软件的整个生命周期中,软件测试已作为一项强制性要求被纳入到其研制生产过程当中。要保证军用软件的测试质量,就必须确保软件测试过程的独立性。目前,军用软件测试工作通常由独立的软件评测中心负责完成,军用软件测试通常作为一个独立的项目进行管理。对军用软件测试项目进行合理、准确的工作量估计,是保证军用软件测试工作顺利完成的重要前提之一。目前,研究人员已提出了一些估计软件测试工作量的方法,但这些方法大都从软件工作量估算模型转化而来,估算结果的准确率都非常低。
考虑到独立的软件测试项目与软件开发项目一样,具有本身的生命周期,所以,军用软件测试工作量估计应该是一个随着测试项目进行而不断改进的过程,而且,该过程应贯穿于军用软件测试项目的整个生命周期,这就要求对军用软件测试项目的工作量进行动态估计。
考虑到项目信息是随着项目的推进而不断丰富和细化的,所以,在具体的军用软件测试项目管理当中,工作量估计应该是一个持续改进、优化的过程。如图1所示,可以将工作量估计分为3个阶段:
一是初始阶段,确定当前项目的测试类型和测试范围,在历史数据库中选择同类项目数据进行估计模型的定制,并使用定制的模型,估算当前软件测试项目的工作量。
二是在软件测试项目执行过程中,跟踪项目进度,当实际进度与计划进度偏差较大时,及时调整项目过程或重新估计工作量。
图1 软件工作量估算过程框架
三是项目结束后,对工作量估算方法与估计结果进行评价,并将测试项目的过程数据汇总到历史数据库中,以提高未来工作量估算工作的准确性。
目前,研究人员已经开发出了一些软件测试工作量估算模型,但由于通用模型参数的设置与各软件测试项目的实际情况不符等原因,这些模型的估算准确率通常都不高。所以,本文采用基于经验的回归分析法来估算军用软件测试工作量。工作量影响因子相关会使回归分析算法的结果不稳定,为解决这一问题,本文引入主成分分析方法来提取特征值,提出了一种基于主成分分析的回归分析法,并采用该方法进行军用软件测试工作量的估计。
2.1 基于主成分分析的回归估算模型的建立
大量实践经验表明,传统的主成分分析法仅在处理样本矩阵呈现线性结构的问题时才具有良好的效果,而对于军用软件测试工作量估计问题,工作量影响因子通常都是非线性结构的,这一点在COCOMO模型的表达式中得到了明显的体现。所以,要将主成分分析方法引用到军用软件测试工作量估计当中,就必须对主成分分析方法的过程进行扩展改进,使其适用于非线性结构的样本数据。本文在应用主成分分析方法之前,先将原样本数据取对数,这样原样本空间数据的数乘关系就转化成了线性关系。
改进后的主成分分析方法的一般步骤为:(1)确定原始数据集
其中,第j个因子Xj=(x1jx2jx3j… xnj)T。
(2)求样本相关矩阵
对X进行对数化处理,将对数化数据阵记为Y=(yij)n×p,其中yij=lg(xij)。
再将对数化后的样本数据采用相关系数法来构建样本相关矩阵。
记相关矩阵为R=(rij)n×p,则:
显然,R为对称矩阵,且对角线上元素全为1。
(3)求相关矩阵的特征值和特征向量
然后,求解齐次线性方程组(R-λI)L=0,可以得到λ1、λ2、…、λp对应的特征向量L1、L2、…、Lp,其中,Lj=(l1jl2j… lpj)T。
(4)计算各主成分的贡献率。记第j个主成分的贡献率为bj,则:
(5)计算累计贡献率,前k个主成分的累计贡献率为:
(6)建立主成分
首先提取主成分,按照累计贡献率wk>95%的准则,确定提取前k个主成分。然后,计算主成分,第j个主成分为:Zj=YLj=l1jY1+l2jY2+…+lpjYp,其中,Y1、Y2、…、Yp为对数化指标变量,Yj=(y1jy2j… ypj)T。
所以有:
可以用新的主成分因子样本值Z=(zij)n×k来代替原样本值X进行统计分析。而Z中因子是不相关的。
考虑到主成分分析方法中的贡献率实际上实现了对各个主成分权重的客观赋值表现,所以,在经过拓展的主成分分析完成后,可以对各主成分进行加权平均,得到综合了各个影响因子的综合评价指标:
然后,分析综合评价指标与工作量之间的相关性,建立综合评价指标与工作量之间的非线性或线性回归模型。本文采用的回归模型为:
然后根据历史数据进行回归分析,确定系数a0、a1、a2、a3的值。
2.2 初始阶段工作量估算
完成主成分分析和回归分析后,就可以利用分析的结果来估算军用软件测试新项目的工作量了。
估算军用软件测试新项目的工作量的一般过程如下:
(1)提取项目的影响因子为:α=(α1α2… αp);
(2)将影响因子对数化:β=(lgα1lgα2… lgαp);
(3)提取主成分:ω=βL=[ω1ω2…ωk],其中ωj=βLi;
(4)综合评价指标为:(5)计算工作量的对数估算值:
(6)计算工作量的估算值:E=10m。
2.3 初始工作量估计实例验证
表1给出了16个已完成的同类功能软件测试项目在初始阶段的工作量影响因子信息及最后实际的首轮软件测试工作量信息。
对于以上样本前15组数据中的因子矩阵,采用拓展的主成分分析方法提取主成分,并计算综合评价值,然后将其与实际工作量拟合,工作量对数与综合评估值拟合曲线如图2所示,结果如表2所示。
表2 模型汇总和参数估计值
由R2=0.999可以看出,拟合结果非常好,工作量与综合评估指标满足:lg(E)=15.305Q-48.327Q2+54.778Q3。
计算第16组数据的综合评估值为0.2891,代入上式中可得到估计的工作量为51.19人日,而实际工作量为48人日。计算相对误差为6.64%,这个结果对于初始阶段来说估计效果较好。
表1 软件测试项目初始影响因子和工作量信息
图2 工作量对数与综合评估值拟合曲线
考虑到项目计划的制定都是以事先估计的工作量为依据,所以,对软件测试工作量的估计不仅仅是对未来工作量的简单预测,更是以此获得项目管理的目标。制定目标后,项目组就应该严格按照项目计划执行项目过程,尽量使整个软件测试项目最终按照计划完成。这就需要对项目执行过程中的工作量完成情况进行监控。
3.1 项目中的进度监控
在项目执行过程中,要定期对军用软件测试项目的实际进度信息进行采集,并与计划情况进行对比。当两者偏差不是特别大,并处于可控范围内时,可以针对误差产生原因进行分析,并及时对项目实施过程进行调整,以使实际进度与计划相符;而当偏差值太大,超过了软件测试项目的重大偏差标准时,微调手段已经无效,说明实际的软件测试执行进度与计划安排不符,测试任务不可能在计划安排的时间附近完成,也就是说初始制定的计划不合理,这时候就需要对软件测试项目的工作量进行重新估计,制定新的项目计划,以适应实际的项目进度。
本文将工作量估计作为贯穿于软件测试项目整个生命周期的动态过程进行管理。完成整体项目的工作量估计并制定项目计划后,在项目实施过程中通过实时监控和人为干预等手段,使软件测试工作进度尽量按照制定的项目计划来完成(只有在发生重大偏差时,才需要重新估计工作量和制定新计划)。这样,可以达到尽可能降低软件测试项目延误率的目标,从某种意义上来说,也提高了软件测试项目工作量估计的准确度。
3.2 动态工作量估算方法应用实例
如图3所示,是采用动态工作量估计方法跟踪一个软件测试新项目的进程所得到的结果。
从图中可以看出,项目前2周为需求分析阶段,实际进度比计划进度稍快;第3周后,工作进展变慢,使得计划值与实际值达到一致,这主要是因为用例设计和执行的第1周测试人员对实际系统还不够熟悉;之后虽然随着测试的进行,工作效率有所提高,但是实际进度还是逐渐落后于计划值;尤其到第10周左右,项目进展开始变缓,到第11周时实际进度与计划进度的偏差达到最大值,这主要是因为项目进行到后期,已经完成的测试中发现的问题需要与软件开发方进行确认,并且需要集中解决项目中的复杂用例和前期由于缺少数据等原因暂时无法执行的用例。据项目组中经验丰富的软件测试项目负责人估计,如果按部就班地按照测试流程走下来,该项目会超期将近3周才能完成,如图中虚线所示。这时候就需要项目组采取一定的措施,使得这个偏差值逐步减少。
图3 某软件测试新项目工作量监控图
所以,从第12周开始,留下经验丰富的项目组成员负责与开发方沟通并完成剩下的复杂用例测试,分出一部分项目组成员开始编写测试总结和报告,这样就大大加快了项目进度,使实际进度与计划值偏差持续缩小,最终测试项目实际进度比计划值仅落后1周,如图3中实线所示,相应的工作量估计相对误差仅为6%左右。
项目计划是项目监控的比较基准,为了避免项目计划的频繁变更,在项目初始阶段就要尽量准确地估计工作量,而初始阶段对工作量的估计准确性,取决于历史项目经验和估计方法选择的合理性。而这些经验的积累依赖于每次项目结束后对估计方法的评价总结。
项目结束后,该项目的实际工作量数据成为已知,因此,可以将实际工作量数据与计划工作量数据进行比较,对工作量估计方法与估计结果进行评价,找出工作量估计中偏差出现的原因,并制定相应的改进方法,将本次项目的相关数据反馈给企业建立数据库,以持续改进工作量估计方法,最终达到提高工作量估计精度的目的。这是对项目工作量进行动态管理的必要措施。
例如,在验证实例中,到项目后期,工作人员发现,开发方的研发水平及测试数据准备的充分性等因素也会影响软件测试项目的工作量,而且,这些因素在项目初期也是可以进行初步评估量化的。因此,可以在历史数据库中补充历史项目的这些因素信息,以在之后估算同类项目的工作量时考虑这些附加因素的影响。
另外,在项目实施过程中还发现,项目复杂程度对工作量的影响相对于其它因子更为显著,所以,在对该因子量化处理时可以对权重值进行适当调整。具体如何调整还有待进一步研究。
军用软件测试通常作为一个独立的项目来进行管理,具有完整的生命周期,因此,对军用软件测试项目工作量的估计应该是一个动态过程,只有通过持续的改进才能提高工作量估计的准确性,才能保证项目按计划完成。
本文针对军用软件测试项目执行前、执行中和执行后3个阶段来阐述工作量的动态估计方法,将工作量估计贯穿于项目的始终,可以减少军用软件测试项目的延误率,进而提高军用软件测试项目的工作量估计精度。
研究发现,实现工作量估计的动态管理,不仅需要在初始估计时使用正确的、符合项目实际情况的估计方法,在项目实施过程中也要以偏差为依据,对工作量进行实时监控。在项目实施完成后,还要对工作量估计方法与估计结果进行评价,并将本次项目的相关数据纳入历史项目数据库中,以持续改进工作量估计方法。
另外,随着软件行业的蓬勃发展,为了提高竞争力,民用软件行业对软件质量的要求也越来越高,软件测试也逐渐从软件开发项目中独立出来。所以,本文提出的军用软件测试项目的工作量估计方法,在民用软件行业也具有广阔的应用前景。
1 江震. 软件项目工作量估算的规模不经济[J]. 中国科技信息, 2008, (19): 109~111
2 William E. Lewis Gunasekaran Veerapillai. 软件测试与持续质量改进(第2版)[M]. 陈绍英, 张河涛, 刘建华, 等译. 北京: 人民邮电出版社, 2008
3 李希灿, 邢文洁. 多目标系统多维模糊决策理论模型[J]. 山东农业人学学报, 2001, (3): 336~340
4 CAPES J. Applied software measurement: global analysis of productivity and quality[J]. McGraw Hill, 2008, (3): 120~125
5 刘杰生. 软件成本估算方法与技术现状探讨[J]. 舰船电子工程, 2000, 20(4): 13~16
6 SINHAL A, VERMA B. A novel fuzzy based approach for effort estimation in software development[J]. ACM SIGSOFT Software Engineering Notes, 2013, 38(5): 1~6
7 CAIVANO D, LANCBILE F, VISAGGIO G. Software renewal process comprehension using dynamic effort estimation [C]. //Pros of IEEE International Conference on Software Maintenance. [S. 1.]: IEEE Press, 2001: 209~218
8 杨光宇, 曾东方, 罗平. 考虑短板效应的一种度量模型及其在软件可信性中的应用[J]. 计算机应用研究, 2012, 29(1): 165~167
Study on Dynamic Estimation Method of Military Software Testing Work
Song Yakui Zhang Gang Wang Rui
(China Academy of Aerospace Systems Science and Engineering, Beijing 100048)
Military software testing has often been managed as a separate project. The reasonable and accurate estimation of effort for software testing project is an important premise for the completion of software testing work. To solve the problem of low accuracy in the current effort estimation methods, the dynamic estimation method has been proposed. The dynamic estimation method will be carried out throughout the entire life cycle of the software testing project and can improve the estimation method continuously. The results of experiments show that the estimation method can improve the estimation precision effectively.
Military Software, Software testing, Effort estimation, Life cycle, Dynamic estimation
1009-8119(2015)10(1)-0054-04