在時間快不夠用、事情爆炸的情況下要一直提醒自己冷靜有耐心的面對
剩不到一週,繼續努力!
整合測試是軟體測試其中一個階段,重點在確保不同模組的功能可以配合著一起運作。例如:
資料庫的整合測試會去測試系統與資料庫之間的互動,確保 SQL 查詢、資料模型和資料結構、commit transactions 等能正常運作。
例如,可以使用 @DataJpaTest
註解來表示資料庫的整合測試,這個註解會自動配置一個 embedded database(如 H2資料庫),並進行相對應的自動配置:
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
@DataJpaTest
public class MyRepositoryIntegrationTest {
// 測試邏輯
}
透過這個設定可以較為輕鬆的測試 Repository 介面和持久化邏輯。
Spring Boot提供了 @SpringBootTest
和 TestRestTemplate
。@SpringBootTest
是替整個應用程式上下文建立一個完整的運行環境,而 TestRestTemplate
則用在執行 HTTP 請求和驗證 HTTP 回應。
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.beans.factory.annotation.Autowired;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyApiIntegrationTest {
@Autowired
private TestRestTemplate restTemplate;
// 測試邏輯
}
webEnvironment
這個屬性是用來確保系統在隨機的埠上啟動,以避免在測試過程中與其他服務發生衝突。隨著容器化技術的興起,軟體開發和部署方式經歷了顯著轉變。容器化技術讓應用程式得以輕鬆打包到容器中,並在各種環境中運行,從而解決了環境配置的問題,同時提供了高一致性和可移植性。
在傳統的整合測試中,經常需要配置和管理各種依賴,例如資料庫、訊息佇列和外部服務。這些配置通常很複雜,也可能和生產環境共享導致測試受到影響,無法確保在不同環境中的一致性。隨著 CI/CD 的普及,自動化測試和環境管理變得格外重要。必須確保每次都能在一致的環境中測試,並且順暢的整合到 CI/CD 流程中。
在這種情況下,TestContainers 提供了一種容器化解決方案。它使用 Docker 容器在測試過程中啟動各種資源(例如資料庫和 Kafka...等),並確保在測試結束時這些資源有正確的背關閉。
單元測試 | 整合測試 | End-to-End 測試 | |
---|---|---|---|
目的 & 範疇 | 測試單一的功能 | 測試多個模組間的互動 | 測試整個系統流程 |
測試速度 | 快 | 中 | 慢 |
複雜度 | 低 | 中 | 高 |
涉及的元件 | 通常一個 | 多個模組或層級 | 所有元件(前端、後端、資料庫) |
在一個完整的測試中,此三種類型通常會一起搭配使用,來最大程度的確保應用程式穩定性。
以上就是今天的內容啦~ 明天再來介紹 TDD 測試驅動開發!