2011-02-16 45 views
2

假設n個測試人員正在測試給定時間段內的相同應用程序。每個測試人員發現了一組給定的錯誤(某些錯誤由多個測試人員檢測到)。根據顯示的錯誤數量預測錯誤總數

例如:

測試儀1發現的錯誤{1,2,3,4,5} 儀2發現的錯誤{3,5,6,7} 測試儀3發現的錯誤{1,3, 5,8,9,10}

假設所有錯誤都具有相同的概率被檢測到,我可以估計有多少未檢測到的錯誤是我的應用程序?

編輯

更大的挑戰:如何計算的x未被發現的錯誤的概率是多少?

+0

有趣的問題。我不認爲你已經指定了足夠的參數來提供解決方案。考慮運行次數和測試覆蓋率。 – 2011-02-16 19:43:21

+0

@保羅·納森:這就是我的全部意見。三位測試人員每次測試同一個應用程序約40小時,而沒有任何方法或指導。 – 2011-02-16 19:47:09

+0

*「假設所有的bug都具有相同的可能性」* - 這僅僅是一個理論問題,還是你打算依賴你提出的答案?這似乎是一個非常危險的假設,如果你打算對結果度量值加大權重。 – testerab 2011-02-16 21:01:12

回答

3

這裏是一個博客帖子我在這個問題上寫道:How many errors are left to find?

當然沒有模型可以準確地告訴你,但是這是不是在風中的手指更好。

0

假設所有的bug都有相同的概率被檢測到,我可以估計我的應用程序中有多少未檢測到的錯誤嗎?

你的假設是不正確的,但回答你的問題。

例如:

測試儀1發現的錯誤{1,2,3,4,5}儀2發現的錯誤{3,5,6,7}測試儀3發現的錯誤{1,3, 5,8,9,10}

你有10個已知的錯誤。

測試人員1發現了50%的錯誤,測試人員2發現了40%的錯誤,測試人員3發現了60%的錯誤。

乘以3號在一起(0.50 X 0.40 X 0.60),收益率0.12

您可以估算出你發現的bug的12%,或者說有85條多種蟲子找。

那麼,爲什麼這麼低呢?

我們正在計算剩餘錯誤的可能數量。

再舉一個例子。假設你的3個測試人員發現了相同的6個錯誤。他們發現所有的錯誤的概率很高。

而這就是乘法所做的。乘以1 x 1 x 1得出1.

讓我們舉一個更糟糕的例子。假設你的3個測試人員發現了6個獨特的錯誤。我們必須假設有更多的錯誤,因爲沒有人發現相同的錯誤。

而這就是乘法所做的。乘以.33 x .33 x .33會產生0.04或4%的錯誤。

我知道這似乎是一個很低的數字。但是當3人發現6個獨特的錯誤時,4%是保守估計。

0

任命一個項目破壞者,詳見http://c2.com/cgi/wiki?ProjectSaboteur。基本思想是你故意注入N個隨機錯誤,然後經歷一個測試周期。您的測試將檢測到這些N的一部分,並且通過將已知錯誤的數量除以該部分,您可以估計錯誤的總數。當然,這個方法有很多問題。