Skip to content

Test Cases: Thiết bị

ModuleCORE-04URDDevice URD

Mức ưu tiên = P1 (nghiêm trọng) / P2 (lớn) / P3 (nhỏ), kế thừa từ mức MoSCoW của URD (Must → P1, Should → P2, Could → P3). Các bước theo GIVEN → WHEN; cột Kỳ vọng là THEN.

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

VùngURD reqsTest caseĐã phủ
Đăng ký & quản lý thiết bịDEV1938
Ứng dụng di độngMOB615
Ứng dụng webWEB513
Máy POSPOS514
Máy inPRN1229
Máy quét mã vạchSCN720
SoundBoxSBX619
SoftPOS / NFCNFC47
Giám sát tình trạngMON512
Tổng69167

Ba test case (TC-PRN-029, TC-SCN-014, cùng các case terminal) kiểm tra hành vi chưa được triển khai — xem phát hiện QE inline. Chúng được viết theo hành vi kỳ vọng và vẫn thất bại cho đến khi các khoảng trống được khắc phục.

2. Test Cases

2.1 Đăng ký & Quản lý Thiết bị (DEV)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-DEV-001URD-DEV-002Sinh định danhAdmin tạo một thiết bịD_YYYYMMDD_<id> duy nhất được gán; không sửa đượcP1
TC-DEV-002URD-DEV-002Duy nhất trong ngàyTạo nhiều thiết bị cùng ngàyĐịnh danh khác nhau; không trùngP1
TC-DEV-003URD-DEV-003Lưu tên i18nTạo với tên VI + ENCả hai locale được lưu và truy xuất đượcP1
TC-DEV-004URD-DEV-003Tên một localeChỉ cung cấp locale chínhLocale rỗng lưu là null; không lỗiP1
TC-DEV-005URD-DEV-003Thiếu tên bị từ chốiTạo với tất cả locale rỗngBị từ chối; bắt buộc tên locale chínhP1
TC-DEV-006URD-DEV-001Loại hợp lệTạo với từng loại hợp lệMỗi loại được tạo; loại lưu như cung cấpP1
TC-DEV-007URD-DEV-001Loại không hợp lệ bị từ chốiTạo với loại "KIOSK"Bị từ chối; liệt kê giá trị được chấp nhậnP1
TC-DEV-008URD-DEV-004Trạng thái mặc địnhXem một thiết bị mớiTrạng thái là NEWP1
TC-DEV-009URD-DEV-005Kích hoạtKích hoạt một thiết bị NEWTrạng thái ACTIVATED; khả dụng cho POSP1
TC-DEV-010URD-DEV-006Vô hiệu hóaVô hiệu hóa một thiết bị ACTIVATEDTrạng thái DEACTIVATED; dữ liệu được giữP1
TC-DEV-011URD-DEV-007Tạm ngưngTạm ngưng một thiết bịTrạng thái SUSPENDED; không thể giao dịchP1
TC-DEV-012URD-DEV-008Lưu trữLưu trữ một thiết bị SUSPENDED/DEACTIVATEDTrạng thái ARCHIVED; ẩn khỏi danh sách hoạt độngP1
TC-DEV-013URD-DEV-004ARCHIVED là cuốiKích hoạt lại một thiết bị ARCHIVEDBị từ chối; vẫn ARCHIVEDP1
TC-DEV-014URD-DEV-004Nhảy không hợp lệNEW → ARCHIVED trực tiếpBị từ chối là chuyển trạng thái không hợp lệP1
TC-DEV-015URD-DEV-001Liên kết orgTạo dưới ORG-001Thiết bị liên kết với ORG-001P1
TC-DEV-016URD-DEV-001Bắt buộc orgTạo không có tổ chứcBị từ chối; bắt buộc tổ chứcP1
TC-DEV-017URD-DEV-016Gán merchantGán vào merchant M1Liên kết với M1; truy xuất được qua bộ lọc merchantP1
TC-DEV-018URD-DEV-016Hủy gán merchantGỡ gán merchantKhông còn tham chiếu merchant; vẫn thuộc orgP1
TC-DEV-019URD-DEV-017Thông tin phần cứngĐặt đầy đủ thông tin phần cứngMọi trường được lưu và trả vềP2
TC-DEV-020URD-DEV-017Phần cứng một phầnChỉ đặt nhà sản xuất + mẫu mãTrường rỗng là null; không lỗiP2
TC-DEV-021URD-DEV-018Thông tin phần mềmĐặt thông tin phần mềmMọi trường được lưu và trả vềP2
TC-DEV-022URD-DEV-011Lưu mãTạo với mã "POS-STORE-01"Mã được lưu; truy xuất đượcP1
TC-DEV-023URD-DEV-011Mã trùngTái sử dụng "POS-STORE-01"Bị từ chối; mã đã dùngP1
TC-DEV-024URD-DEV-011Mã nullHai thiết bị không có mãCả hai được tạo; null không phải là trùngP1
TC-DEV-025URD-DEV-009Soft deleteXóa một thiết bịSoft-deleted; ẩn khỏi danh sách mặc địnhP1
TC-DEV-026URD-DEV-009Bao gồm-đã-xóaTruy vấn với include-deletedTrả về với dữ liệu nguyên vẹnP1
TC-DEV-027URD-DEV-010Chưa xác thựcGọi bất kỳ endpoint thiết bị401; không trả dữ liệuP1
TC-DEV-028URD-DEV-010JWT hợp lệLiệt kê thiết bị với JWTĐược chấp nhận; trả thiết bị trong phạm viP1
TC-DEV-029URD-DEV-010Basic authGọi endpoint với Basic AuthĐược chấp nhận; trả dữ liệuP1
TC-DEV-030URD-DEV-013Tự đăng kýĐăng nhập app lần đầu trên thiết bị mớiThiết bị tự tạo, đặt ACTIVATED, liên kếtP1
TC-DEV-031URD-DEV-013Không trùngĐăng nhập lại trên thiết bị đã biếtBản ghi hiện có được tái sử dụngP1
TC-DEV-032URD-DEV-012Thông tin bảo trìĐặt ngày mua/bảo hành/bảo trìĐược lưu và trả vềP2
TC-DEV-033URD-DEV-012Bảo hành quá hạnĐặt ngày bảo hành trong quá khứĐược lưu; cho phép ngày quá khứP2
TC-DEV-034URD-DEV-014Tìm theo tênTìm "POS Counter"Trả thiết bị khớp; loại trừ phần còn lạiP1
TC-DEV-035URD-DEV-014Tìm bỏ dấuTìm không dấuKhớp nếu cấu hình chuẩn hóa; có ghi chúP1
TC-DEV-036URD-DEV-015Nhập CSVTải lên CSV hợp lệThiết bị được tạo; tóm tắt thành công/thất bạiP2
TC-DEV-037URD-DEV-015Dòng CSV lỗiTải lên CSV thiếu trườngDòng không hợp lệ bị từ chối; dòng hợp lệ được nhập; báo cáo nêu lý doP2
TC-DEV-038URD-DEV-015Xuất CSVYêu cầu xuấtTrả CSV bản ghi thiết bị trong phạm viP2

