整合測試

Java 測試入門

Maria Milusheva

Senior Software Engineer

什麼是整合測試

  • Integration(整合)-將個別軟體元件或子系統組合成能協同運作的單一系統。
  • Integration test(整合測試)-驗證應用程式中多個元件或模組之間的互動是否正確,常涉及與外部相依項的測試。

Ikea 家具即將組裝的照片

Java 測試入門

相依性(Dependencies)

  • 軟體相依性-當一個軟體元件需要另一個元件才能正常運作的關係

1 Chart made using Mermaid: https://mermaid.live
Java 測試入門

整合測試 vs. 單元測試

單元測試:

  • 在隔離環境測試個別元件
  • 失敗能精準定位到特定程式碼部分
  • 撰寫與執行較快
  • 使用各種工具以避免測到相依項
  • 斷言精確結果與輸出

整合測試:

  • 測多個元件及其互動
  • 失敗需更深入分析才能追查
  • 設定與執行較重且較久
  • 測試與真實相依項的真實互動
  • 可能對行為做一般性斷言,而非精確結果
Java 測試入門

範例:外匯換算

假設我們正在打造一個外匯換匯 app:

public class ExchangeApp {
    private EuropeanCentralBankServer bank; // Enables ExchangeApp to use the bank server

    public ExchangeApp(EuropeanCentralBankServer bank) {
        this.bank = bank; // Save the object passed through the constructor
    }


public double convertEuroTo(String currency, double amount) { double rate = this.bank.getRateEuroTo(currency); return amount * rate; // Use the return values of the bank method in calculations } }
Java 測試入門

外匯的整合測試

整合測試同時驗證 convertEuroTo 方法與 EuropeanCentralBankServer

@Test
void convert_convertsWithoutError() {
    EuropeanCentralBankServer bank = new EuropeanCentralBankServer();
    ExchangeApp exchangeApp = new ExchangeApp(bank); // Pass bank object to constructor

double amount = 1000.0; String currency = "USD"; // convertEuroTo calls getRateEuroTo from the bank object double result = exchangeApp.convertEuroTo(currency, amount); assertTrue(result > 0); // Can't predict exact value, can only sanity test }
Java 測試入門

一起來練習吧!

Java 測試入門

Preparing Video For Download...