# Kiểm thử Tính toán (Calculation Testing)

## Mục đích (Purpose)
Xác minh tính chính xác tuyệt đối của các phép tính, công thức nghiệp vụ và logic xử lý số liệu trong hệ thống. Đảm bảo các kết quả về tài chính, thống kê, hoặc định lượng tuân thủ đúng các quy tắc làm tròn, tỷ giá và các ràng buộc độ chính xác.

## Kiến thức cần có (Required Knowledge)
- Nắm vững các công thức toán học và nghiệp vụ (ví dụ: công thức tính thuế VAT, chiết khấu lũy tiến, lãi suất ngân hàng).
- Hiểu về các phương pháp làm tròn số (Rounding methods): Round up, Round down, Half-even (Banker's rounding).
- Kiến thức về kiểu dữ liệu số trong lập trình và Database (Float, Double, Decimal/Numeric) và vấn đề sai số dấu phẩy động.
- Hiểu về quy tắc ưu tiên phép tính và các hằng số nghiệp vụ.

## Quy trình thực hiện (Process)
1. **Phân tích công thức:** Trích xuất các công thức tính toán từ tài liệu đặc tả nghiệp vụ.
2. **Xác định các tham số đầu vào:** Liệt kê tất cả các biến số ảnh hưởng đến kết quả tính toán (Input variables).
3. **Chuẩn bị dữ liệu mẫu (Test Data):** Tạo các bộ dữ liệu bao gồm các giá trị biên (Min, Max), giá trị thông thường, và các giá trị đặc biệt (0, số âm, null).
4. **Tính toán thủ công (Manual Calculation):** Sử dụng công cụ độc lập (Excel, máy tính bỏ túi) để tính ra kết quả mong đợi (Expected Results) dựa trên công thức.
5. **Thực hiện kiểm thử:** Nhập dữ liệu vào hệ thống và so sánh kết quả hệ thống trả về với kết quả đã tính toán thủ công.
6. **Kiểm thử tích lũy và làm tròn:** Kiểm tra sai số khi thực hiện nhiều phép tính liên tiếp hoặc khi tổng hợp dữ liệu lớn.

## Checklist
### Tính đúng đắn của công thức
- [ ] Kết quả tính toán khớp chính xác với công thức nghiệp vụ đã định nghĩa.
- [ ] Các tham số đầu vào (Input) được lấy đúng nguồn và đúng thời điểm.
- [ ] Thứ tự ưu tiên các phép tính (Nhân chia trước, cộng trừ sau, trong ngoặc trước) được thực hiện đúng.

### Làm tròn & Độ chính xác
- [ ] Quy tắc làm tròn số thập phân được áp dụng nhất quán trên toàn hệ thống.
- [ ] Số chữ số sau dấu phẩy (Precision/Scale) hiển thị đúng yêu cầu (ví dụ: tiền tệ thường lấy 2 hoặc 0 chữ số thập phân).
- [ ] Không có sai số tích lũy đáng kể khi tính tổng của hàng nghìn bản ghi đã làm tròn.

### Trường hợp đặc biệt (Edge Cases)
- [ ] Hệ thống xử lý đúng khi dữ liệu đầu vào bằng 0 hoặc rỗng (Null).
- [ ] Không xảy ra lỗi "Chia cho 0" (Divide by zero).
- [ ] Các giá trị cực đại (Max value) không gây ra lỗi tràn số (Overflow).
- [ ] Các kết quả tính toán là số âm được xử lý hoặc hiển thị đúng theo quy tắc nghiệp vụ.

### Tỷ giá & Đơn vị
- [ ] Chuyển đổi giữa các đơn vị đo lường hoặc tiền tệ sử dụng đúng tỷ giá hiện hành.
- [ ] Kết quả sau khi chuyển đổi được kiểm tra lại tính hợp lý.

## Output mong đợi (Expected Output)
- Bảng tính Excel chứa các bộ dữ liệu mẫu, công thức và kết quả mong đợi.
- Bộ Test Cases tập trung vào các logic tính toán phức tạp.
- Báo cáo xác nhận tính chính xác của số liệu hệ thống, đặc biệt là các phần liên quan đến tài chính/doanh thu.
