我已經失學幾年了,最近纔開始回去重讀一些我的課本(我想保持新鮮)。我實際上發現我的軟件工程教科書迷人並計劃閱讀整個事情 - 如果有趣的話,因爲當我在學校時,我發現它非常無聊。「集成測試」,「持續集成服務器」和「每晚構建」之間有什麼關係?
因此,有半章致力於集成測試。而且,就像學術界的大多數事情一樣,這些理論在閱讀的任何地方都具有很小的實用性。但是,它讓我思考。
我們使用CruiseControl進行持續集成測試,但看到我們是一個大型開發團隊,而且我沒有處理部署/構建/發佈,所以我從來沒有親自動手過。當我打破每晚的構建時,我會不時收到一封電子郵件。還有兩個科技導向向我解釋。
解決我的問題:我的舊教科書將集成測試稱爲相互配對和測試組件,而不是針對一個特定類的單元測試。這可以通過「自上而下」或「自下而上」的方式完成,其中自上而下意味着將整個事物作爲系統進行測試,然後遞歸地將系統分解爲更小的子系統並對其進行測試;自下而上意味着相反(從小開始,變大)。
我的問題:
如何以下threee概念之間的相互關係:
- 集成測試的這一理論解釋;和
- 所謂的「持續集成服務器」,如Hudson,Jenkins或CruiseControl;和
- 有一個「每晚構建」,其中的代碼已簽出一個單片機和自動編譯
難道只是巧合的是,前兩個在他們的詞「整合」的概念?是否像運行持續集成服務器(在晚上)一樣執行「夜間構建」,還是他們是兩個單獨的概念?
如果持續集成測試&夜間建築絕對沒有做學術的集成測試,那麼如何集成測試實際上體現在現實世界?他們的框架是否像JUnit一樣,但只專注於集成測試?
我知道這些是很多問題,但他們真的只是簡單地理解這些是什麼以及它們是如何使用的。在線搜索每個這些都會拉回相當模糊,抽象的答案。
Jayendra - 感謝對持續集成的解釋,並每晚構建!但是集成測試本身呢?你提到了一些關於「依賴數據庫或外部資源」的內容......我很感興趣,但仍然模糊了集成測試在商業世界中的表現。這種測試使用了哪些框架? – IAmYourFaja
單元測試通常用於測試單元代碼。你會嘲笑或存根出對其他類,數據庫的依賴,搜索等 集成通常涉及與這些相關 對於如測試,如果你的方法從數據庫中讀取一些數據和使用視圖 單元測試之前,你操縱它將存根/模擬出的數據庫調用返回一個存根對象和測試操作 在集成測試,你會填充虛擬數據測試數據庫 讓你的代碼與數據庫交互讀取記錄,然後斷言數據和操作關於對象 – Jayendra
對於框架..我們一直在使用JUnit for Java和Ruby on Rails的Rspec。 – Jayendra