Skip to content

Test Cases: Đơn hàng

ModuleCORE-07URDURD Đơn hàng

Các case được căn theo lĩnh vực chức năng URD v0.3 và xác minh với tài liệu lập trình viên Sale Service. Phát hiện QE ghi chú hành vi đã xác nhận trong codebase mà URD không nêu rõ.

1. Tóm tắt Độ phủ

Lĩnh vựcYêu cầu URDTest caseĐã phủ
Sale Order (ORD)1618
Tách hóa đơn (CHK)54
Phiếu bếp (KIT)98
Trạm bếp (STA)33
Phiên POS (POS)86
Đặt bàn (RSV)54
Điểm Loyalty (PNT)33

2. Test Cases

TC-<AREA>-NNN khớp với URD-<AREA>-NNN. Mức ưu tiên = P1 (nghiêm trọng) / P2 (lớn) / P3 (nhỏ).

2.1 Sale Order

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-ORD-001URD-ORD-001Tạo đơn nháp1. Thu ngân đã xác thực cho một merchant 2. Tạo đơnĐơn được tạo với trạng thái DRAFT, giới hạn theo merchant và thiết bịP1
TC-ORD-002URD-ORD-002Thêm sản phẩm vào nháp1. Đơn DRAFT 2. Thêm một sản phẩmLine item được thêm; giá chụp lúc thêm; số lượng mặc định 1P1
TC-ORD-003URD-ORD-002Chặn sửa ngoài DRAFT1. Đơn PROCESSING 2. Thử thêm một mụcBị từ chối — mục chỉ sửa được ở DRAFTP1
TC-ORD-004URD-ORD-003Cùng sản phẩm gộp số lượng1. Đơn DRAFT với Sản phẩm A (qty 1) 2. Thêm Sản phẩm A lạiSố lượng line có sẵn tăng (không line trùng)P2
TC-ORD-005URD-ORD-004Số lượng không gỡ line1. Đơn DRAFT với mục (qty 1) 2. Cập nhật số lượng về 0Line bị gỡ (soft-delete); tổng tính lạiP2
TC-ORD-006URD-ORD-005Combo fan-out1. Đơn DRAFT 2. Thêm một sản phẩm comboMột dòng lead + các dòng con giá-không được tạo trong một giao dịchP1
TC-ORD-007URD-ORD-005Combo thêm lại bị từ chối1. Combo đã trong đơn 2. Thêm cùng comboBị từ chối — dùng sửa để đổi số lượngP2
TC-ORD-008URD-ORD-006Checkout khóa giá1. Sản phẩm thêm ở 50,000 2. Giá catalog đổi thành 60,000 3. CheckoutTổng dùng 50,000 đã khóa, không phải giá catalog mớiP1
TC-ORD-009URD-ORD-006Chuyển checkout1. Đơn DRAFT với ≥1 mục 2. CheckoutTrạng thái DRAFT → PROCESSING; tổng được tínhP1
TC-ORD-010URD-ORD-007Giỏ rỗng bị từ chối1. Đơn DRAFT không mục 2. CheckoutBị từ chối — cần ít nhất một mụcP1
TC-ORD-011URD-ORD-007Số lượng âm bị từ chối1. Đơn DRAFT 2. Đặt số lượng một mục thành -1 khi thêmBị từ chối — số lượng phải ≥ 1P1
TC-ORD-012URD-ORD-008Revert về giỏ1. Đơn PROCESSING 2. RevertTrạng thái PROCESSING → DRAFT; mục sửa được lạiP1
TC-ORD-013URD-ORD-009Cancel không-cuối1. Đơn ở DRAFT / PROCESSING / PARTIAL 2. CancelTrạng thái → CANCELLED; lý do được ghi khi cung cấpP1
TC-ORD-014URD-ORD-009Cancel cuối bị từ chối1. Đơn COMPLETED hoặc CANCELLED 2. CancelBị từ chối — trạng thái cuốiP1
TC-ORD-015URD-ORD-010Thanh toán một phần1. Đơn PROCESSING 2. Thanh toán thành công ít hơn tổngTrạng thái → PARTIALP1
TC-ORD-016URD-ORD-011Thanh toán đủ hoàn tất1. Đơn PROCESSING 2. Thanh toán thành công ≥ tổngTrạng thái → COMPLETEDP1
TC-ORD-017URD-ORD-014Đính khách hàng1. Đơn 2. Đính một khách hàngKhách hàng liên kết; hiển thị trên chi tiết đơnP2
TC-ORD-018URD-ORD-016Biên số mục tối đa1. Đơn DRAFT với 100 mục 2. Thêm mục thứ 101Bị từ chối — đạt giới hạn số mục tối đaP2

Phát hiện QE — xóa số-lượng-không

Nguồn sale-order-item.service.ts: cập nhật một line về số lượng ≤ 0 soft-delete nó thay vì báo lỗi validation. TC-ORD-005 validate quy ước này; URD không nêu rõ.

Phát hiện QE — checkout không khóa mục

