# Kiểm thử Di cư dữ liệu (Data Migration Testing)

## Mục đích (Purpose)
Xác minh rằng dữ liệu được chuyển đổi và di chuyển từ hệ thống cũ (Source/Legacy) sang hệ thống mới (Target) một cách đầy đủ, chính xác và an toàn. Đảm bảo tính liên tục của nghiệp vụ và không làm hỏng tính toàn vẹn của dữ liệu trong cấu trúc schema mới.

## Kiến thức cần có (Required Knowledge)
- Hiểu về cấu trúc Database của cả hệ thống nguồn và hệ thống đích.
- Nắm vững các quy tắc chuyển đổi dữ liệu (Mapping & Transformation Rules).
- Sử dụng thành thạo các công cụ ETL (Extract, Transform, Load) hoặc các Scripts di cư.
- Kiến thức về làm sạch dữ liệu (Data Cleansing) và xử lý dữ liệu lỗi.
- Hiểu về quy trình Rollback và khôi phục dữ liệu (Backup/Restore).

## Quy trình thực hiện (Process)
1. **Phân tích dữ liệu nguồn và đích:** So sánh schema, kiểu dữ liệu, ràng buộc giữa hai hệ thống để lập bảng mapping.
2. **Kiểm thử tiền di cư (Pre-migration Testing):** Kiểm tra chất lượng dữ liệu nguồn, xác định các bản ghi lỗi, thiếu thông tin hoặc không hợp lệ để xử lý trước.
3. **Kiểm thử Di cư thử nghiệm (Pilot/Trial Migration):** Thực hiện di cư một phần dữ liệu (subset) sang môi trường Staging để kiểm tra các scripts và quy tắc chuyển đổi.
4. **Kiểm thử tính toàn vẹn (Integrity Testing):** So sánh số lượng bản ghi (Record count) và tổng các giá trị số (Hash totals/Sum) giữa nguồn và đích sau khi di cư.
5. **Kiểm thử chức năng sau di cư (Post-migration Testing):** Sử dụng hệ thống mới với dữ liệu vừa di cư để thực hiện các nghiệp vụ thông thường, đảm bảo dữ liệu cũ hoạt động đúng trong môi trường mới.
6. **Kiểm thử Hiệu năng & Downtime:** Đo lường thời gian cần thiết để thực hiện di cư và đảm bảo nó nằm trong khung giờ cho phép (Downtime window).
7. **Kiểm thử Rollback:** Thực hiện giả lập lỗi trong quá trình di cư và kiểm tra khả năng phục hồi lại trạng thái ổn định ban đầu.

## Checklist
### Tính đầy đủ & Chính xác (Completeness & Accuracy)
- [ ] Tổng số bản ghi ở hệ thống đích khớp với số bản ghi ở hệ thống nguồn (trừ đi các bản ghi đã lọc bỏ có chủ đích).
- [ ] Không có bản ghi nào bị trùng lặp sau khi di cư.
- [ ] Dữ liệu tại các trường quan trọng (Tên, Số tiền, Ngày tháng, ID) khớp chính xác 100%.
- [ ] Các mối quan hệ (Foreign Keys) giữa các bảng vẫn được duy trì đúng.

### Biến đổi dữ liệu (Transformation)
- [ ] Các quy tắc chuyển đổi (ví dụ: gộp trường, tách trường, đổi đơn vị) được thực hiện đúng.
- [ ] Dữ liệu mặc định được điền đúng cho các trường mới không có ở hệ thống cũ.
- [ ] Bảng mã ký tự (Encoding) được chuyển đổi đúng, không bị lỗi font tiếng Việt.

### Hiệu năng & Rollback
- [ ] Thời gian thực hiện di cư thực tế không vượt quá thời gian dự kiến.
- [ ] Kế hoạch Rollback đã được kiểm thử và hoạt động thành công.
- [ ] Các Log di cư được ghi lại đầy đủ để phục vụ việc đối soát và xử lý lỗi.

## Output mong đợi (Expected Output)
- Báo cáo đối soát dữ liệu (Data Reconciliation Report) trước và sau di cư.
- Danh sách các bản ghi bị lỗi hoặc không thể di cư (nếu có).
- Xác nhận từ các bên liên quan về tính sẵn sàng và chính xác của dữ liệu trên hệ thống mới.
