檢視原始碼 關於測試的一些想法
目標
不可能透過測試來證明程式的正確性。相反地,已經被正式證明一般來說不可能透過測試來證明程式。對於那些希望證明程式正確性的人來說,理論上的程式證明或簡單地檢查程式碼可能是可行的選項。測試伺服器基於測試,因此不能用於驗證。它的預期用途是(具有成本效益地)找出錯誤。一個成功的測試套件是能夠揭露錯誤的套件。如果一個測試套件的結果為 OK,那麼我們知道的資訊並不多,幾乎和之前一樣。
測試什麼
測試套件有很多種類。有些專注於呼叫特定介面中的每個函數或指令(以文件中描述的方式)。其他的則做相同的事情,但使用各種非法的參數,並驗證伺服器是否保持運行,並以合理的錯誤代碼拒絕請求。有些測試套件模擬應用程式(通常由應用程式的幾個模組組成),有些則嘗試執行一般性的棘手請求,甚至有些測試套件在目標上使用特殊的載入模組來測試內部函數。
另一個有趣的測試套件類別是檢查已修復的錯誤是否會再次發生。當引入錯誤修復時,會編寫一個檢查特定錯誤的測試案例,並將其提交到受影響的測試套件中。
目標是找出錯誤。編寫任何現在或將來最有可能找出錯誤的測試。多關注關鍵部分。關鍵子系統中的錯誤比其他錯誤代價更高。
目標是進行功能測試,而不是實作細節測試。實作細節經常變更,而測試套件應具有長久的生命週期。實作細節在不同的平台和版本上通常有所不同。如果必須測試實作細節,請嘗試將它們分離到單獨的測試案例中。這些測試案例稍後可以重寫或跳過。
此外,目標是將每個項目測試一次,不多也不少。如果每個測試案例都因為介面中的一個函數變更而失敗,這並不是有效的方法。