Nguồn checkout.service.ts: checkout đọc mục rồi gọi pricing không có khóa bi quan xuyên hai bước, nên một lần sửa mục đồng thời khi checkout là một race tiềm tàng. TC-ORD-008 / TC-ORD-009 giả định không sửa đồng thời.

Phát hiện QE — số mục tối đa = 100

Nguồn sale.service.ts: addSaleOrderItem áp MAX_NUMBER_OF_ITEMS_IN_ORDER = 100 với khóa bi quan. TC-ORD-018 validate biên.

2.2 Tách hóa đơn

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-CHK-001URD-CHK-001Tách thành check1. Đơn 2. Tách thành nhiều checkNhiều sale check được tạo dưới đơnP2
TC-CHK-002URD-CHK-002Phân bổ mục cho check1. Đơn đã tách 2. Gán mục / số lượng cho một checkMỗi check giữ mục được phân bổ và tổng của nóP2
TC-CHK-003URD-CHK-004Đơn hoàn tất qua check1. Mọi check trên một đơn đã hoàn tấtTrạng thái đơn → COMPLETEDP2
TC-CHK-004URD-CHK-005Rollback tách1. Đơn đã tách, chưa check nào trả 2. RollbackCheck bị gỡ; đơn trở về một bill duy nhấtP3

2.3 Phiếu bếp

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-KIT-001URD-KIT-001Gửi tới bếp1. Đơn với mục 2. Gửi tới bếpPhiếu + mục phiếu được tạoP1
TC-KIT-002URD-KIT-002Gửi idempotent1. Gửi với một key idempotency 2. Thử lại với cùng keyKhông phiếu trùng được tạoP1
TC-KIT-003URD-KIT-003Vòng đời phiếu1. Phiếu mới 2. Tiến mụcPhiếu di chuyển PENDING → PROCESSING → READY → COMPLETEDP1
TC-KIT-004URD-KIT-004Vòng đời mục1. Mục phiếu 2. Bắt đầu nấu → sẵn sàng → đã phục vụMục di chuyển PENDING → COOKING → READY → SERVEDP1
TC-KIT-005URD-KIT-005Tự-tiến1. Đánh dấu mọi mục READYPhiếu tự-tiến tới READY không cần cập nhật phiếu thủ côngP1
TC-KIT-006URD-KIT-006Void và gửi lại1. Mục phiếu đã gửi 2. Cần đổi số lượngSửa tại chỗ không cho phép; void cũ + gửi mớiP2
TC-KIT-007URD-KIT-008Cập nhật real-time1. KDS đã kết nối 2. Trạng thái mục đổiKDS và dashboard nhận cập nhật liveP1
TC-KIT-008URD-KIT-009Phục vụ kích tiêu thụ1. Mục bếp đánh dấu đã phục vụTiêu thụ tồn được kích cho mục đóP2

Phát hiện QE — event real-time là fire-and-forget

Nguồn checkout.service.ts, payment-webhook.service.ts: broadcast WebSocket không được await. Một broadcast thất bại được log nhưng không rollback thao tác đơn. TC-KIT-007 phủ việc gửi, không phủ đảm bảo gửi.

2.4 Trạm bếp

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-STA-001URD-STA-001Tạo trạm1. Quản lý 2. Tạo một trạm có tên (i18n)Trạm được tạo và giới hạn theo merchantP2
TC-STA-002URD-STA-002Định tuyến nhóm hàng1. Map một nhóm hàng sản phẩm tới một trạm 2. Gửi các mục đóPhiếu của chúng định tuyến tới trạm được mapP2
TC-STA-003URD-STA-003Cấu hình máy in trạm1. Cấu hình một máy in trạm với auto-printPhiếu mới ở trạm đó auto-printP3

2.5 Phiên POS

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-POS-001URD-POS-001Mở phiên1. Không có phiên mở trên thiết bị 2. Mở với tiền mở caPhiên được tạo OPEN với tiền mở caP1
TC-POS-002URD-POS-002Một phiên mỗi thiết bị1. Mở phiên trên thiết bị 2. Mở cái khác trên cùng thiết bịBị từ chối — một phiên mở mỗi thiết bịP1
TC-POS-003URD-POS-003Đóng & đối chiếu1. Phiên mở 2. Đóng với tiền đếm đượcChênh lệch = thực tế − kỳ vọng được ghiP1
TC-POS-004URD-POS-004Báo cáo Z một lần1. Đóng phiênĐúng một báo cáo Z (PosSessionReport) được sinhP1
TC-POS-005URD-POS-006Đơn đính vào phiên1. Phiên mở 2. Tạo một đơn trên thiết bịĐơn liên kết với phiên đang mởP2
TC-POS-006URD-POS-008Đếm lại khi đóng1. Đóng, rồi đóng lại với một số đếm đã sửaĐếm lại được theo dõi; số liệu cuối được cập nhậtP3

