Thực hiện kiểm thử tích hợp

Một phần của tài liệu PHÁT TRIỂN PHẦN mềm THEO HƯỚNG CHIA NHỎ PHẦN DỊCH vụ (MICROSERVICES) và PHẦN GIAO DIỆN (MICRO FRONTENDS) (Trang 82 - 83)

Sau khi thực hiện kiểm thử ở mức đơn vị, các module cần phải được kiểm thử tích hợp. Quá trình này kiểm tra sự giao tiếp và tương tác giữa các thành phần nhằm phát hiện ra các lỗi nếu có. Bên cạnh việc kiểm tra tính đúng đắn, logic của các hành vi bên trong hệ thống, công đoạn này cũng xem xét việc tương tác của chương trình với một hoặc một số dịch vụ bên ngoài.

Ví dụ bên dưới minh họa một kịch bản kiểm thử tích hợp giữa hai thành phần trong một microservice sử dụng SpringBootTest56 và SpringRunner57 để kiểm tra trường hợp tạo mới một người dùng (user). Kịch bản này được minh họa trong hình 3.37 với các bước sau:

Bước 1: Thành phần SpringRunner chạy và nạp môi trường test để gọi lớp

UserControllerIntegrationTest (lớp này định nghĩa các test case).

Bước 2: Thực thi test. Phương thức test được định nghĩa bên trong lớp

UserControllerIntegrationTest sẽ thực hiện triệu gọi lớp UserController để chạy hai phương thức

- Tạo mới một user (có user_code = ‘1001’)

- Tìm kiếm một user với user_code = ‘1001’ (vừa tạo ở trên)

Bước 3: Sau bước 2, thực hiện kiểm tra kết quả. Giả sử user (1001) được tìm thấy tồn tại trong cơ sở dữ liệu thì hành động tạo mới một user đã được thực hiện thành công.

Trong quá trình kiểm thử trên, ba thành phần gồm UserController, UserService

UserRepository tương tác với nhau để thực hiện chức năng thêm mới một user. Việc liên kết giữa chúng được thực hiện thông qua cơ chế DI.

56 https://docs.spring.io/spring-

boot/docs/current/api/org/springframework/boot/test/context/SpringBootTest.html 57 https://docs.spring.io/spring-framework/docs/current/javadoc-

72

Hình 3.37. Minh họa kiểm thử tích hợp việc tạo mới một user

Để minh họa một cách đơn giản, việc kiểm thử tích hợp ở trên được thực hiện chỉ có sự tương tác giữa lớp controller, lớp service và lớp repository. Trên thực tế, các microservices sẽ giao tiếp với nhau và bản thân một microservice còn có thể tương tác với các dịch vụ của các bên thứ ba (ví dụ như Google API hay Facebook API), và do đó việc kiểm thử tích hợp phải đảm bảo được các hoạt động này diễn ra đúng như yêu cầu bài toán. Đoạn mã nguồn ở hình 3.38 minh họa cho trường hợp kiểm thử tích hợp vừa nêu.

Hình 3.38. Ví dụ kiểm thử tích hợp trong lớp UserControllerIntegrationTest

Một phần của tài liệu PHÁT TRIỂN PHẦN mềm THEO HƯỚNG CHIA NHỎ PHẦN DỊCH vụ (MICROSERVICES) và PHẦN GIAO DIỆN (MICRO FRONTENDS) (Trang 82 - 83)