# 📋 TEST EXECUTION REPORT — SMOKE & REGRESSION TEST
## Sau Release Nhỏ (Minor Release)

> ⚠️ **LƯU Ý: Đây là mẫu giả định (template) dành cho mục đích tham khảo và hướng dẫn sử dụng. Mọi thông tin trong tài liệu này đều là dữ liệu giả định, không phản ánh hệ thống thực tế.**

---

## 1. THÔNG TIN RELEASE

| Trường thông tin | Chi tiết |
|---|---|
| **Tên Release** | `release/v2.4.1-hotfix-payment` *(giả định)* |
| **Ngày Deploy** | `2025-06-15 — 22:00 ICT` *(giả định)* |
| **Môi trường** | `Production / Staging` *(chọn môi trường phù hợp)* |
| **Người Deploy** | `Nguyễn Văn An — DevOps Engineer` *(giả định)* |
| **Người Test** | `Trần Thị Bình — QA Engineer` *(giả định)* |
| **Thời gian bắt đầu test** | `2025-06-15 — 22:30 ICT` *(giả định)* |
| **Thời gian kết thúc test** | `2025-06-15 — 23:45 ICT` *(giả định)* |

### 1.1 Module thay đổi

| Module | Loại thay đổi | Mô tả ngắn |
|---|---|---|
| `payment-service` | 🔧 Fix bug | Sửa lỗi double-charge khi retry thanh toán *(giả định)* |
| `order-service` | 🔧 Fix bug | Cập nhật trạng thái đơn hàng sau khi thanh toán thất bại *(giả định)* |
| `notification-service` | ✨ Minor update | Thêm email template cho trường hợp hoàn tiền *(giả định)* |

### 1.2 Link tham chiếu

| Loại | Link |
|---|---|
| **Git Diff / Pull Request** | `https://github.com/company/repo/compare/v2.4.0...v2.4.1` *(giả định)* |
| **Jira Release** | `https://jira.company.com/releases/v2.4.1` *(giả định)* |
| **Changelog** | `https://confluence.company.com/changelog/v2.4.1` *(giả định)* |
| **Release Notes** | *(đính kèm file hoặc link)* |

---

## 2. IMPACT ANALYSIS — PHÂN TÍCH TÁC ĐỘNG

> 📌 Tester hoàn thành phần này **trước khi** bắt đầu chạy test để xác định phạm vi kiểm thử phù hợp.

### 2.1 Checklist phân tích

Đánh dấu `[x]` vào ô phù hợp với thực tế của release này.

---

**Câu hỏi 1: Release có thay đổi shared component / common library không?**

- [ ] ✅ Có — Cần mở rộng phạm vi regression test sang các module dùng chung component này
- [ ] ❌ Không — Chỉ ảnh hưởng module được chỉ định
- [ ] ❓ Chưa xác định — Cần xác nhận với Dev trước khi test

> **Ghi chú:** *(Liệt kê tên shared component nếu có — ví dụ giả định: `common-validator`, `ui-button-lib`, `auth-middleware`)*

---

**Câu hỏi 2: Release có thay đổi API contract (request/response schema, endpoint, HTTP method, status code) không?**

- [ ] ✅ Có — Cần kiểm tra tất cả consumer (FE, mobile app, service khác) gọi API này
- [ ] ❌ Không — API giữ nguyên backward compatible
- [ ] ⚠️ Có nhưng có versioning — Cần kiểm tra cả v_cũ và v_mới đều hoạt động đúng

> **Ghi chú:** *(Liệt kê endpoint bị ảnh hưởng nếu có — ví dụ giả định: `POST /api/v2/payments/charge`, `GET /api/v2/orders/{id}/status`)*

---

**Câu hỏi 3: Release có thay đổi DB schema (thêm/xóa/sửa column, index, constraint, migration) không?**

- [ ] ✅ Có migration — Kiểm tra migration chạy thành công, dữ liệu cũ không bị corrupt
- [ ] ❌ Không có thay đổi schema — Bỏ qua kiểm tra DB migration
- [ ] ✅ Có thêm index / constraint — Kiểm tra performance và data integrity

> **Ghi chú:** *(Tên bảng và loại thay đổi — ví dụ giả định: Thêm column `retry_count` vào bảng `transactions`)*

