[摘要] 針對軟件測試人力資源分配問題,研究最優的人力資源分配方法,并給出利用計算機實現的相應的具體算法。
[關鍵詞] 軟件測試 人力資源分配 最優算法 軟件的可靠性
一、問題的提出
在當今信息網絡的社會里,由于信息與經營的一體化使各行各業對計算機的依存性越來越大,這就造成了對計算機軟件的需求量逐年增加。軟件開發周期正向短工期化的方向發展,如何排除軟件在開發過程中所產生的故障因素,這就必然考慮測試人力的最優分配問題。
二、分配原理
測試工程是軟件開發的結尾工程,它分三個連續階段:單元測試(單體、模塊)、結合測試、綜合測試(系統運用)。單體測試是對軟件設計階段按功能分割的各模塊分別獨立地進行測試;結合測試是將各模塊結合起來后測試其是否能正確地進行數據的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格式閱讀原文。