# Kiểm thử Thông báo (Notification Testing)

## Mục đích (Purpose)
Đảm bảo hệ thống gửi các loại thông báo (Email, SMS, Push Notification, In-app) đến đúng đối tượng, đúng thời điểm và với nội dung chính xác theo sự kiện kích hoạt (Trigger events). Kiểm thử này giúp tăng cường trải nghiệm người dùng và đảm bảo tính kịp thời của thông tin.

## Kiến thức cần có (Required Knowledge)
- Hiểu về các kênh thông báo được hỗ trợ (Email, SMS, Push, Webhook).
- Nắm vững các kịch bản kích hoạt thông báo (ví dụ: đăng ký thành công, quên mật khẩu, đơn hàng mới).
- Hiểu về cấu trúc Template (chỗ đặt biến dynamic như {Name}, {Order_ID}).
- Kiến thức về các nhà cung cấp dịch vụ thông báo (Firebase, AWS SES, Twilio, ...).
- Hiểu về cơ chế lập lịch (Cronjobs) cho các thông báo không gửi tức thì.

## Quy trình thực hiện (Process)
1. **Xác định các sự kiện kích hoạt:** Liệt kê tất cả hành động người dùng hoặc hệ thống sẽ sinh ra thông báo.
2. **Kiểm thử Nội dung (Content Testing):** Xác minh các biến trong template được render đúng dữ liệu thực tế. Kiểm tra định dạng (HTML/Text), font chữ, hình ảnh, link đính kèm.
3. **Kiểm thử Đa ngôn ngữ:** Nếu hệ thống hỗ trợ nhiều ngôn ngữ, hãy kiểm tra thông báo hiển thị đúng ngôn ngữ theo cấu hình của người nhận.
4. **Kiểm thử Người nhận (Recipient Testing):** Xác minh thông báo được gửi đúng danh sách To, Cc, Bcc. Đảm bảo người dùng đã block hoặc unsubscribe sẽ không nhận được thông báo.
5. **Kiểm thử Thời gian (Timing Testing):** Kiểm tra độ trễ (Latency). Xác minh thông báo được gửi ngay lập tức hoặc đúng khung giờ đã đặt lịch.
6. **Kiểm thử Hiệu năng & Giới hạn:** Kiểm tra việc gửi thông báo hàng loạt (Bulk notifications) và cơ chế giới hạn tần suất gửi (Rate limiting/Spam filter).

## Checklist
### Nội dung thông báo
- [ ] Tên người gửi (Sender Name) và Email người gửi đúng cấu hình.
- [ ] Tiêu đề (Subject) và nội dung (Body) không có lỗi chính tả, đúng template.
- [ ] Các biến dynamic ({Username}, {OTP}, ...) hiển thị đúng giá trị.
- [ ] Các liên kết (Links/CTAs) trong thông báo hoạt động và dẫn tới đúng trang.
- [ ] Hình ảnh hiển thị đúng, không bị vỡ hoặc lỗi link.

### Logic gửi thông báo
- [ ] Thông báo được kích hoạt ngay sau khi sự kiện xảy ra.
- [ ] Không gửi trùng lặp (Duplicate) một nội dung thông báo cho cùng một người trong một sự kiện.
- [ ] Thông báo In-app xuất hiện và có thể đọc/xóa/đánh dấu đã đọc.
- [ ] Số lượng tin nhắn/email gửi đi không vượt quá giới hạn cho phép (nếu có).

### Thiết bị & Môi trường
- [ ] Push notification hiển thị đúng trên các nền tảng khác nhau (iOS, Android, Web).
- [ ] Email hiển thị tốt trên các trình duyệt và ứng dụng mail phổ biến (Gmail, Outlook).
- [ ] SMS gửi đến đúng đầu số và nhà mạng của người dùng.

## Output mong đợi (Expected Output)
- Danh sách Test Cases bao phủ toàn bộ các kịch bản thông báo.
- Ảnh chụp màn hình/Bằng chứng (Evidence) về nội dung thông báo trên các kênh.
- Báo cáo về tỷ lệ gửi thành công và độ trễ của thông báo.