---

**Câu hỏi 4: Module nào phụ thuộc vào các module vừa thay đổi?**

- [ ] Liệt kê danh sách module phụ thuộc (upstream/downstream):

| Module phụ thuộc | Loại phụ thuộc | Mức độ ảnh hưởng |
|---|---|---|
| `order-service` | Gọi API `payment-service` | Cao *(giả định)* |
| `wallet-service` | Subscribe event từ `payment-service` | Trung bình *(giả định)* |
| `reporting-service` | Đọc DB `transactions` | Thấp *(giả định)* |
| `mobile-app (iOS/Android)` | Consume REST API | Cao *(giả định)* |

> **Ghi chú:** *(Thêm/xóa dòng tùy thực tế)*

---

**Câu hỏi 5: Luồng nghiệp vụ nào bị ảnh hưởng?**

- [ ] Luồng thanh toán (checkout → payment → confirmation) *(giả định)*
- [ ] Luồng hủy đơn hàng và hoàn tiền *(giả định)*
- [ ] Luồng retry thanh toán thất bại *(giả định)*
- [ ] Luồng gửi thông báo email / push notification *(giả định)*
- [ ] Luồng báo cáo doanh thu cuối ngày *(giả định)*
- [ ] *(Thêm luồng khác nếu có)*

> **Ghi chú:** *(Mô tả chi tiết luồng quan trọng nhất bị ảnh hưởng)*

---

**Câu hỏi 6: Mức độ rủi ro tổng thể của release này?**

- [ ] 🔴 **CAO** — Thay đổi core logic, ảnh hưởng nhiều module, dữ liệu tài chính, nhiều user bị tác động
- [ ] 🟡 **TRUNG BÌNH** — Thay đổi có giới hạn phạm vi, có thể rollback nhanh
- [ ] 🟢 **THẤP** — Thay đổi nhỏ, độc lập, dễ isolate khi có vấn đề

> **Đánh giá rủi ro:** *(Giải thích lý do chọn mức rủi ro — ví dụ giả định: Chọn CAO vì liên quan đến luồng thanh toán, ảnh hưởng trực tiếp doanh thu và trải nghiệm người dùng)*

### 2.2 Kết luận Impact Analysis

| Hạng mục | Kết luận |
|---|---|
| **Phạm vi smoke test** | *(Ví dụ giả định: Tập trung vào payment flow và order status update)* |
| **Phạm vi regression test** | *(Ví dụ giả định: Ưu tiên cao cho payment, order; bỏ qua reporting)* |
| **Cần test trên thiết bị/browser đặc biệt?** | *(Ví dụ giả định: Test thêm trên Safari iOS do mobile app dùng WebView)* |
| **Cần coordination với team khác?** | *(Ví dụ giả định: Báo team Mobile test lại payment flow trên app)* |

---

## 3. SMOKE TEST CASES

> 📌 **Mục tiêu:** Xác nhận hệ thống khởi động đúng và các chức năng cốt lõi hoạt động sau deploy. Thời gian thực hiện mục tiêu: **< 30 phút**.
>
> **Quy tắc:** Nếu bất kỳ smoke test nào **FAIL** → **Dừng ngay, rollback, không tiến hành regression**.