2.2 Ứng dụng Di động (MOB)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-MOB-001URD-MOB-001iOS 14Cài/khởi chạy trên iOS 14Khởi chạy; truy cập được màn hình lõiP1
TC-MOB-002URD-MOB-001Android 8Cài/khởi chạy trên Android 8Khởi chạy; truy cập được màn hình lõiP1
TC-MOB-003URD-MOB-001Chặn iOS 13Cài trên iOS 13Bị chặn / lỗi OS tối thiểuP1
TC-MOB-004URD-MOB-001Chặn Android 7Cài trên Android 7Bị chặn; tối thiểu Android 8P1
TC-MOB-005URD-MOB-002Màn hình chủ sở hữuChủ sở hữu điều hướng appPOS, Đơn hàng, Thanh toán, Hóa đơn, Báo cáo truy cập đượcP1
TC-MOB-006URD-MOB-002Hạn chế vai tròThu ngân mở báo cáo/hóa đơnBị hạn chế theo vai tròP1
TC-MOB-007URD-MOB-003Màn hình thu ngânThu ngân dùng appPOS, đơn hàng, thanh toán, biên nhận truy cập đượcP1
TC-MOB-008URD-MOB-003Chặn màn hình chủ-sở-hữuThu ngân mở màn hình chủ sở hữuBị từ chối / ẩnP1
TC-MOB-009URD-MOB-004Máy in BTMở cài đặt máy in BTMáy in đã ghép nối được phát hiện và chọn đượcP2
TC-MOB-010URD-MOB-004BT bị tắtKết nối thiết bị ngoại vi khi tắt BTNhắc bật BT; không crashP2
TC-MOB-011URD-MOB-005Đơn hàng offlineTạo bán hàng khi offlineLưu cục bộ; báo offline; xếp hàngP2
TC-MOB-012URD-MOB-005Đồng bộ khi kết nối lạiKết nối lại với đơn hàng chờĐơn xếp hàng tự đồng bộ; trạng thái hiển thịP2
TC-MOB-013URD-MOB-005Giới hạn offlineThao tác thời gian thực khi offlineThông báo không khả dụng rõ ràng; không crashP2
TC-MOB-014URD-MOB-006Phiên khi đăng nhậpĐăng nhập trên thiết bị đã đăng kýPhiên được tạo và liên kếtP1
TC-MOB-015URD-MOB-006Phiên thiết bị-mớiĐăng nhập lần đầu trên thiết bị mớiTự đăng ký (URD-DEV-013); phiên liên kếtP1

