# Kiểm thử Ánh xạ dữ liệu (Data Mapping)

## Mục đích (Purpose)
Đảm bảo dữ liệu được luân chuyển chính xác và nhất quán giữa các lớp của hệ thống (Giao diện người dùng, API, Cơ sở dữ liệu) hoặc giữa các hệ thống khác nhau. Kiểm thử này tập trung vào việc xác minh dữ liệu không bị thay đổi sai lệch, mất mát hoặc bị cắt xén trong quá trình truyền tải và chuyển đổi.

## Kiến thức cần có (Required Knowledge)
- Hiểu về Ma trận ánh xạ dữ liệu (Data Mapping Matrix/Source-to-Target Mapping).
- Kiến thức về các kiểu dữ liệu tương ứng giữa các ngôn ngữ lập trình và Database (ví dụ: `String` trong Java vs `VARCHAR` trong SQL).
- Hiểu về cấu trúc JSON/XML được sử dụng trong API.
- Nắm vững các quy tắc biến đổi dữ liệu (Data Transformation Rules).

## Quy trình thực hiện (Process)
1. **Xác định các cặp Ánh xạ (Source-Target):** Liệt kê trường nguồn (ví dụ: Input trên UI) và trường đích tương ứng (ví dụ: Column trong DB).
2. **Kiểm thử Ánh xạ trực tiếp (Field-to-Field):** Nhập dữ liệu vào trường nguồn và kiểm tra xem nó có xuất hiện đúng tại trường đích mà không có sự thay đổi nào hay không.
3. **Kiểm thử Chuyển đổi kiểu dữ liệu (Type Conversion):** Xác minh các quy tắc ép kiểu hoạt động đúng (ví dụ: Ngày tháng nhập định dạng DD/MM/YYYY được lưu vào DB dưới dạng YYYY-MM-DD).
4. **Kiểm thử Biến đổi logic (Transformation Logic):** Kiểm tra các trường hợp dữ liệu được tính toán hoặc thay đổi trước khi lưu (ví dụ: Full Name = First Name + Last Name).
5. **Kiểm thử Xử lý trường thừa/thiếu:** Xác minh hệ thống phản ứng thế nào khi API gửi thiếu các trường không bắt buộc hoặc gửi thừa các trường lạ.
6. **Kiểm thử Giới hạn độ dài (Truncation):** Kiểm tra xem dữ liệu có bị cắt bớt nếu độ dài ở nguồn lớn hơn độ dài cho phép ở đích.

## Checklist
### Tính chính xác của Ánh xạ
- [ ] Mọi trường dữ liệu trên UI đều có trường tương ứng trong API và Database.
- [ ] Tên trường (Field names) tuân thủ quy tắc đặt tên và không bị nhầm lẫn giữa các thực thể giống nhau.
- [ ] Các trường bắt buộc ở đích phải được đánh dấu bắt buộc ở nguồn.

### Chuyển đổi & Định dạng
- [ ] Các giá trị Enum hoặc Constant được ánh xạ đúng mã (ví dụ: Nam -> 1, Nữ -> 2).
- [ ] Đơn vị đo lường được chuyển đổi chính xác (ví dụ: gram -> kilogram).
- [ ] Dữ liệu rỗng (Null/Empty) ở nguồn được xử lý đúng ở đích (lưu Null hay lưu giá trị mặc định).

### Toàn vẹn dữ liệu
- [ ] Dữ liệu không bị thay đổi giá trị ngoài ý muốn trong quá trình mapping.
- [ ] Không xảy ra lỗi mất dữ liệu khi chuyển đổi giữa các kiểu dữ liệu có độ chính xác khác nhau (ví dụ: Double sang Float).
- [ ] Các ký tự đặc biệt được xử lý (Escaped) đúng để không gây lỗi khi lưu vào DB hoặc hiển thị lại UI.

## Output mong đợi (Expected Output)
- Bảng Ma trận Ánh xạ dữ liệu (Data Mapping Matrix) đã được xác minh.
- Danh sách các Test Cases kiểm tra tính nhất quán dữ liệu qua các lớp.
- Báo cáo về các trường hợp sai lệch mapping hoặc mất mát dữ liệu.
