Đảm bảo Chất lượng & Chiến lược Kiểm thử
Để duy trì độ tin cậy cao của nền tảng VENI-AI, chúng tôi áp dụng chiến lược kiểm thử đa tầng. Mọi satellite phải tuân thủ các tiêu chuẩn này để đảm bảo việc tích hợp liền mạch bên trong Shell.
🧪 Các Tầng Kiểm thử
1. Unit Tests (Kiểm thử Đơn vị)
- Phạm vi: Các hàm, service và tiện ích riêng lẻ.
- Backend: Vitest + Tiện ích mock của Ignis.
- Frontend: Vitest + React Testing Library.
- Mục tiêu: Độ bao phủ (coverage) > 80% cho logic nghiệp vụ.
2. Integration Tests (Kiểm thử Tích hợp)
- Phạm vi: Luồng từ Controller đến Service và từ Service đến Database.
- Backend: Supertest + PostgreSQL (Sử dụng Test Containers hoặc DB kiểm thử local).
- Frontend: Kiểm thử tích hợp component với MSW (Mock Service Worker).
3. End-to-End (E2E) Tests (Kiểm thử Đầu-cuối)
- Phạm vi: Các hành trình người dùng quan trọng trên cả Shell và Satellites.
- Công cụ: Playwright.
- Các kịch bản bắt buộc:
- Đăng nhập qua Keycloak -> Chuyển hướng về Shell.
- Chuyển đổi ứng dụng qua Launchpad.
- Tải lên/Tải về tệp trong Drive.
- Chu trình yêu cầu nghỉ phép trong HRM.
🏗️ Tiêu chuẩn Kỹ thuật
Phát triển Dựa trên Hợp đồng (Contract-First)
- Mọi giao tiếp liên dịch vụ (gRPC) phải được kiểm thử dựa trên định nghĩa Protobuf.
- Thay đổi trong thư mục
protos/yêu cầu chạy lại toàn bộ bộ kiểm thử hồi quy (regression suite) cho các satellite bị ảnh hưởng.
Dependency Injection (DI)
- Sử dụng decorator
@injecttrong Ignis v2 để tách biệt các service. - Luôn cung cấp các implementation mock cho các phụ thuộc bên ngoài (ví dụ:
EmailService,S3Client) trong quá trình unit test.
🚀 Tự động hóa Kiểm chứng (CI)
Hệ thống GitHub Actions của chúng tôi chạy các bước kiểm tra sau cho mỗi pull request:
- Linting:
npm run lint(ESLint + Prettier). - Type Checking:
tsc --noEmit. - Tests:
npm test. - Build:
npm run build(Đảm bảo tính toàn vẹn của bản build production).
Chặn Merge
Pull request không thể được merge nếu bất kỳ bước kiểm tra tự động nào thất bại hoặc nếu độ bao phủ (coverage) giảm đáng kể.