| STT | Test Case | Điều kiện Pass | Kết quả | Ghi chú |
|---|---|---|---|---|
| **SM-01** | Kiểm tra service khởi động thành công | `payment-service`, `order-service`, `notification-service` trả về status `200 OK` trên health check endpoint `/health` | ⬜ PASS / ⬜ FAIL | *(Ví dụ giả định: Check log không có ERROR level khi startup)* |
| **SM-02** | Đăng nhập hệ thống bằng tài khoản test | Đăng nhập thành công, nhận JWT token hợp lệ, redirect đúng trang dashboard | ⬜ PASS / ⬜ FAIL | *(Tài khoản test giả định: `qa_test@company.com`)* |
| **SM-03** | Tạo đơn hàng mới (happy path) | Đơn hàng tạo thành công, trả về `order_id`, trạng thái `PENDING`, hiển thị đúng trên UI | ⬜ PASS / ⬜ FAIL | *(Giả định: Dùng sản phẩm test có SKU `TEST-001`)* |
| **SM-04** | Thực hiện thanh toán thành công | Payment request trả về `status: SUCCESS`, `transaction_id` hợp lệ, số tiền đúng, không bị charge 2 lần | ⬜ PASS / ⬜ FAIL | *(Giả định: Dùng thẻ test Visa `4111-1111-1111-1111`)* |
| **SM-05** | Kiểm tra cập nhật trạng thái đơn hàng sau thanh toán | Trạng thái đơn hàng chuyển từ `PENDING` → `CONFIRMED` trong vòng 10 giây | ⬜ PASS / ⬜ FAIL | *(Giả định: Kiểm tra cả trên DB và UI)* |
| **SM-06** | Kiểm tra email notification gửi đi | Email xác nhận đơn hàng được gửi đến địa chỉ test trong vòng 2 phút, nội dung đúng template mới | ⬜ PASS / ⬜ FAIL | *(Giả định: Check hòm thư `qa_test@company.com` hoặc Mailtrap)* |
| **SM-07** | Kiểm tra thanh toán thất bại (thẻ từ chối) | Hệ thống trả về lỗi rõ ràng `PAYMENT_DECLINED`, đơn hàng chuyển trạng thái `PAYMENT_FAILED`, **không trừ tiền** | ⬜ PASS / ⬜ FAIL | *(Giả định: Dùng thẻ test `4000-0000-0000-0002`)* |
| **SM-08** | Kiểm tra retry thanh toán sau khi thất bại | Người dùng retry, hệ thống **chỉ charge 1 lần**, không xảy ra double-charge (bug vừa fix) | ⬜ PASS / ⬜ FAIL | ⭐ **Test case quan trọng nhất của release này** *(giả định)* |

### 3.1 Tổng kết Smoke Test

| Chỉ số | Giá trị |
|---|---|
| Tổng số test case | 8 |
| Số PASS | *(Điền vào sau khi test)* |
| Số FAIL | *(Điền vào sau khi test)* |
| **Kết luận Smoke Test** | ⬜ ✅ PASSED — Tiến hành Regression / ⬜ ❌ FAILED — Dừng & Rollback |

---

## 4. REGRESSION TEST CASES

> 📌 **Mục tiêu:** Đảm bảo các chức năng hiện có không bị broken sau release.
> Dựa trên Impact Analysis ở Mục 2, tester phân loại từng test case vào 3 nhóm ưu tiên.

### 4.1 Hướng dẫn phân loại ưu tiên

| Nhóm | Ký hiệu | Tiêu chí phân loại |
|---|---|---|
| **Ưu tiên Cao** | 🔴 | Trực tiếp liên quan module thay đổi, luồng core, dữ liệu tài chính/nhạy cảm |
| **Ưu tiên Vừa** | 🟡 | Gián tiếp liên quan, module phụ thuộc, ảnh hưởng một phần trải nghiệm |
| **Bỏ qua lần này** | ⚪ | Hoàn toàn độc lập với thay đổi, đã test gần đây, rủi ro thấp |

---

### 4.2 Nhóm 🔴 ƯU TIÊN CAO — Bắt buộc thực hiện

