您好, 访客   登录/注册

软件测试中人力资源最优分配算法的研究

来源:用户上传      作者:

  [摘要] 针对软件测试人力资源分配问题,研究最优的人力资源分配方法,并给出利用计算机实现的相应的具体算法。
  [关键词] 软件测试 人力资源分配 最优算法 软件的可靠性
  
  一、问题的提出
  
  在当今信息网络的社会里,由于信息与经营的一体化使各行各业对计算机的依存性越来越大,这就造成了对计算机软件的需求量逐年增加。软件开发周期正向短工期化的方向发展,如何排除软件在开发过程中所产生的故障因素,这就必然考虑测试人力的最优分配问题。
  
  二、分配原理
  
  测试工程是软件开发的结尾工程,它分三个连续阶段:单元测试(单体、模块)、结合测试、综合测试(系统运用)。单体测试是对软件设计阶段按功能分割的各模块分别独立地进行测试;结合测试是将各模块结合起来后测试其是否能正确地进行数据的I/O操作;结合测试是对所有的系统模块结合起来,测试它们能否按用户的需求规格进行动作。
  分配方法:(1)设总测试人力量Q事先确定;(2)测试软件由M个相对独立的模块构成,并且可根据软件的可靠度增长模型推算出各模块残存的差错数;(3)对各模块最优分配既定测试总人力量Q的原则是分配能使软件内残存差错数尽可能最少;
  根据人力型软件可靠度增长模型来解决最优分配问题,投入测试人力量与发现差错数关系式:
  (其中a>0,1>r>0)(1-1)
  至于软件整体及各模块的可靠性评价基准尺度则采用NHPP模型的残存差错数期望值:
  
  所以由(1-1)式可定义测试时刻t的残存差错数的期望值为:
  
  其中测试工程投入测试人力以工时数或CPU小时表示,分配给模块i(i=1,2,…,M)的测试人力量用q*表示,于是可由qi(i=1,2,…,M)代换(1-2)式中的w(t):
  
  式子中各参数的意义为:
  ai测试开始前模块i内潜在差错总数期望值;
  ri:对模块i的单元测试人力差错发现率;
  qi:分配给模块i的测试人力量。
  所以软件整体残存差错总数期望值可由(1―3)式推出:
  (1-3)
  如果将以上测试人力最优分配问题用数学表达式来表示则有:
  (1-4)
  其中vi是模块i的重要程度、程序设计的复杂程度等因素而确定的对模块i的加权值,但对(1―4)还要附加如下限制条件:
  qi≥0(i=1,2,…M) (1-5)
  式中Q表示事先测算的既定测试总人力量。
  下面我们的目标就是推出满足(1―5)式条件下(1―4)式所表示的分配给各模块的测试人力量qi=qi* (i=1,2,…,M)
  其次引入一个Lagrange乘数λ以便解(1―4)和(1―5)的最适解问题,即:
  (1-6)
  那么,具有最适解的必要条件:
   (1-7)
  就是说最佳解qi=qi*必须满足上述方程,由此可解得最适解qi*为:
  (1-7)
  这里Ai=viairi(i=1,2,…,M)据(1―5)、(1―6),lnλ可由下式给出:
   (1-9)
  在此,设各模块排列次序为:
  (1-10)
  这个排列次序意味着对各模块分配的测试人力量是按发现差错从难到易的模块顺序来进行的。
  
  三、最优分配算法
  
  根据以上分析,显然,具有(1-8)式所表示的最佳解的充分条件是有(1-5)的曲线凸特性和(1-6)的直线性,因此,可按以下算法算出最佳分配量qi*(i=1,2,…,M):
  1.推算关于M个测试模块的参数ai、ri和权值(i=1,2,…,M),以及设定测试开始时根据预测决定的总测试人力Q;
  2.设定初始值K=0;
  3.进行(1-8)、(1-9)式的有关计算
  
  4.如果对于所有i都有qi≥0则去执行第6步;
  5.令qi<0的模块I(I=M-K,M-K+1,…,M)的qi=0使K=K+1后转去执行第3步;
  6.输出最优分配量qi*(i=1,2,…,M)
  
  参考文献:
  [1]赵晓华著:计算机可靠性与质量管理.北京,中国经济出版社,2000.8
  [2]张海藩著:软件工程.北京,清华大学出版社,1999.2
  [3]H.ohtera and S.Yamaha 《Optinal allocation and control problem for software testing-resources》,IEEE Trans.Reliability,Vol.R-39,NO.2 (June,1990)
  [4]山田茂大寺浩志著:《リァトゲヱの信赖性》,SRC,车子(1990)
  
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。


转载注明来源:https://www.xzbu.com/3/view-1502952.htm