2011-10-07 55 views
0

我想知道你認爲什麼應該包含在測試現有問題和計劃活動的方法和建議中(作爲軟件戰略的一部分)。謝謝軟件測試方法

+0

相關和有趣的閱讀:http://stackoverflow.com/questions/153234/how-deep-are-your-unit-tests/153565#153565 – stivlo

+1

你的問題很模糊。你能更精確嗎? – Raedwald

回答

0

對我來說,你需要三個級別的代碼測試。在這裏,他們是,從最低到最高級別:

  • 單元測試,用於測試的方法。每個實施的班級有一個測試班。這些測試與特定的實現(某種程度上)有關,並嘗試實現100%的覆蓋率(我在這裏談論功能覆蓋,而不是線路覆蓋,這是毫無意義的)。你可以使用一個模擬框架來讓他們測試行爲而不是你的對象狀態。

  • 系統/集成測試它們測試應用程序組件之間的所有交互。不僅限於測試一個獨特的類,他們更願意測試一個特定的外部訪問來確保它按預期工作。一個很好的例子是數據庫訪問的CRUD測試(創建,讀取,更新,刪除):儘管單元測試會使用模擬數據庫層,但相關的系統測試使用真正的測試(當然是在開發環境中)。 Http調用外部服務器也是這個測試層的一部分。

  • 驗收測試(理想情況下使用的測試框架像FITnesseJBehave或針對Java,但可使用簡單的JUnit測試完成) - 這些測試是用於接受高級別標準。理想情況下,與最終用戶或業務分析師一起(或與他們合作)編寫,它們將作爲系統的文檔,以及開發人員正在處理的每個故事/任務的界限。在重構相關功能期間,它們應該而不是更改,並且在修改實現時仍然通過。事實上,他們是你的利益,你的證明成功的重構。理想情況下,它們可由非編碼人員讀取(例如,使用wiki頁面爲FITnesse),以充當您的項目功能的動態文檔。

上述所有測試應該是持續集成構建的一部分,這是觸發每次有人添加或修改代碼庫。如果任何測試失敗,那麼整個構建失敗,沒有人應該檢查其他任何東西,直到它被修復。

除此之外,您還應該計劃:

  • 迴歸測試這通常是一個持續集成服務器來實現的。每個構建都將重新運行所有測試,確保您沒有破壞以前的工作特性。

  • 對帳測試測試一般運行時測試無法捕獲的所有內容。例如,如果某個應用程序對數據庫羣進行了一些處理,則可能需要在完全填充的數據庫的兩個連續版本上運行協調程序,以確保您沒有破壞實際生產中的任何數據數據。這些測試通常需要很長時間才能完成(重新處理整個數據庫),因此通常無法將其添加到自動構建中。通常在獲得發行版的綠燈之前完成。肯特·貝克