| STT | Test Case | Module | Điều kiện Pass | Kết quả | Lý do ưu tiên Cao |
|---|---|---|---|---|---|
| **RG-H01** | Thanh toán một lần thành công — không double charge | `payment-service` | Chỉ có 1 transaction record trong DB, số dư tài khoản test giảm đúng 1 lần | ⬜ PASS / ⬜ FAIL | Bug vừa fix trực tiếp liên quan luồng này *(giả định)* |
| **RG-H02** | Retry thanh toán thất bại — charge đúng 1 lần | `payment-service` | Sau 3 lần retry: chỉ 1 charge thành công, không duplicate transaction | ⬜ PASS / ⬜ FAIL | Core fix của release, rủi ro cao nhất *(giả định)* |
| **RG-H03** | Hoàn tiền (refund) toàn phần | `payment-service` | Refund request thành công, tiền trả về đúng số tiền, trạng thái `REFUNDED` | ⬜ PASS / ⬜ FAIL | Cùng module với bug fix, cần verify không bị regression *(giả định)* |
| **RG-H04** | Cập nhật trạng thái đơn hàng khi thanh toán thất bại | `order-service` | Đơn hàng chuyển sang `PAYMENT_FAILED` đúng và kịp thời, không bị stuck ở `PENDING` | ⬜ PASS / ⬜ FAIL | `order-service` được thay đổi trực tiếp trong release *(giả định)* |
| **RG-H05** | Hủy đơn hàng và hoàn tiền tự động | `order-service` + `payment-service` | Hủy đơn → trigger refund → cả 2 service cập nhật đúng trạng thái | ⬜ PASS / ⬜ FAIL | Luồng kết hợp 2 module bị thay đổi *(giả định)* |
| **RG-H06** | Email xác nhận đơn hàng thành công | `notification-service` | Email gửi đến đúng địa chỉ, đúng nội dung, không bị delay quá 3 phút | ⬜ PASS / ⬜ FAIL | `notification-service` có template mới, cần verify *(giả định)* |
| **RG-H07** | Email thông báo hoàn tiền | `notification-service` | Email hoàn tiền gửi đúng template mới vừa thêm, thông tin số tiền chính xác | ⬜ PASS / ⬜ FAIL | Feature mới trong release — template email hoàn tiền *(giả định)* |
| **RG-H08** | Mobile app thực hiện thanh toán | `payment-service` API | App iOS/Android gọi API thanh toán thành công, nhận response đúng format | ⬜ PASS / ⬜ FAIL | Mobile app là consumer chính của payment API *(giả định)* |

**Tổng kết nhóm Cao:** PASS: ___ / FAIL: ___ / Tổng: 8

---

### 4.3 Nhóm 🟡 ƯU TIÊN VỪA — Thực hiện nếu còn thời gian

| STT | Test Case | Module | Điều kiện Pass | Kết quả | Lý do ưu tiên Vừa |
|---|---|---|---|---|---|
| **RG-M01** | Xem lịch sử giao dịch của người dùng | `wallet-service` | Lịch sử hiển thị đúng, đủ các transaction mới nhất, phân trang hoạt động | ⬜ PASS / ⬜ FAIL / ⬜ Skip | Phụ thuộc event từ `payment-service`, gián tiếp bị ảnh hưởng *(giả định)* |
| **RG-M02** | Thanh toán bằng ví điện tử (wallet) | `wallet-service` | Trừ tiền ví đúng, tạo transaction record, không ảnh hưởng payment card flow | ⬜ PASS / ⬜ FAIL / ⬜ Skip | Cùng hệ thống payment nhưng code path khác *(giả định)* |
| **RG-M03** | Push notification trên mobile khi thanh toán thành công | `notification-service` | Push notification hiển thị đúng nội dung, đúng thời điểm trên iOS và Android | ⬜ PASS / ⬜ FAIL / ⬜ Skip | `notification-service` bị thay đổi nhưng push notification ít bị ảnh hưởng hơn email *(giả định)* |
| **RG-M04** | Áp dụng mã giảm giá khi checkout | `order-service` | Giảm giá tính đúng, tổng tiền hiển thị đúng, payment charge đúng số tiền sau giảm giá | ⬜ PASS / ⬜ FAIL / ⬜ Skip | `order-service` thay đổi nhưng logic voucher nằm ở module riêng *(giả định)* |
| **RG-M05** | Tìm kiếm và lọc lịch sử đơn hàng | `order-service` | Filter theo trạng thái, ngày, kết quả đúng và nhanh (< 2 giây) | ⬜ PASS / ⬜ FAIL / ⬜ Skip | Dùng DB `orders` cùng service thay đổi, có thể bị side effect *(giả định)* |

**Tổng kết nhóm Vừa:** PASS: ___ / FAIL: ___ / Skip: ___ / Tổng: 5

---

### 4.4 Nhóm ⚪ BỎ QUA LẦN NÀY — Không thực hiện trong release này

