常常,我們會聽到老闆或者老總等領導說,你們測試團隊的貢獻率或是價值在哪?軟件
系統的穩定性如何?下面我將根據這兩個問題,作出一些解答。
1.測試投資回報率
企業爲了獲得利潤,需花費大量的資金進行測試。在質量方面的投資會產生利潤,例如
提高產品質量會提高公司的聲譽,使產品交付之後的維護成本減少,避免用戶的抱怨。測試是一種帶有風險性的管理活動,減少企業在未來因爲產品質量低劣而花費不必要的成本。
缺陷探測率:
DDP=Bugtester/(Bugtester+Bugcustomer)
表1客戶發現bug數統計
月份 | 客戶發現的bug數 |
6 | 7 |
7 | 0 |
8 | 2 |
9 | 3 |
10 | 0 |
11 | 3 |
12 | 1 |
合計 | 16 |
數據是從2013年6月份開始統計
表2測試人員發現bug數統計
由誰創建 | 總計 | 未解決 | 設計如此 | 重複Bug | 外部原因 | 已解決 | 無法重現 | 延期處理 | 不予解決 | 轉爲需求 | 有效率 |
周MM | 700 | 7 | 38 | 14 | 35 | 419 | 31 | 2 | 27 | 127 | 78.29% |
餘GG | 1325 | 11 | 47 | 26 | 55 | 788 | 33 | 16 | 39 | 310 | 84.08% |
合計 | 2025 | 18 | 85 | 40 | 90 | 1207 | 64 | 18 | 66 | 437 | 82.07% |
數據統計時間:2013年1月1日到2013年12月31日,其中有效率的計算公式=(已解決+延期處理+轉爲需求)/總計*100%
屬於質量預防方面的一致性成本只考慮軟件測試的投資,把發佈之前和之後發現及修改
的錯誤堪稱非一致性成本,根據表1和表2,發現的錯誤爲2041個,故障成本已知,測試過程的估算如下:
各階段花費在發現及修改錯誤的成本假設如下:
①在開發過程單元測試階段,軟件開發人員發現及修改一個錯誤需要50元;
②建立獨立的測試進行集成和系統測試,測試人員發現錯誤,開發人員修改後,測試人員再確認,一個錯誤需要300元;
③在產品發佈後,由客戶發現,報告技術支持人員、相關開發人員修改,測試組再進行迴歸測試,一個錯誤需要2000元。
第1種情況,開發單位未建立獨立測試隊伍,有開發人員進行測試,發現680個錯誤,而產品發佈後客戶發現錯誤1361,只存在故障成本構成的總成本爲50*680+2000*1361=2756000元,缺陷探測率爲33.32%。
第2種情況,開發單位建立了獨立測試隊伍,進行手工測試。投資預算人員費用爲100000元,測試環境使用費爲8000元,測試投資(一致性成本)爲108000元,除了開發過程中開發人員發現並修改680個(假設開發人員只能發現1/3的問題)錯誤外,測試過程中測試人員發現錯誤1345個,而產品發佈後客戶發現16個錯誤。總質量成本下降到50*680+300*1345+16*2000+108000=577500元(如表3所示),手工測試總質量成本節約了2756000-577500=2178500元,即爲利潤。投資回報率(ROI)爲2017.13%,缺陷探測率爲99.22%。
ROI = (原無獨立測試質量成本i-獨立測試質量成本j)/測試投資*100%
= (2756000-577500)/108000*100%
= 2017.13%
DDP=Bugtester/(Bugtester+Bugcustomer)*100%=(680+1345)/2041*100%=99.22%
表3 測試投資回報分析
質量成本項 | 測試成本項 | 開發測試 | 手工測試 | |
一致成本 | 測試投資 | 測試人工費 | 100000 | |
環境使用費 | 8000 | |||
測試工具費 | ||||
測試總投資 | 108000 | |||
非一致性成本 | 開發測試 | 發現錯誤數 | 680 | 680 |
每個錯誤成本 | 50 | 50 | ||
內部(開發)故障成本 | 34000 | 34000 | ||
獨立測試 | 發現錯誤數 | 1345 | ||
每個錯誤成本 | 300 | |||
內部(測試)故障成本 | 403500 | |||
客戶支持 | 發現錯誤數 | 1361 | 16 | |
每個錯誤成本 | 2000 | 2000 | ||
外部故障成本 | 2722000 | 32000 | ||
質量成本 | 一致性成本 | 108000 | ||
非一致性成本 | 2756000 | 469500 | ||
總質量成本 | 2756000 | 577500 | ||
ROI | 投資回報率 | N/A | 2017.13% | |
DDP | 缺陷探測率 | 34.30% | 99.22% |
2.系統可靠性分析
平均每千行代碼bug數
後臺代碼總共342480行(由於前臺代碼較難統計,據開發人員估計是後臺代碼的3倍),系統總代碼數是1369920,屬於一個大規模系統,平均每千行代碼約爲2個bug。
平均無故障時間MTTF
若設T是軟件總的運行時間,M是軟件在這段時間內的故障次數。
內部平均無故障時間MTTF=T/M=365*24/2041=4.29小時;
外部平均無故障時間MTTF= T/M =(365-151)*24/16=321小時=13.375天。根據考察資料得知,航天科技一些精密系統平均無故障時間720小時對應90分的可信度,參考這個,相當於我們系統的可信度大約爲40分。
下面用Shooman模型對平均無故障時間MTTF進行分析:
對一個長度爲342480行代碼的系統進行測試,根據記錄下來的數據如下:
①測試開始,發現錯誤個數爲0(假設爲0,2012年測試出bug不計入統計);
②經過了151天的測試,累計改正1137個錯誤,此時,MTTF=3.19小時;
③又經過214天的測試,累計改正2041個錯誤,此時,MTTF=4.29小時;
由Shooman公式: MTTF=1/K(ET/LT-ET(t)/LT)
其中,K是一個經驗常數,美國一些統計數字表明,K的典型值是200;ET 是測試之前程序中原有的故障總數;LT 是程序長度(機器指令條數或簡單彙編語句條數);t是測試(包括排錯)的時間;EC(t) 是在0~t期間內檢出並排除的故障總數。
公式的基本假定是:
單位(程序)長度中的故障數ET∕LT近似爲常數,它不因測試與排錯而改變。 統計數字表明,通常ET∕LT 值的變化範圍在0.5×10-2~2×10-2之間;故障檢出率正比於程序中殘留故障數,而MTTF與程序中殘留故障數成正比;故障不可能完全檢出,但一經檢出立即得到改正。
由已知條件②、③可解出K=31.22 ,ET = 4598 。系統中仍可能殘留4598-2041=2557個問題。
評估系統穩定性還有哪些方法、模型、參數呢?希望經驗人士多給意見。