2.3 Ứng dụng Web (WEB)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-WEB-001URD-WEB-001ChromeMở trong Chrome 90+Tải; các module hoạt độngP1
TC-WEB-002URD-WEB-001FirefoxMở trong Firefox 88+Tải; các module hoạt độngP1
TC-WEB-003URD-WEB-001SafariMở trong Safari 14+Tải; các module hoạt độngP1
TC-WEB-004URD-WEB-001EdgeMở trong Edge 90+Tải; các module hoạt độngP1
TC-WEB-005URD-WEB-001Trình duyệt cũMở trong Chrome 89Cảnh báo trình duyệt không hỗ trợ; không crash âm thầmP1
TC-WEB-006URD-WEB-002Menu chủ sở hữuChủ sở hữu điều hướng back-officeDashboard, Danh mục, Tồn kho, CRM, Báo cáo, Cài đặt truy cập đượcP1
TC-WEB-007URD-WEB-002Hạn chế vai tròThu ngân mở Cài đặt/Báo cáoBị hạn chế; không lộ dữ liệuP1
TC-WEB-008URD-WEB-003Web POSKích hoạt chế độ Web POSGiao diện POS với tra cứu sản phẩm + giỏ hàngP2
TC-WEB-009URD-WEB-003Web POS không thiết bị ngoại viIn khi không có máy in BT/USBThông báo hỗ trợ hạn chế; thay thế bằng PDF/emailP2
TC-WEB-010URD-WEB-004Nâng cấp HTTPSTruy cập qua HTTPChuyển hướng sang HTTPSP1
TC-WEB-011URD-WEB-004Hết hạn phiênPhiên hết hạnVô hiệu; 401; chuyển hướng đăng nhậpP1
TC-WEB-012URD-WEB-0051024pxCửa sổ ở 1024pxĐầy đủ chức năng; không cắt xénP2
TC-WEB-013URD-WEB-005Dưới chiều rộng tối thiểuCửa sổ ở 800pxThông báo cần viewport rộng hơn; chế độ thu gọn dùng đượcP2

