2009-02-05 43 views
10

問題Am I unit testing or integration testing?我已經回答了,有點挑釁性:Do your test and let other people spend time with taxonomy測試:單元與集成與其他,對分離有什麼需求?

對我來說,各級測試之間的區別在技術上毫無意義:通常使用相同的工具,需要相同的技能,達到相同的目標:刪除軟件故障。同時,我可以理解,大多數開發人員使用的傳統工作流程需要這種區別。傳統的工作流程讓我感到不自在。

我想我的答案要麼強烈downvoted或強烈upvoted。事實上,兩個都發生了,有五個贊成票和四個贊成票。即使是第一條評論也是猶豫不決(謝謝你的讚揚!)。

因此,我的問題旨在更好地理解什麼會對我產生爭議,並收集關於各級測試是否相關的各種觀點。

我認爲是錯誤的嗎?是否存在其他不重視這種分離的工作流程(可能是敏捷方法)?你在這個問題上的經驗是什麼?

精度:我完全瞭解定義(對於那些不是的人,請參閱this question)。我想我不需要關於軟件測試的課程。但是如果你的回答需要,隨時提供一些背景。

回答

13

性能通常是我將「單元」測試與「功能」測試分開的原因。

單元測試組應該儘可能快地執行,並且能夠在每次編譯後運行。

功能測試組可能需要幾分鐘才能執行並在簽入之前執行,可能是每天或每隔一天,具體取決於實施的功能。

如果所有的測試都組合在一起,我將永遠不會運行任何測試,直到簽入之前這會降低我的整體開發速度。從我的世界

+0

如果我理解正確,您可以根據它們的速度和運行次數來構建測試組。我認爲這是一個很好的觀點,謝謝。 – mouviciel 2009-02-05 21:26:03

+0

+1測試運行時間越長,開發人員運行測試套件的可能性就越小。 – 2012-12-21 23:17:53

1

定義:

單元測試 - 測試代碼的明顯的路徑,它提供了預期的效果。功能測試 - 徹底檢查軟件的定義,並通過所有允許的範圍測試每個定義的路徑。寫回歸測試的好時機。

系統測試 - 測試系統環境中相對於其本身的軟件。產生你所能做的所有過程,探索每個內部組合,在一夜之間運行一百萬次,看看哪些會掉下來。

集成測試 - 在一個典型的系統設置上運行它,看看其他軟件是否與測試產生衝突。

8

我不得不同意@Alex B,因爲在編寫測試時需要區分單元測試和集成測試,以使您的單元測試儘可能快地運行,並且沒有比測試要求更多的依賴關係被測試的代碼。你希望單元測試非常頻繁地運行,而更多的「整合」 - 就像他們運行得越少一樣。爲了使這更容易,單元測試通常(或應該)涉及嘲弄或僞造外部依賴關係。集成測試故意將這些依賴關係留在其中,因爲這是集成測試的要點。你需要嘲笑/僞造每一個外部依賴嗎?如果嘲笑/僞造的成本很高並且返回的值很低,那麼使用依賴關係並不會顯着增加測試的時間或複雜性。儘管如此,我認爲最好是務實而不是教條式的,但是如果你的集成測試使得它太頻繁地運行你的測試,那麼應該認識到這些差異並且避免混用。