2.6 Đặt bàn

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-RSV-001URD-RSV-001Tạo đặt bàn1. Lễ tân 2. Tạo với tên khách, điện thoại, số khách, giờĐặt bàn PENDING; bàn được giữ (phân bổ hoạt động)P2
TC-RSV-002URD-RSV-002Xác nhận rồi check in1. Xác nhận đặt bàn 2. Check inPENDING → CONFIRMED → CHECKED_INP2
TC-RSV-003URD-RSV-005Check-in sinh đơn1. Đặt bàn đã xác nhận 2. Check inSale order sinh và liên kết; phân bổ được nhắm lạiP2
TC-RSV-004URD-RSV-002Cancel đặt bàn1. Đặt bàn PENDING hoặc CONFIRMED 2. CancelTrạng thái → CANCELLED; bàn được giữ được giải phóngP2

2.7 Điểm Loyalty

TC IDURD refKịch bảnCác bướcKỳ vọngP
TC-PNT-001URD-PNT-001Tích khi hoàn tất1. Đơn với một khách hàng liên kết 2. Thanh toán thành côngĐiểm được cấp cho đơn hoàn tấtP2
TC-PNT-002URD-PNT-002Cấp idempotent1. Event payment-success trùng cho cùng đơnĐiểm được cấp chỉ một lầnP2
TC-PNT-003URD-PNT-003Số dư theo merchant1. Khách hàng tích qua các đơnSố dư cộng dồn theo từng khách hàng theo từng merchantP3

3. Truy vết

Mỗi yêu cầu Must ánh xạ tới ≥1 test case. Khoảng trống được gắn cờ.

Yêu cầu URDTest caseTrạng thái
URD-ORD-001TC-ORD-001✅ Đã phủ
URD-ORD-002TC-ORD-002, TC-ORD-003✅ Đã phủ
URD-ORD-003TC-ORD-004✅ Đã phủ
URD-ORD-004TC-ORD-005✅ Đã phủ
URD-ORD-005TC-ORD-006, TC-ORD-007✅ Đã phủ
URD-ORD-006TC-ORD-008, TC-ORD-009✅ Đã phủ
URD-ORD-007TC-ORD-010, TC-ORD-011✅ Đã phủ
URD-ORD-008TC-ORD-012✅ Đã phủ
URD-ORD-009TC-ORD-013, TC-ORD-014✅ Đã phủ
URD-ORD-010TC-ORD-015✅ Đã phủ
URD-ORD-011TC-ORD-016✅ Đã phủ
URD-ORD-012⚠️ Chưa phủ (Should — tách đơn)
URD-ORD-013⚠️ Chưa phủ (Should — gộp đơn)
URD-ORD-014TC-ORD-017✅ Đã phủ
URD-ORD-015⚠️ Chưa phủ (Should — đa tiền tệ)
URD-ORD-016TC-ORD-018✅ Đã phủ
URD-CHK-001TC-CHK-001✅ Đã phủ
URD-CHK-002TC-CHK-002✅ Đã phủ
URD-CHK-003⚠️ Chưa phủ (Should — khách hàng theo từng check)
URD-CHK-004TC-CHK-003✅ Đã phủ
URD-CHK-005TC-CHK-004✅ Đã phủ
URD-KIT-001TC-KIT-001✅ Đã phủ
URD-KIT-002TC-KIT-002✅ Đã phủ
URD-KIT-003TC-KIT-003✅ Đã phủ
URD-KIT-004TC-KIT-004✅ Đã phủ
URD-KIT-005TC-KIT-005✅ Đã phủ
URD-KIT-006TC-KIT-006✅ Đã phủ
URD-KIT-007⚠️ Chưa phủ (Should — rush / thứ tự)
URD-KIT-008TC-KIT-007✅ Đã phủ
URD-KIT-009TC-KIT-008✅ Đã phủ
URD-STA-001TC-STA-001✅ Đã phủ
URD-STA-002TC-STA-002✅ Đã phủ
URD-STA-003TC-STA-003✅ Đã phủ
URD-POS-001TC-POS-001✅ Đã phủ
URD-POS-002TC-POS-002✅ Đã phủ
URD-POS-003TC-POS-003✅ Đã phủ
URD-POS-004TC-POS-004✅ Đã phủ
URD-POS-005⚠️ Chưa phủ (Should — báo cáo X)
URD-POS-006TC-POS-005✅ Đã phủ
URD-POS-007⚠️ Chưa phủ (Should — kỳ vọng vs thực tế phi-tiền-mặt)
URD-POS-008TC-POS-006✅ Đã phủ
URD-RSV-001TC-RSV-001✅ Đã phủ
URD-RSV-002TC-RSV-002, TC-RSV-004✅ Đã phủ
URD-RSV-003⚠️ Chưa phủ (Should — theo dõi nguồn)
URD-RSV-004⚠️ Chưa phủ (Should — gắn thẻ dịp)
URD-RSV-005TC-RSV-003✅ Đã phủ
URD-PNT-001TC-PNT-001✅ Đã phủ
URD-PNT-002TC-PNT-002✅ Đã phủ
URD-PNT-003TC-PNT-003✅ Đã phủ

Mọi yêu cầu Must đều được phủ. Các mục chưa phủ là cải tiến mức Should đang chờ viết test.

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.