Kiểm thử tích hợp

Nhập môn Kiểm thử trong Java

Maria Milusheva

Senior Software Engineer

Định nghĩa kiểm thử tích hợp

  • Tích hợp - quá trình kết hợp các thành phần hoặc hệ con thành một hệ thống thống nhất hoạt động nhịp nhàng.
  • Kiểm thử tích hợp - kiểm thử tương tác giữa nhiều thành phần hoặc mô-đun để đảm bảo chúng hoạt động đúng cùng nhau; thường có phụ thuộc bên ngoài.

Hình ảnh nội thất Ikea ngay trước khi lắp ráp

Nhập môn Kiểm thử trong Java

Phụ thuộc

  • Phụ thuộc phần mềm - mối quan hệ khi một thành phần cần thành phần khác để hoạt động đúng cách

Sơ đồ quan hệ phụ thuộc giữa các lớp

1 Chart made using Mermaid: https://mermaid.live
Nhập môn Kiểm thử trong Java

So sánh kiểm thử tích hợp và unit test

Unit test:

  • Kiểm thử từng thành phần độc lập
  • Lỗi giúp khoanh vùng phần mã cụ thể
  • Viết và chạy nhanh hơn
  • Dùng nhiều công cụ để tránh kiểm thử phụ thuộc
  • Khẳng định kết quả chính xác

Integration test:

  • Kiểm thử nhiều thành phần và tương tác của chúng
  • Lỗi cần phân tích sâu để lần theo
  • Thiết lập và chạy nặng, tốn thời gian hơn
  • Kiểm thử tương tác thật với phụ thuộc thật
  • Có thể chỉ khẳng định hành vi chung, không phải giá trị chính xác
Nhập môn Kiểm thử trong Java

Ví dụ: Ngoại hối

Giả sử chúng ta xây dựng một ứng dụng đổi tiền tệ:

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 } }
Nhập môn Kiểm thử trong Java

Kiểm thử tích hợp cho ngoại hối

Kiểm thử tích hợp xác minh cả phương thức convertEuroToEuropeanCentralBankServer:

@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 }
Nhập môn Kiểm thử trong Java

Ayo berlatih!

Nhập môn Kiểm thử trong Java

Preparing Video For Download...