| STT | Test Case | Module | Lý do bỏ qua | Kế hoạch test tiếp theo |
|---|---|---|---|---|
| **RG-S01** | Đăng ký tài khoản mới | `auth-service` | Hoàn toàn độc lập với các module thay đổi trong release này *(giả định)* | Sprint regression định kỳ tuần sau |
| **RG-S02** | Quản lý sản phẩm (thêm/sửa/xóa) | `product-service` | Không có thay đổi liên quan, đã chạy regression 3 ngày trước *(giả định)* | Sprint regression định kỳ tuần sau |
| **RG-S03** | Báo cáo doanh thu theo ngày | `reporting-service` | Chỉ đọc DB, không bị ảnh hưởng bởi logic thay đổi, rủi ro thấp *(giả định)* | Regression tuần tới, hoặc khi `reporting-service` có thay đổi |
| **RG-S04** | Quản lý tài khoản người dùng | `user-service` | Không liên quan đến payment hay order flow *(giả định)* | Sprint regression định kỳ |
| **RG-S05** | Chức năng tìm kiếm sản phẩm | `search-service` | Module hoàn toàn tách biệt, không có dependency với các module thay đổi *(giả định)* | Sprint regression định kỳ |

---

### 4.5 Tổng kết Regression Test

| Nhóm | Tổng | PASS | FAIL | Skip |
|---|---|---|---|---|
| 🔴 Ưu tiên Cao | 8 | ___ | ___ | ___ |
| 🟡 Ưu tiên Vừa | 5 | ___ | ___ | ___ |
| ⚪ Bỏ qua | 5 | — | — | 5 |
| **TỔNG** | **18** | **___** | **___** | **___** |

---

## 5. ĐIỀU KIỆN DỪNG (EXIT CRITERIA)

> 📌 Hệ thống đạt điều kiện **Go** khi đáp ứng **tất cả** tiêu chí bên dưới.

### 5.1 Điều kiện bắt buộc dừng — Rollback ngay lập tức

Nếu xảy ra bất kỳ tình huống nào sau đây, **dừng test và rollback ngay**:

- [ ] ❌ Bất kỳ **Smoke Test case nào FAIL**
- [ ] ❌ **Double charge** xảy ra với bất kỳ transaction test nào (RG-H01, RG-H02)
- [ ] ❌ **Mất dữ liệu** — transaction, order, user data không được ghi đúng vào DB
- [ ] ❌ **Service crash** — bất kỳ service nào không phản hồi quá 5 phút
- [ ] ❌ **Lỗi bảo mật** — data leak, authentication bypass được phát hiện

### 5.2 Điều kiện Pass để Go-Live

| Tiêu chí | Ngưỡng tối thiểu | Trạng thái |
|---|---|---|
| Smoke Test | **100% PASS** (8/8) | ⬜ Đạt / ⬜ Không đạt |
| Regression Ưu tiên Cao | **≥ 95% PASS** (≥ 7/8 test case) | ⬜ Đạt / ⬜ Không đạt |
| Regression Ưu tiên Vừa | **≥ 80% PASS** (≥ 4/5 test case) | ⬜ Đạt / ⬜ Không đạt |
| Không có bug mức **Critical / Blocker** còn mở | **0 bug critical** chưa fix | ⬜ Đạt / ⬜ Không đạt |
| Không có bug **P1** liên quan đến tài chính | **0 bug tài chính** chưa fix | ⬜ Đạt / ⬜ Không đạt |
| Response time API thanh toán | **< 3 giây** cho 95th percentile | ⬜ Đạt / ⬜ Không đạt |

### 5.3 Điều kiện chấp nhận có bug tồn đọng

Bug có thể được chấp nhận tồn đọng (với sự phê duyệt của Product Owner) khi:
- Mức độ: **Minor / Cosmetic** (không ảnh hưởng chức năng core)
- Có **workaround** rõ ràng cho người dùng
- Được ghi nhận trong Jira và có kế hoạch fix trong sprint tiếp theo
- Không liên quan đến dữ liệu tài chính hoặc bảo mật

---

## 6. KẾT LUẬN — GO / NO-GO DECISION

> ⚠️ **Lưu ý:** Phần này được điền sau khi hoàn thành tất cả bước test bên trên. Thông tin dưới đây là **giả định mẫu**.

### 6.1 Tóm tắt kết quả