2.4 Máy POS (POS)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-POS-001URD-POS-001Cấu hình tối thiểuKhởi chạy trên Android 8, 2 GB RAMKhởi chạy; POS hoạt độngP1
TC-POS-002URD-POS-001Dưới RAMKhởi chạy trên 1 GB RAMLỗi RAM tối thiểu rõ ràng hoặc suy giảm có ghi chúP1
TC-POS-003URD-POS-001Chặn iOSCài trên iOSBị chặn; chỉ Android 8+P1
TC-POS-004URD-POS-002Màn hình POSMở màn hình POSGiao diện toàn màn hình; tra cứu + giỏ hàng hiển thịP1
TC-POS-005URD-POS-002Tìm sản phẩmTìm theo tênHiển thị khớp; thêm được vào giỏ hàngP1
TC-POS-006URD-POS-002Không khớpTìm không có kết quảTrạng thái rỗng; không crashP1
TC-POS-007URD-POS-003Đầu đọc thẻXử lý thanh toán thẻĐầu đọc tích hợp được gọi; thanh toán xử lýP1
TC-POS-008URD-POS-003Máy in tích hợpHoàn tất một giao dịchHóa đơn in trên máy in tích hợpP1
TC-POS-009URD-POS-003Máy quét tích hợpQuét một mã vạchSản phẩm được tra cứu và thêmP1
TC-POS-010URD-POS-003Ngăn kéo tiềnHoàn tất thanh toán tiền mặtNgăn kéo mở qua kích hoạt máy inP1
TC-POS-011URD-POS-004VNPAY V-POSCài trên V-POSMọi tính năng + tích hợp phần cứng hoạt độngP2
TC-POS-012URD-POS-004Sunmi T2Cài trên Sunmi T2Mọi tính năng POS hoạt độngP2
TC-POS-013URD-POS-005Thiết lập thiết bị ngoại viMở Cài đặt > Thiết bịThiết bị BT được liệt kê và kết nối đượcP1
TC-POS-014URD-POS-005BT bị tắtThêm thiết bị ngoại vi BT khi tắt BTNhắc bật; màn hình vẫn hoạt độngP1

