Skip to content

Kiểm thử & Đóng góp

Cách chúng tôi đảm bảo chất lượng phần mềm thông qua các bài kiểm tra tự động và quy trình đóng góp mã nguồn (Pull Request).

Backend Testing

Sử dụng Jest cho Unit Tests và Integration Tests. Toàn bộ logic nghiệp vụ (Use Cases) đều được bao phủ để tránh lỗi hồi quy.

Frontend Testing

Sử dụng Vitest kết hợp React Testing Library để kiểm tra các component UI và luồng xử lý trạng thái (Zustand).

Guardrails

Mọi thay đổi nhạy cảm đều phải vượt qua các bài kiểm thử AI (ai.service.spec.ts) để đảm bảo không làm vỡ luồng routing.

Kiểm thử Backend (NestJS + Jest)

Các bài kiểm tra backend nằm trong thư mục `server/src/tests`. Chúng tôi ưu tiên kiểm tra các Database Strategies và AI Service.
Lệnh chạy test backend

# Chạy toàn bộ test

npm run test

# Chạy test ở mode watch (dùng khi đang dev)

npm run test:watch

# Chạy một file test cụ thể

npx jest server/src/tests/ai/ai.service.spec.ts

Kiểm thử Frontend (Vite + Vitest)

Phía frontend sử dụng Vitest để đạt tốc độ tối đa trong môi trường phát triển.
Lệnh chạy test frontend

# Chạy test frontend

cd client && npm run test

Kiểm tra An ninh (Security Audits)

Định kỳ, Data Explorer trải qua các đợt kiểm tra an ninh (Pentest) chuyên sâu để phát hiện các rủi ro về logic phân quyền, SSRF và Injection.

Logic Hardening

Mọi bản vá bảo mật đều dựa trên các kịch bản tấn công thực tế (như IDOR visibilty hay SQL bypass).

Manual Validation

Các lỗ hổng logic phức tạp được kiểm tra thủ công bởi đội ngũ phát triển trước khi tích hợp vào core.

Hướng dẫn Đóng góp (Contribution Flow)

Chúng tôi tuân thủ quy trình GitHub Flow. Mọi thay đổi đều bắt đầu từ một feature branch mới.
1

Tạo Branch

feature/your-feature-name

2

Commit & Push

Tuân thủ Conventional Commits (feat:, fix:, chore:)

3

Mở Pull Request

Mô tả rõ ràng các thay đổi và đính kèm video/ảnh minh họa

4

Review & Merge

Ít nhất 1 approval từ maintainers

Quy chuẩn mã nguồn

Để giữ cho project dễ bảo trì, chúng tôi áp dụng các quy tắc sau:
Sử dụng ESLint và Prettier để tự động hóa format code.
Mọi hàm mới đều phải có kiểu dữ liệu (TypeScript strict mode).
Sử dụng kiến trúc Ports & Adapters thay vì gọi trực tiếp thư viện trong Service.
Tránh lồng nháy (Nesting) quá sâu và ưu tiên Early Return.

Sẵn sàng khám phá dữ liệu?

Tham gia cộng đồng trên GitHub để đóng góp cho IDE cơ sở dữ liệu địa phương thông minh nhất.

Mở Ứng dụng