| Hạng mục | Kết quả |
|---|---|
| **Smoke Test** | *(Ví dụ giả định: ✅ 8/8 PASS)* |
| **Regression Cao** | *(Ví dụ giả định: ✅ 8/8 PASS)* |
| **Regression Vừa** | *(Ví dụ giả định: ⚠️ 4/5 PASS — 1 FAIL ở RG-M03)* |
| **Bug phát sinh** | *(Ví dụ giả định: 1 bug Minor — Push notification delay 5 phút thay vì tức thì)* |
| **Thời gian thực hiện** | *(Ví dụ giả định: 75 phút — trong mục tiêu < 90 phút)* |

### 6.2 Danh sách bug phát sinh trong quá trình test

| Bug ID | Mô tả | Mức độ | Trạng thái | Quyết định |
|---|---|---|---|---|
| `BUG-2891` | Push notification delay ~5 phút khi thanh toán thành công *(giả định)* | Minor | Open | Chấp nhận tồn đọng, fix sprint sau *(giả định)* |
| *(Thêm bug nếu có)* | | | | |

### 6.3 Quyết định cuối cùng

---

## ✅ QUYẾT ĐỊNH: GO

> *(Đây là kết luận giả định cho mục đích minh họa template)*

**Lý do Go:**
1. ✅ Toàn bộ Smoke Test PASS — hệ thống khởi động và hoạt động ổn định
2. ✅ 100% Regression Ưu tiên Cao PASS — bug double-charge đã được fix đúng, không regression
3. ✅ 80% Regression Ưu tiên Vừa PASS — đạt ngưỡng tối thiểu
4. ✅ Không có bug Critical hoặc liên quan đến tài chính
5. ⚠️ 1 bug Minor (push notification delay) được chấp nhận tồn đọng với sự đồng ý của Product Owner — có workaround là email notification vẫn hoạt động tốt

**Điều kiện đi kèm với quyết định Go:**
- Monitor dashboard thanh toán liên tục trong 2 giờ đầu sau release
- Alert ngay nếu tỷ lệ lỗi thanh toán vượt quá 1%
- Bug `BUG-2891` được ưu tiên fix trong sprint tiếp theo

---

> *Nếu kết luận là **NO-GO**, ghi rõ:*
> - *Test case nào FAIL và lỗi cụ thể là gì*
> - *Tại sao không thể chấp nhận tồn đọng*
> - *Các bước tiếp theo: rollback, fix, và kế hoạch re-test*

---

### 6.4 Phê duyệt và xác nhận

| Vai trò | Họ tên | Chữ ký / Xác nhận | Thời gian |
|---|---|---|---|
| **QA Engineer (Người test)** | *(Điền vào)* | *(Điền vào)* | *(Điền vào)* |
| **QA Lead / Test Manager** | *(Điền vào)* | *(Điền vào)* | *(Điền vào)* |
| **Product Owner** | *(Điền vào)* | *(Điền vào)* | *(Điền vào)* |
| **Tech Lead / Dev** | *(Điền vào)* | *(Điền vào)* | *(Điền vào)* |

---

## PHỤ LỤC

### A. Môi trường test

| Hạng mục | Thông tin |
|---|---|
| **Test environment URL** | *(Điền link)* |
| **Browser / Device** | *(Ví dụ: Chrome 125, Safari iOS 17, Android 14)* |
| **Test account sử dụng** | *(Điền tài khoản test, không dùng tài khoản thật)* |
| **Test data / Fixtures** | *(Mô tả dữ liệu test dùng)* |
| **Tool hỗ trợ** | *(Ví dụ: Postman, Mailtrap, Charles Proxy)* |

### B. Hướng dẫn sử dụng template này

1. **Copy template này** cho mỗi release nhỏ
2. **Điền thông tin thực tế** vào các trường đang có *(giả định)*
3. **Hoàn thành Impact Analysis** trước khi bắt đầu test
4. **Chạy Smoke Test trước** — nếu FAIL thì rollback ngay, không chạy tiếp Regression
5. **Phân loại lại Regression cases** dựa trên Impact Analysis thực tế — có thể thêm bớt test case
6. **Lưu file này** vào Confluence / Google Drive theo convention đặt tên: `TEST-REPORT_vX.X.X_YYYY-MM-DD.md`

---

*Template version: 1.0 | Cập nhật lần cuối: 2025-06 | Người tạo: QA Team*
*⚠️ Toàn bộ thông tin trong tài liệu này là dữ liệu giả định, chỉ dùng cho mục đích tham khảo và hướng dẫn.*