2.5 Máy in (PRN)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-PRN-001URD-PRN-001Ghép nối BTGhép nối một máy in BTĐược phát hiện; ghép nối; báo đã kết nốiP1
TC-PRN-002URD-PRN-001Kết nối USBKết nối máy in USBTự phát hiện; chọn đượcP1
TC-PRN-003URD-PRN-001Kết nối mạngCấu hình theo IPKết nối; in thử thành côngP1
TC-PRN-004URD-PRN-001Máy in tắtKết nối máy in BT đã tắt nguồnThông báo không liên lạc được; thử lại; không crashP1
TC-PRN-005URD-PRN-002USB class 0x07Quét thiết bị USBMáy in được phát hiện qua class 0x07P1
TC-PRN-006URD-PRN-002Loại trừ HIDQuét khi gắn bàn phím HIDHID không liệt kê là máy inP1
TC-PRN-007URD-PRN-003Hóa đơn hỗn hợpIn chữ + hình ảnh + QR + mã vạchMọi phần tử in đúngP1
TC-PRN-008URD-PRN-003Lệnh lỗiGửi chuỗi lệnh không hỗ trợXử lý mượt mà; thông báo người dùng; không crashP1
TC-PRN-009URD-PRN-004Kiểu markupIn căn lề/đậm/gạch chân/cao gấp đôiMỗi kiểu hiển thị đúngP1
TC-PRN-010URD-PRN-004Căn lề từng dòngCác dòng L/C liên tiếpCăn lề độc lập; không lemP1
TC-PRN-011URD-PRN-005Raster PDFIn một hóa đơn PDFDither Floyd–Steinberg; đọc đượcP1
TC-PRN-012URD-PRN-005PDF màuIn ảnh màu đầy đủDither đơn sắc; không crashP1
TC-PRN-013URD-PRN-006Chữ tiếng ViệtIn "Cà phê sữa đá"Đúng qua code page 28; không thay thế ký tựP1
TC-PRN-014URD-PRN-006Bộ ký tự hỗn hợpVI + ASCII trên một dòngCả hai hiển thị đúngP1
TC-PRN-015URD-PRN-00758mmIn trên 58mmĐịnh dạng cho 58mm; không cắt cụtP1
TC-PRN-016URD-PRN-00780mmIn trên 80mmBố cục 80mm toàn chiều rộngP1
TC-PRN-017URD-PRN-007Lệch khổMẫu 80mm in trên 58mmĐịnh dạng lại hoặc cảnh báo; không cắt cụt âm thầmP1
TC-PRN-018URD-PRN-008Tự cắtIn trên máy in có dao cắtLệnh tự cắt được gửiP2
TC-PRN-019URD-PRN-008Không dao cắtIn trên máy in không dao cắtHoàn tất; không lệnh cắt; không crashP2
TC-PRN-020URD-PRN-009Ngăn kéoHoàn tất thanh toán tiền mặtKích hoạt ngăn kéo qua máy in; mởP2
TC-PRN-021URD-PRN-010Kết nốiGọi connectĐã kết nối; lệnh in định tuyến tới đâyP1
TC-PRN-022URD-PRN-010Ngắt kết nốiGọi disconnectĐã ngắt; xử lý mượt màP1
TC-PRN-023URD-PRN-010Gửi lệnhGửi một hóa đơn hợp lệXếp hàng, in; trả thành côngP1
TC-PRN-024URD-PRN-010Không có máy inGửi lệnh khi không kết nối máy inTrả lỗi; hiển thị; không thất bại âm thầmP1
TC-PRN-025URD-PRN-011Kết nối WSThêm máy in mạngWebSocket kết nối; in thử thành côngP2
TC-PRN-026URD-PRN-011WS rớtMáy in mất liên lạc giữa lệnhPhát hiện lỗi; thông báo; đề nghị kết nối lạiP2
TC-PRN-027URD-PRN-012WebUSBIn trong Web POS với USBDùng WebUSB; hóa đơn được inP1
TC-PRN-028URD-PRN-012Không WebUSBIn khi WebUSB không hỗ trợThông báo rõ ràng; đề xuất thay thếP1
TC-PRN-029URD-PRN-010Xác nhận & in hóa đơnChạm "Confirm & Print Invoice" trên màn hình thành côngLệnh được gửi; hóa đơn được in; đơn nháp được tạoP1

Phát hiện QE — TC-PRN-029 hiện thất bại

apps/sale-renderer/.../payment-dialog/stepper/success/PaymentSuccess.tsx — nhánh in ghi log "Print invoice functionality to be implemented" và không gửi lệnh in. "Confirm & Print Invoice" âm thầm bỏ qua việc in. TC-PRN-029 kiểm tra hành vi kỳ vọng sau khi được triển khai.

