Test Cases: Sản phẩm
| Module | CORE-05 | URD | URD Sản phẩm |
|---|
Kịch bản dùng Given / When / Then.
TC-<AREA>-NNNkhớp vớiURD-<AREA>-NNN. Mức ưu tiên = P1 (nghiêm trọng) / P2 (lớn) / P3 (nhỏ).
1. Tóm tắt Độ phủ
| Lĩnh vực | Yêu cầu URD | Test case | Đã phủ |
|---|---|---|---|
Sản phẩm (PRD) | 16 | 31 | ✅ |
Nhóm hàng (CAT) | 4 | 8 | ✅ |
Biến thể (VAR) | 12 | 24 | ✅ |
Fare / Định giá (FAR) | 7 | 17 | ✅ |
Định danh (PID) | 4 | 8 | ✅ |
Khuyến mãi (CMP) | 3 | 5 | ⚠️ (tính toán Planned) |
Truy cập (ACC) | 4 | 11 | ✅ |
Ràng buộc (CON) | 7 | 13 | ✅ |
Endpoint đọc giá biến thể (
URD-VAR-011), nhập CSV (URD-PRD-019), và tính chiết khấu khuyến mãi (URD-CMP-003) là Planned / In-progress; test case của chúng kiểm tra hành vi hiện tại (lỗi / không-áp-dụng), không phải chức năng đầy đủ.
2. Test Cases
2.1 Sản phẩm (PRD)
| TC ID | URD ref | Kịch bản | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-PRD-001 | URD-PRD-001, -002, -004 | Tạo sản phẩm (happy path) | Chủ tạo sản phẩm với tên + nhóm hàng | Đã tạo; sinh SYSTEM id + slug; biến thể mặc định được tạo; trạng thái Activated | P1 |
| TC-PRD-002 | URD-PRD-001 | Tạo không tên | Gửi không có tên | Bị từ chối; bắt buộc tên | P1 |
| TC-PRD-003 | URD-PRD-001 | Tạo không nhóm hàng | Gửi không có nhóm hàng | Bị từ chối; bắt buộc nhóm hàng | P1 |
| TC-PRD-004 | URD-PRD-003 | Tên đa ngôn ngữ | Cung cấp tên bằng EN + VI | Mọi ngôn ngữ được lưu & lấy lại được | P1 |
| TC-PRD-005 | URD-PRD-003 | Ngôn ngữ một phần | Chỉ tên chính, các tên khác rỗng | Đã tạo; ngôn ngữ rỗng lưu là rỗng (không lỗi) | P2 |
| TC-PRD-006 | URD-PRD-005 | Cập nhật info | Chủ cập nhật tên & mô tả | Đã cập nhật; biến thể/fares không đổi | P1 |
| TC-PRD-007 | URD-PRD-005 | Cập nhật thành tên rỗng | Chủ xóa tên | Bị từ chối; bản gốc được giữ | P1 |
| TC-PRD-008 | URD-PRD-006 | Vô hiệu hóa | Chủ vô hiệu hóa một sản phẩm đang hoạt động | Trạng thái Deactivated; dữ liệu được giữ; ẩn khỏi POS | P1 |
| TC-PRD-009 | URD-PRD-006 | Xem đã vô hiệu hóa | Chủ mở một sản phẩm đã vô hiệu hóa | Mọi dữ liệu nguyên vẹn; trạng thái hiển thị Deactivated | P2 |
| TC-PRD-010 | URD-PRD-007 | Trùng slug cùng merchant | Tạo sản phẩm sẽ dùng lại một slug đã tồn tại | Hệ thống đảm bảo duy nhất (slug khác nhau) | P1 |
| TC-PRD-011 | URD-PRD-007 | Slug xuyên merchant | Hai merchant cùng tạo "coffee-latte" | Cả hai thành công; slug duy nhất theo merchant, có thể trùng nhau giữa các merchant | P2 |
| TC-PRD-012 | URD-PRD-008 | Tra cứu theo ID | Tìm theo ID đã biết | Sản phẩm trả về với tên, nhóm hàng, trạng thái, biến thể | P1 |
| TC-PRD-013 | URD-PRD-008 | Tra cứu theo slug | Tìm theo slug đã biết | Sản phẩm được trả về | P1 |
| TC-PRD-014 | URD-PRD-008 | Tra cứu ID thiếu | Tìm theo ID không tồn tại | Không tìm thấy; không trả về gì | P2 |
| TC-PRD-015 | URD-PRD-009 | Danh sách (lọc theo vai trò) | Chủ yêu cầu danh sách sản phẩm | Chỉ sản phẩm dưới merchant của mình được trả về | P1 |
| TC-PRD-016 | URD-PRD-009 | Nhất quán đếm | Chủ yêu cầu đếm sản phẩm | Số đếm tôn trọng cùng bộ lọc vai trò như danh sách | P2 |
| TC-PRD-017 | URD-PRD-013 | Đính kèm hình ảnh | Chủ đính kèm hình ảnh | Hình ảnh được liên kết & lấy lại được | P2 |
| TC-PRD-018 | URD-PRD-013 | Định dạng ảnh xấu | Chủ tải lên định dạng không hỗ trợ | Bị từ chối; chỉ ra định dạng cho phép | P3 |
| TC-PRD-019 | URD-PRD-014 | Gán kênh bán | Chủ gán sản phẩm cho các kênh cụ thể | Chỉ khả dụng trong các kênh được gán | P2 |
| TC-PRD-020 | URD-PRD-014 | Gỡ khỏi kênh | Gỡ sản phẩm khỏi kênh B | Còn ở A; mất khỏi B | P2 |
| TC-PRD-021 | URD-PRD-016 | Cha-con | Tạo một sản phẩm con dưới một sản phẩm cha | Con tham chiếu cha; cha liệt kê con | P2 |
| TC-PRD-023 | URD-PRD-006 | Lưu trữ | Chủ lưu trữ một sản phẩm | Trạng thái Archived; dữ liệu được giữ; ẩn khỏi POS & danh sách | P1 |
| TC-PRD-024 | URD-PRD-008 | Tra cứu slug thiếu | Tìm theo slug không tồn tại | Không tìm thấy; không trả về gì | P2 |
| TC-PRD-025 | URD-PRD-006 | Kích hoạt lại | Chủ kích hoạt lại một sản phẩm đã vô hiệu hóa | Trạng thái Activated; hiển thị lại; dữ liệu không đổi | P1 |
| TC-PRD-026 | URD-PRD-001 | Tạo không merchant | Chủ tạo không có ngữ cảnh merchant | Bị từ chối; bắt buộc merchant | P1 |
| TC-PRD-027 | URD-PRD-007 | Slug chuỗi rỗng | Chủ gửi "" làm slug | Hệ thống tự sinh một slug hợp lệ; sản phẩm tìm được | P2 |
| TC-PRD-028 | URD-PRD-014 | Cập nhật diff kênh | Cập nhật kênh [A,B,C] → [B,D] | A & C bị gỡ, D thêm vào, B giữ — nguyên tử | P2 |
| TC-PRD-029 | URD-PRD-005, -014 | Cập nhật chỉ kênh | Cập nhật aggregate không đổi sản phẩm, kênh mới | Sản phẩm không đổi; kênh được cập nhật; không ghi thừa sản phẩm | P2 |
| TC-PRD-030 | URD-PRD-017 | Tìm theo tên | Tìm "Cafe" trong các sản phẩm | Khớp một phần không phân biệt hoa thường được trả về | P1 |
| TC-PRD-031 | URD-PRD-017 | Tìm có dấu | Tìm "ca phe" với tên có dấu | Trả về nếu tìm i18n chuẩn hóa dấu; hành vi được ghi tài liệu | P2 |
| TC-PRD-032 | URD-PRD-018 | Lọc theo nhóm hàng | Lọc danh sách theo "Beverages" | Chỉ sản phẩm Beverages được trả về | P1 |
| TC-PRD-033 | URD-PRD-015 | Đã lưu trữ là chỉ đọc | Cập nhật một sản phẩm đã lưu trữ | Bị từ chối; đã lưu trữ là chỉ đọc | P1 |
| TC-PRD-034 | URD-PRD-015 | Lưu trữ là cuối | Kích hoạt lại một sản phẩm đã lưu trữ | Bị từ chối; Archived là cuối | P1 |
| TC-PRD-022 | URD-PRD-019 | Nhập CSV (Planned) | Tải lên một file danh mục | Tính năng Planned — test mở rộng khi triển khai | P3 |
2.2 Nhóm hàng (CAT)
| TC ID | URD ref | Kịch bản | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-CAT-001 | URD-CAT-001 | Tạo nhóm hàng | Chủ tạo một nhóm hàng với tên | Đã tạo trong merchant; sẵn để gán | P1 |
| TC-CAT-002 | URD-CAT-001 | Tạo không tên | Gửi không có tên | Bị từ chối; bắt buộc tên | P1 |
| TC-CAT-003 | URD-CAT-002 | Tên đa ngôn ngữ | Cung cấp tên bằng nhiều ngôn ngữ | Mọi ngôn ngữ được lưu & lấy lại được | P2 |
| TC-CAT-004 | URD-CAT-003 | Cập nhật nhóm hàng | Chủ cập nhật tên | Đã cập nhật; sản phẩm không bị ảnh hưởng | P2 |
| TC-CAT-005 | URD-CAT-003 | Xóa nhóm hàng rỗng | Xóa một nhóm hàng không có sản phẩm | Soft-delete; mất khỏi danh sách | P2 |
| TC-CAT-006 | URD-CAT-003 | Xóa nhóm hàng đang dùng | Xóa một nhóm hàng có sản phẩm | Bị từ chối; nhóm hàng đang dùng; sản phẩm giữ phân loại | P1 |
| TC-CAT-007 | URD-CAT-004 | Đánh cờ add-on | Đánh dấu nhóm hàng là add-on | Đã đánh cờ; sản phẩm được xử lý như add-on | P2 |
| TC-CAT-008 | URD-CAT-004 | Bỏ cờ add-on | Gỡ cờ add-on | Trở về hành vi nhóm hàng chuẩn | P3 |
2.3 Biến thể (VAR)
| TC ID | URD ref | Kịch bản | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-VAR-001 | URD-VAR-001 | Biến thể mặc định tồn tại | Tạo một sản phẩm | Biến thể mặc định tồn tại với một định danh hệ thống | P1 |
| TC-VAR-002 | URD-VAR-001 | Không thể xóa biến thể cuối | Xóa biến thể duy nhất | Bị từ chối; luôn còn ít nhất một biến thể | P1 |
| TC-VAR-003 | URD-VAR-002 | Thêm biến thể | Tạo một biến thể "Large" bổ sung | Đã liên kết; sản phẩm giờ có hai biến thể | P1 |
| TC-VAR-004 | URD-VAR-003, -005 | Tạo aggregate | Tạo biến thể + info + fares + định danh | Tất cả tạo nguyên tử; định danh được sinh | P1 |
| TC-VAR-005 | URD-VAR-003 | Rollback tạo aggregate | Tạo aggregate với một fare âm | Toàn bộ thao tác bị từ chối; không tạo gì | P1 |
| TC-VAR-006 | URD-VAR-004 | Cập nhật aggregate | Cập nhật tên, fare, định danh trong một bước | Tất cả cập nhật nguyên tử | P1 |
| TC-VAR-007 | URD-VAR-004 | Rollback cập nhật aggregate | Tên hợp lệ nhưng fare không hợp lệ | Toàn bộ cập nhật bị từ chối; bản gốc được giữ | P1 |
| TC-VAR-008 | URD-VAR-005 | Định danh hệ thống | Tạo một biến thể | Định danh hệ thống duy nhất; không sửa được bởi người dùng | P2 |
| TC-VAR-009 | URD-VAR-007 | Khoảng hiệu lực | Đặt ngày từ/đến | Chỉ khả dụng trong cửa sổ | P2 |
| TC-VAR-010 | URD-VAR-007 | Khoảng đã hết hạn | Ngày kết thúc trong quá khứ, thêm vào giỏ | Không khả dụng để bán | P2 |
| TC-VAR-011 | URD-VAR-006 | Đặt loại biến thể | Đặt loại thành SERVICE / KIT / COMBO v.v. | Loại được lưu; điều khiển hành vi quản lý tồn & bundle | P2 |
| TC-VAR-012 | URD-VAR-008 | Gán SKU | Gán một SKU | Đã liên kết; tìm được theo SKU | P2 |
| TC-VAR-013 | URD-VAR-008 | Gán barcode | Gán một barcode | Đã liên kết; tìm được theo barcode | P2 |
| TC-VAR-014 | URD-VAR-001 | Vô hiệu hóa biến thể | Vô hiệu hóa một biến thể không phải duy nhất | Trạng thái Deactivated; dữ liệu được giữ; ẩn khỏi POS | P1 |
| TC-VAR-015 | URD-VAR-001 | Lưu trữ biến thể | Lưu trữ một biến thể | Trạng thái Archived; dữ liệu được giữ; ẩn khỏi POS & danh sách | P1 |
| TC-VAR-016 | URD-VAR-001 | Trạng thái New | Tạo một biến thể | Trạng thái New; không bán được tới khi kích hoạt | P2 |
| TC-VAR-017 | URD-VAR-001 | Kích hoạt biến thể | Kích hoạt một biến thể New | Trạng thái Activated; bán được | P2 |
| TC-VAR-018 | URD-VAR-001 | Kích hoạt lại biến thể | Kích hoạt lại một biến thể đã vô hiệu hóa | Trạng thái Activated; dữ liệu không đổi | P2 |
| TC-VAR-019 | URD-VAR-011 | Đọc giá (Planned) | Gọi endpoint giá biến thể | Trả về một lỗi "chưa triển khai" có cấu trúc, không phải 500 thô | P2 |
| TC-VAR-020 | URD-VAR-004 | Bảo vệ thiếu-merchant | Cập nhật aggregate trên một biến thể thiếu metadata merchantId | Bị từ chối (500 theo thiết kế); giao dịch rollback | P2 |
| TC-VAR-021 | URD-VAR-004 | Chỉ cập nhật fare | Chỉ cập nhật số tiền fare | Tên không đổi (không ghi thừa); fare được cập nhật; commit | P2 |
| TC-VAR-022 | URD-VAR-008, URD-PID-004 | SKU lần đầu khi cập nhật | Biến thể không có SKU; cập nhật gán SKU | SKU được tạo & liên kết, HOẶC một lỗi rõ ràng — không bao giờ bị bỏ qua âm thầm | P2 |
| TC-VAR-023 | URD-VAR-001 | Cuối đã lưu trữ | Chuyển Archived → Activated | Bị từ chối; Archived là cuối | P1 |
| TC-VAR-024 | URD-VAR-001 | Nhảy không hợp lệ | Chuyển New → Archived trực tiếp | Bị từ chối; không phải chuyển hợp lệ | P2 |
2.4 Fare / Định giá (FAR)
| TC ID | URD ref | Kịch bản | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-FAR-001 | URD-FAR-001 | Một bộ fare | Tạo một biến thể | Đúng một bộ fare liên kết; không thể gỡ | P1 |
| TC-FAR-002 | URD-FAR-001 | Không bộ fare thứ hai | Tạo một bộ fare thứ hai | Bị từ chối; một bộ fare cho mỗi biến thể | P1 |
| TC-FAR-003 | URD-FAR-002 | Có fare cơ bản | Xem bộ fare của một biến thể | Ít nhất một fare (mặc định) tồn tại | P1 |
| TC-FAR-004 | URD-FAR-002 | Không thể xóa fare cuối | Xóa fare duy nhất | Bị từ chối; luôn phải tồn tại một fare | P1 |
| TC-FAR-005 | URD-FAR-003 | Cho phép số 0 | Tạo một fare số tiền 0 | Đã tạo (cho phép số 0) | P2 |
| TC-FAR-006 | URD-FAR-003 | Từ chối âm | Tạo một fare số tiền -100 | Bị từ chối; số tiền phải ≥ 0 | P1 |
| TC-FAR-007 | URD-FAR-004 | Áp fare cơ bản | Thêm biến thể chỉ có một fare cơ bản | Fare cơ bản được áp & hiển thị | P1 |
| TC-FAR-008 | URD-FAR-004 | Override thắng | Biến thể với cơ bản + override đang hoạt động | Giá override được chọn | P1 |
| TC-FAR-009 | URD-FAR-004 | Tất cả hết hạn | Mọi fares đều có ngày hết hạn | Quay về fare mặc định; không dùng giá hết hạn | P1 |
| TC-FAR-010 | URD-FAR-005 | Ngày trong cửa sổ | Fare hiệu lực 1–31 Mar, bán 15 Mar | Fare đang hoạt động & được áp | P2 |
| TC-FAR-011 | URD-FAR-005 | Ngày ngoài cửa sổ | Cùng fare, bán 1 Apr | Không áp; dùng fare áp dụng kế tiếp | P2 |
| TC-FAR-012 | URD-FAR-006 | Trong khoảng số lượng | Fare min 10 / max 50, thêm 20 | Fare được áp | P2 |
| TC-FAR-013 | URD-FAR-006 | Dưới tối thiểu | Fare min 10, thêm 5 | Không áp; dùng fare kế tiếp | P2 |
| TC-FAR-014 | URD-FAR-006 | Trên tối đa | Fare max 50, thêm 100 | Không áp; dùng fare kế tiếp | P2 |
| TC-FAR-015 | URD-FAR-007 | Phân cấp nhóm fare | Fare cha với các con | Cha-con được giữ; số con đúng | P2 |
| TC-FAR-016 | URD-FAR-004 | Tạo override | Thêm một fare OVERRIDE vào một bộ | Override được tạo; ưu tiên hơn cơ bản khi giải quyết | P1 |
| TC-FAR-017 | URD-FAR-004, -005, -006 | Giải quyết đa yếu tố | Cơ bản + số lượng + override theo mùa, thêm 15 vào 15 Mar | Override theo mùa được chọn (ưu tiên override); tổng = 15 × số tiền override | P1 |
2.5 Định danh (PID)
| TC ID | URD ref | Kịch bản | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-PID-001 | URD-PID-001 | Duy nhất theo lược đồ | Dùng lại một mã SKU trên sản phẩm khác | Bị từ chối; định danh đã dùng cho lược đồ đó | P1 |
| TC-PID-002 | URD-PID-001 | Cùng mã, khác lược đồ | Cùng mã dưới SKU và Barcode | Cả hai được chấp nhận; duy nhất là theo lược đồ | P2 |
| TC-PID-003 | URD-PID-002 | Nhiều định danh | Gán qua SYSTEM, SLUG, SKU, Barcode | Tất cả được lưu; tìm được theo bất kỳ | P1 |
| TC-PID-004 | URD-PID-003 | Tự sinh | Tạo một sản phẩm / biến thể | SYSTEM và SLUG tự sinh, duy nhất, không sửa được | P1 |
| TC-PID-005 | URD-PID-003 | Không cung cấp định danh | Tạo không cung cấp một định danh | SYSTEM & SLUG vẫn được sinh; không lỗi | P2 |
| TC-PID-006 | URD-PID-004 | Gán SKU + barcode | Gán cả hai cho một biến thể | Cả hai được liên kết; tìm được theo bất kỳ | P2 |
| TC-PID-007 | URD-PID-001, -004 | Trùng SKU | Gán một SKU đang dùng cho một biến thể khác | Bị từ chối; SKU đã được dùng | P1 |
| TC-PID-008 | URD-PID-004 | Gán mã QR | Gán một mã QR cho một biến thể | Đã liên kết; tìm được theo mã QR | P2 |
2.6 Khuyến mãi (CMP)
| TC ID | URD ref | Kịch bản | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-CMP-001 | URD-CMP-001 | Tạo khuyến mãi | Tạo với tên + khoảng ngày | Đã tạo; liên kết với merchant | P2 |
| TC-CMP-002 | URD-CMP-001 | Không khoảng ngày | Tạo không có ngày | Bị từ chối; bắt buộc khoảng ngày | P2 |
| TC-CMP-003 | URD-CMP-001 | Khoảng không hợp lệ | Ngày kết thúc trước ngày bắt đầu | Bị từ chối; khoảng không hợp lệ | P2 |
| TC-CMP-004 | URD-CMP-002 | Phạm vi merchant | Xem khuyến mãi của Merchant A dưới Merchant B | Không hiển thị dưới B | P2 |
| TC-CMP-005 | URD-CMP-003 | Áp chiết khấu (Planned) | Áp một khuyến mãi khi định giá | Tính chiết khấu đang tắt hiện tại — trả về 0; test mở rộng khi engine ra mắt | P3 |
2.7 Truy cập (ACC)
| TC ID | URD ref | Kịch bản | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-ACC-001 | URD-ACC-001 | Danh sách được lọc | Bất kỳ người dùng nào liệt kê sản phẩm | Lọc theo vai trò; không gì ngoài phạm vi | P1 |
| TC-ACC-002 | URD-ACC-001 | Đếm được lọc | Bất kỳ người dùng nào đếm sản phẩm | Số đếm chỉ phản ánh sản phẩm trong phạm vi | P1 |
| TC-ACC-003 | URD-ACC-002 | Phạm vi chủ | Chủ A liệt kê sản phẩm | Chỉ merchant của A trả về; của B bị ẩn | P1 |
| TC-ACC-004 | URD-ACC-002 | Chặn liên-chủ | Chủ A truy cập sản phẩm của Chủ B | Bị từ chối | P1 |
| TC-ACC-005 | URD-ACC-003 | Phạm vi nhân viên | Nhân viên của X liệt kê sản phẩm | Chỉ sản phẩm của X trả về | P1 |
| TC-ACC-006 | URD-ACC-003 | Chặn nhân viên | Nhân viên của X truy cập sản phẩm của Y | Bị từ chối | P1 |
| TC-ACC-007 | URD-ACC-004 | Super Admin tất cả | Super Admin liệt kê sản phẩm | Mọi sản phẩm trả về; không lọc | P1 |
| TC-ACC-008 | URD-ACC-004 | Admin tất cả | Admin liệt kê sản phẩm | Mọi sản phẩm; bỏ qua lọc | P1 |
| TC-ACC-009 | URD-ACC-001 | Danh sách nhóm hàng được lọc | Chủ liệt kê nhóm hàng | Chỉ nhóm hàng của merchant mình trả về | P1 |
| TC-ACC-010 | URD-PRD-018 | Phạm vi lọc nhóm hàng | Lọc sản phẩm theo nhóm hàng | Chỉ sản phẩm của nhóm hàng đó trả về | P2 |
| TC-ACC-011 | URD-ACC-001 | Vai trò không nhận dạng | Vai trò chưa xử lý liệt kê sản phẩm | 403 HOẶC rỗng với tín hiệu thiếu-quyền rõ ràng — không bao giờ là danh sách rỗng âm thầm | P1 |
2.8 Ràng buộc (CON)
| TC ID | URD ref | Kịch bản | Các bước | Kỳ vọng | P |
|---|---|---|---|---|---|
| TC-CON-001 | C-01 | Một merchant | Gán một sản phẩm cho một merchant thứ hai | Bị từ chối | P1 |
| TC-CON-002 | C-01 | Khớp nhóm hàng-merchant | Gán một sản phẩm của merchant khác cho một nhóm hàng | Bị từ chối; phải cùng merchant | P1 |
| TC-CON-003 | C-06 | Soft-delete | Tìm bao gồm không hoạt động sau khi xóa | Bản ghi vẫn lấy được; dữ liệu được giữ | P1 |
| TC-CON-004 | URD-PID-003 | Tự sinh định danh | Tạo không có SYSTEM/SLUG | Cả hai tự sinh, duy nhất, nhất quán | P1 |
| TC-CON-005 | C-05 | Tạo aggregate nguyên tử | Tạo aggregate với fare không hợp lệ | Toàn bộ thao tác thất bại; không tạo gì | P1 |
| TC-CON-006 | C-05 | Cập nhật aggregate nguyên tử | Tên hợp lệ + fare không hợp lệ khi cập nhật | Toàn bộ cập nhật thất bại; bản gốc được giữ | P1 |
| TC-CON-007 | C-07 | Lọc vai trò trên danh sách | Chủ liệt kê sản phẩm | Lọc trước khi trả về; số đếm khớp | P1 |
| TC-CON-008 | C-07 | Đếm khớp danh sách | Chủ với 5 sản phẩm đếm | Trả về 5, không phải tổng toàn cục | P1 |
| TC-CON-009 | URD-PRD-003 | Lưu trữ i18n | Tạo với tên EN/VI/JA | Tất cả được lưu; trả về theo locale yêu cầu | P1 |
| TC-CON-010 | C-04 | Một bộ fare | Xem định giá của một biến thể mới | Đúng một bộ fare, tự tạo | P1 |
| TC-CON-011 | C-04 | Tối thiểu một fare | Xem một bộ fare | Ít nhất một fare; fare cuối không thể gỡ | P1 |
| TC-CON-012 | C-05 | Rollback thao tác con | Một bước con của tạo aggregate sản phẩm thất bại | Toàn bộ giao dịch rollback; không có orphan | P1 |
| TC-CON-013 | C-05 | Quyền sở hữu giao dịch của caller | Một caller truyền giao dịch của chính nó vào một lookup | Lookup không commit cũng không rollback; caller giữ quyền kiểm soát | P2 |
3. Truy vết
Mỗi yêu cầu Must ánh xạ tới ≥1 test case. Các mục Planned / In-progress được gắn cờ.
| Yêu cầu URD | Test case | Trạng thái |
|---|---|---|
| URD-PRD-001 | TC-PRD-001, -002, -003, -026 | ✅ Đã phủ |
| URD-PRD-002 | TC-PRD-001 | ✅ Đã phủ |
| URD-PRD-003 | TC-PRD-004, -005, TC-CON-009 | ✅ Đã phủ |
| URD-PRD-004 | TC-PRD-001 | ✅ Đã phủ |
| URD-PRD-005 | TC-PRD-006, -007, -029 | ✅ Đã phủ |
| URD-PRD-006 | TC-PRD-008, -009, -023, -025 | ✅ Đã phủ |
| URD-PRD-007 | TC-PRD-010, -011, -027 | ✅ Đã phủ |
| URD-PRD-008 | TC-PRD-012, -013, -014, -024 | ✅ Đã phủ |
| URD-PRD-009 | TC-PRD-015, -016, TC-ACC-009 | ✅ Đã phủ |
| URD-PRD-013 | TC-PRD-017, -018 | ✅ Đã phủ |
| URD-PRD-014 | TC-PRD-019, -020, -028, -029 | ✅ Đã phủ |
| URD-PRD-015 | TC-PRD-033, -034 | ✅ Đã phủ |
| URD-PRD-016 | TC-PRD-021 | ✅ Đã phủ |
| URD-PRD-017 | TC-PRD-030, -031 | ✅ Đã phủ |
| URD-PRD-018 | TC-PRD-032, TC-ACC-010 | ✅ Đã phủ |
| URD-PRD-019 | TC-PRD-022 | ⚠️ Planned (Could) |
| URD-CAT-001 | TC-CAT-001, -002 | ✅ Đã phủ |
| URD-CAT-002 | TC-CAT-003 | ✅ Đã phủ |
| URD-CAT-003 | TC-CAT-004, -005, -006 | ✅ Đã phủ |
| URD-CAT-004 | TC-CAT-007, -008 | ✅ Đã phủ |
| URD-VAR-001 | TC-VAR-001, -002, -014, -015, -016, -017, -018, -023, -024 | ✅ Đã phủ |
| URD-VAR-002 | TC-VAR-003 | ✅ Đã phủ |
| URD-VAR-003 | TC-VAR-004, -005 | ✅ Đã phủ |
| URD-VAR-004 | TC-VAR-006, -007, -020, -021 | ✅ Đã phủ |
| URD-VAR-005 | TC-VAR-004, -008 | ✅ Đã phủ |
| URD-VAR-006 | TC-VAR-011 | ✅ Đã phủ |
| URD-VAR-007 | TC-VAR-009, -010 | ✅ Đã phủ |
| URD-VAR-008 | TC-VAR-012, -013, -022 | ✅ Đã phủ |
| URD-VAR-009 | — | ⚠️ Lưu trữ UOM đã xây; chưa có TC riêng |
| URD-VAR-010 | — | ⚠️ Bundle đã xây; phủ trong tài liệu dev, chưa có TC module |
| URD-VAR-011 | TC-VAR-019 | ⚠️ Planned (kiểm tra lỗi chưa-triển-khai) |
| URD-VAR-012 | — | ⚠️ Planned (không TC) |
| URD-FAR-001 | TC-FAR-001, -002, TC-CON-010 | ✅ Đã phủ |
| URD-FAR-002 | TC-FAR-003, -004, TC-CON-011 | ✅ Đã phủ |
| URD-FAR-003 | TC-FAR-005, -006 | ✅ Đã phủ |
| URD-FAR-004 | TC-FAR-007, -008, -009, -016, -017 | ✅ Đã phủ |
| URD-FAR-005 | TC-FAR-010, -011 | ✅ Đã phủ |
| URD-FAR-006 | TC-FAR-012, -013, -014 | ✅ Đã phủ |
| URD-FAR-007 | TC-FAR-015 | ✅ Đã phủ |
| URD-PID-001 | TC-PID-001, -002, -007 | ✅ Đã phủ |
| URD-PID-002 | TC-PID-003 | ✅ Đã phủ |
| URD-PID-003 | TC-PID-004, -005, TC-CON-004 | ✅ Đã phủ |
| URD-PID-004 | TC-PID-006, -007, -008, TC-VAR-022 | ✅ Đã phủ |
| URD-CMP-001 | TC-CMP-001, -002, -003 | ⚠️ In-progress (chỉ CRUD) |
| URD-CMP-002 | TC-CMP-004 | ⚠️ In-progress |
| URD-CMP-003 | TC-CMP-005 | ⚠️ Planned (tính toán bị tắt) |
| URD-ACC-001 | TC-ACC-001, -002, -009, -011 | ✅ Đã phủ |
| URD-ACC-002 | TC-ACC-003, -004 | ✅ Đã phủ |
| URD-ACC-003 | TC-ACC-005, -006 | ✅ Đã phủ |
| URD-ACC-004 | TC-ACC-007, -008 | ✅ Đã phủ |
Tóm tắt: mọi yêu cầu Must đã được phủ. Các khoảng trống chỉ giới hạn ở các mục Planned / In-progress (URD-PRD-019, URD-VAR-011/012, URD-CMP-003) và hai mục Should đã-xây-nhưng-chưa-test (URD-VAR-009 UOM, URD-VAR-010 bundle) được gắn cờ cho việc viết test tương lai.