2010-03-04 70 views

回答

1

有兩種類型的測試,首先是技術測試,以確保代碼體現算法功能,特別是在設計規定的邊界內,特別是在邊緣情況下。

第二種形式是功能測試,以查看算法創建的輸出是否符合設計意圖。爲此,您不一定需要了解執行情況,並且有一個合理的理由可以說,如果您不這樣做,它會更客觀。

當然,如果算法是微不足道的,並且所有可能的結果都可以知道,那麼測試它只是一個生成測試數據的問題,這些測試數據會執行邊界條件。

但是,根據算法,這可能是不可能的。如果該算法正在分析一個難以形象化的空間(比如27個維度和1M個數據點)中的數據,那麼只有微不足道的情況才能測試功能的準確性。如果分析中沒有單一的「正確」答案,那麼情況就會變得更糟,而是一系列可能的結果。在這些情況下,需要有經驗的分析師來看結果,看看它們是否有意義。有時候,這是實現代碼的同一個人,有時候不是。在這些情況下,實施幾乎肯定會在試圖理解結果時受到質疑,而結果本身就很複雜。

所以,如果可能的話,簡短的回答是肯定的,但它並不總是必須的算法是完全可以解釋的。

1

有兩種不同類型的單元測試:

  1. 黑箱
  2. 的Glassbox

兩者都是非常重要的。 Blackbox測試應該完全基於函數的文檔(其陳述的輸入,其陳述的前提條件,陳述的輸出,陳述的後置條件,以及在出現這種錯誤時陳述的錯誤案例和行爲/結果)編寫。 Glassbox測試試圖確保實現的所有分支都正確工作,並且需要查看實現。這些測試通常爲每個執行分支提供一些示例輸入。

至於分析...通常當人們談論「算法分析」時,他們不是在談論某個特定的實現,而是對該算法的理論分析,通常使用它的僞代碼,通常是爲了這個目的證明算法的正確性,以及在最壞情況或預期情況下運行時間的上限。這種分析通常需要僞代碼(或者至少是其他形式的算法行爲描述)來推理和證明它的性質。