2.6 Máy quét Mã vạch (SCN)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-SCN-001URD-SCN-001USB HIDQuét với máy quét USB HIDPhát hiện không cần thiết lập; tra cứu kích hoạtP1
TC-SCN-002URD-SCN-001BT HIDQuét với máy quét BT HIDNhận như sự kiện bàn phím; tra cứu kích hoạtP1
TC-SCN-003URD-SCN-00213 ký tựEAN-13 + Enter trong 100msBắt trọn mã vạch; tìm kiếm kích hoạtP1
TC-SCN-004URD-SCN-002Gõ thủ côngGõ 8 ký tự chậm, không EnterHook không kích hoạt; xem như nhập văn bảnP1
TC-SCN-005URD-SCN-002Tối thiểu 10Đúng 10 ký tự + EnterChấp nhận; tìm kiếm kích hoạtP1
TC-SCN-006URD-SCN-002Tối đa 20Đúng 20 ký tự + EnterChấp nhận; tìm kiếm kích hoạtP1
TC-SCN-007URD-SCN-002Dưới tối thiểu9 ký tựKhông tìm kiếm; dưới ngưỡngP1
TC-SCN-008URD-SCN-002Trên tối đa21 ký tựKhông tìm kiếm; hành vi có ghi chúP1
TC-SCN-009URD-SCN-003Kích hoạt Enter13 ký tự + EnterTìm kiếm kích hoạt ngay khi EnterP1
TC-SCN-010URD-SCN-003Kích hoạt timeout13 ký tự, không Enter, dừng 100msTimeout hoàn tất quét; tìm kiếm kích hoạtP1
TC-SCN-011URD-SCN-004Mở cameraMở máy quét QR có quyềnHiển thị khung ngắm; bắt đầu quétP1
TC-SCN-012URD-SCN-004Từ chối quyềnMở máy quét QR, tắt quyềnLỗi; hướng dẫn cấp quyềnP1
TC-SCN-013URD-SCN-004Giải mã QRĐưa một mã QRBắt được; callback kích hoạt; máy quét đóngP1
TC-SCN-014URD-SCN-004Bật/tắt đèn flashChạm đèn flash trong tốiĐèn bật; khung ngắm sáng; chạm lại tắtP1
TC-SCN-015URD-SCN-005Thêm vào giỏQuét mã vạch đã biết trên POSSản phẩm tra cứu; thêm được trong một chạmP1
TC-SCN-016URD-SCN-005Không tìm thấyQuét mã vạch không xác định"Không tìm thấy sản phẩm"; giỏ hàng không đổiP1
TC-SCN-017URD-SCN-006Định dạng 1DQuét EAN-13 + Code 128Cả hai giải mã; sản phẩm đúngP2
TC-SCN-018URD-SCN-006Định dạng 2DQuét QR + Data MatrixCả hai giải mã; dữ liệu đúngP2
TC-SCN-019URD-SCN-007Ngữ cảnh sản phẩmQuét trên tìm sản phẩmKết quả được điền; sản phẩm trả vềP2
TC-SCN-020URD-SCN-007Ngữ cảnh hóa đơnQuét QR hóa đơn trên tra cứuKết quả được điền; hóa đơn trả vềP2

Phát hiện QE — TC-SCN-014 hiện thất bại

apps/sale-renderer/.../modal/QRScannerModal.tsx — lời gọi đèn flash invoke('plugin:barcode-scanner|toggle_torch') đang bị comment. Giao diện bật/tắt lật isTorchOn nhưng đèn flash không thực sự kích hoạt. TC-SCN-014 kiểm tra hành vi kỳ vọng sau khi được bật lại.

2.7 SoundBox (SBX)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-SBX-001URD-SBX-001Ghép nốiGhép nối SoundBox ở chế độ ghép nốiGhép nối; báo đã kết nối; LED xanh sáng đềuP1
TC-SBX-002URD-SBX-001Đã ghép nốiGhép nối cái đang gắn với thiết bị khácThất bại hoặc nhắc xóa; không thất bại âm thầmP1
TC-SBX-003URD-SBX-001Đã tắt nguồnGhép nối SoundBox đã tắt nguồnKhông tìm thấy; hướng dẫn bật nguồn; không crashP1
TC-SBX-004URD-SBX-002Đọc VIThanh toán tiền mặt, locale VIĐọc số tiền + phương thức bằng tiếng ViệtP1
TC-SBX-005URD-SBX-002Đọc ENThanh toán thẻ, locale ENĐọc số tiền + phương thức bằng tiếng AnhP1
TC-SBX-006URD-SBX-002Không có SoundBoxThanh toán khi không kết nốiThanh toán hoàn tất; không đọc; không lỗiP1
TC-SBX-007URD-SBX-003Cấu hình VISoundBox cấu hình VIThông báo bằng tiếng Việt; số đọc đúngP1
TC-SBX-008URD-SBX-003Cấu hình ENSoundBox cấu hình ENThông báo bằng tiếng AnhP1
TC-SBX-009URD-SBX-003Đổi ngôn ngữĐổi VI→EN giữa phiênThông báo kế tiếp bằng tiếng Anh; không kết nối lạiP1
TC-SBX-010URD-SBX-004LED ghép nốiChưa ghép nốiXanh nhấp nháyP2
TC-SBX-011URD-SBX-004LED đã kết nốiĐã ghép nốiXanh sáng đềuP2
TC-SBX-012URD-SBX-004LED thành côngThông báo thành côngNháy xanh láP2
TC-SBX-013URD-SBX-004LED lỗiSự kiện lỗi/thất bạiNháy đỏP2
TC-SBX-014URD-SBX-005Âm lượng tối thiểuĐặt âm lượng 1Phát ở mức tối thiểu; nghe đượcP2
TC-SBX-015URD-SBX-005Âm lượng tối đaĐặt âm lượng 10Phát ở mức tối đa; rõP2
TC-SBX-016URD-SBX-005Ngoài khoảngĐặt 0 hoặc 11Bị từ chối/kẹp về 1–10P2
TC-SBX-017URD-SBX-005Tắt đọc số tiềnTắt đọc số tiềnThông báo bỏ số tiền; phần còn lại không đổiP2
TC-SBX-018URD-SBX-006Đúng phạm viCách thiết bị 10 mNhận thông báo không gián đoạnP2
TC-SBX-019URD-SBX-006Ngoài phạm viCách thiết bị 11 mKết nối có thể rớt; xử lý mượt màP2

2.8 SoftPOS / NFC (NFC)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-NFC-001URD-NFC-001Có NFCMở cài đặt SoftPOS, bật NFCNFC xác nhận; kích hoạt được bậtP1
TC-NFC-002URD-NFC-001Không NFCMở cài đặt SoftPOS, không NFCPhát hiện không khả dụng; kích hoạt bị tắt/ẩn; thông báoP1
TC-NFC-003URD-NFC-003NFC tắtKích hoạt khi NFC bị tắtHướng dẫn bật NFC; kích hoạt dừngP1
TC-NFC-004URD-NFC-002KYC hoàn tấtKích hoạt khi KYC xongSoftPOS kích hoạt; có thể bắt đầu thanh toánP1
TC-NFC-005URD-NFC-002Thiếu KYCKích hoạt khi chưa KYCBị chặn; thông báo yêu cầu KYCP1
TC-NFC-006URD-NFC-004Ẩn trên iOSMở SoftPOS trên iOSTùy chọn không khả dụng; thông báo chỉ AndroidP2
TC-NFC-007URD-NFC-004Luồng AndroidBắt đầu thanh toán không tiếp xúcPlugin NFC/thanh toán được gọi; chờ chạmP2

2.9 Giám sát Tình trạng (MON)

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-MON-001URD-MON-001HeartbeatThiết bị hoạt động theo thời gianHeartbeat mỗi 5 phút; được ghi; giữ onlineP1
TC-MON-002URD-MON-001Mốc 5 phút5 phút từ heartbeat cuốiHeartbeat được gửi; dấu thời gian cập nhật; timer resetP1
TC-MON-003URD-MON-001Mất mạngHeartbeat không gửi đượcGhi log thất bại; tiếp tục khi kết nối lạiP1
TC-MON-004URD-MON-002Offline15 phút không heartbeatTrạng thái → offline; dashboard phản ánhP1
TC-MON-005URD-MON-00214 phút14 phút không heartbeatVẫn online; chưa vượt ngưỡngP1
TC-MON-006URD-MON-002Online lạiHeartbeat sau offlineTrạng thái → online ngay lập tứcP1
TC-MON-007URD-MON-003Danh sách trạng tháiMở danh sách thiết bị (trạng thái hỗn hợp)Mỗi thiết bị hiển thị online/offlineP1
TC-MON-008URD-MON-003LọcLọc chỉ onlineChỉ hiển thị thiết bị onlineP1
TC-MON-009URD-MON-004Vô hiệu hóa từ xaVô hiệu hóa từ xa thiết bị đang hoạt độngTrạng thái DEACTIVATED; phiên kết thúc; ghi logP1
TC-MON-010URD-MON-004Đã tắt sẵnVô hiệu hóa một thiết bị DEACTIVATEDXử lý mượt mà; vẫn DEACTIVATEDP1
TC-MON-011URD-MON-005Xóa từ xaKích hoạt xóa trên thiết bị onlineDữ liệu cache bị xóa; thiết bị vô hiệu hóa; ghi logP2
TC-MON-012URD-MON-005Xóa xếp hàngKích hoạt xóa trên thiết bị offlineXếp hàng; thực thi khi kết nối lạiP2

2.10 Terminal — Phát hiện QE

Các case này liên quan luồng VNPAY Terminal, ngoài phạm vi của phiên bản URD này (thực thể đã tồn tại nhưng chưa đấu nối). Chúng được ghi lại để không bỏ sót các khoảng trống.

TC IDURD refTình huốngCác bướcKỳ vọngP
TC-CON-017URD-POS-002Danh sách terminalMở danh sách Terminal có bản ghi sẵnTerminal hiển thị tên/mã/trạng thái/loại; phân trang hoạt độngP1
TC-CON-018URD-MOB-006Metadata terminalKhởi tạo checkout trên một terminal đã biếtBody thanh toán mang tên/mã terminal thật, không phải placeholderP1

Phát hiện QE — TC-CON-017 / TC-CON-018 hiện thất bại

  • apps/client/.../terminal/list/TerminalTable.tsx — render với rowCount={0}, data={[]} hardcode; chưa đấu nối nguồn dữ liệu, nên bảng luôn rỗng.
  • apps/sale-renderer/.../apis/payment/payment.api.tsmetadata.terminal bị hardcode ({ name: 'SDHVJK11', code: 'SDHVJK11', serviceCode: '03' }) và gửi tới VNPAY cho mọi giao dịch, có nguy cơ thất bại đối soát khi có nhiều terminal.

3. Truy vết

Mọi yêu cầu Must ánh xạ tới ≥1 test case. Không có yêu cầu Must nào chưa được phủ.

Vùng URDYêu cầuTest caseTrạng thái
DEV (URD-DEV-001…019)19TC-DEV-001…038✅ Đã phủ
MOB (URD-MOB-001…006)6TC-MOB-001…015✅ Đã phủ
WEB (URD-WEB-001…005)5TC-WEB-001…013✅ Đã phủ
POS (URD-POS-001…005)5TC-POS-001…014, TC-CON-017✅ Đã phủ
PRN (URD-PRN-001…012)12TC-PRN-001…029✅ Đã phủ*
SCN (URD-SCN-001…007)7TC-SCN-001…020✅ Đã phủ*
SBX (URD-SBX-001…006)6TC-SBX-001…019✅ Đã phủ
NFC (URD-NFC-001…004)4TC-NFC-001…007✅ Đã phủ
MON (URD-MON-001…005)5TC-MON-001…012✅ Đã phủ

*Độ phủ PRNSCN bao gồm TC-PRN-029 và TC-SCN-014, kiểm tra hành vi chưa được triển khai (xem phát hiện QE). Đây là các case dự kiến thất bại cho đến khi khắc phục khoảng trống. TC-CON-017/018 phủ luồng Terminal chưa đấu nối, nằm ngoài phạm vi v0.1.

4. Liên quan

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