Test Case: Báo Cáo Chi Phí Callbot

1. Môi trường kiểm thử

  • Môi trường: Dev (https://dev.app.ucall.vn/dashboard)
  • Tài khoản test: hieuhoang@ucall.asia
  • Workspace: UCALLXXX
  • Luồng truy cập: Icon Ví (💰) trên top-bar → Báo cáo chi phí
  • URL: https://dev.app.ucall.vn/dashboard/ucallxxx5/wallet/expenses

2. Cấu trúc giao diện (theo thực tế)

Ví của tôi / Báo cáo chi phí Callbot
│
├── [Tháng MM, YYYY]                    ← Mỗi tháng là 1 khối riêng
│   ├── ▼ Callbot                       ← Section có thể thu/mở
│   │   ├── ▶ Chiến dịch               ← Panel collapse (danh sách chiến dịch)
│   │   └── ▶ Đơn hàng                 ← Panel collapse (mã đơn thanh toán)
│   │
│   └── Tổng hợp                        ← Bảng metrics bên phải
│       ├── Số dư ban đầu
│       ├── Đã nạp thêm
│       ├── Đã dùng
│       ├── Còn lại (= ban đầu + nạp - dùng)
│       └── ▶ Tổng hợp theo nhân viên  ← Panel collapse
│
├── [Tháng MM-1, YYYY] ...              ← Tháng trước
└── ...

Chú ý phân loại chiến dịch:

  • AI Call Agent: Chiến dịch có badge Agent (màu xanh dương) trong danh sách
  • Callbot truyền thống: Chiến dịch không có badge Agent (dùng kịch bản phím bấm/TTS cơ bản)

3. Test Case: Hiển thị & Cấu trúc Giao Diện

3.1. Tổng quan trang

ID Tên Test Case Các bước thực hiện Kết quả mong đợi Trạng thái
CR_UI_01 Truy cập trang Báo cáo chi phí 1. Click icon Ví (💰) trên top-bar
2. Click “Báo cáo chi phí”
Trang tải thành công với tiêu đề “Ví của tôi / Báo cáo chi phí Callbot”. URL chuyển sang /wallet/expenses.  
CR_UI_02 Hiển thị đúng tiêu đề Breadcrumb Quan sát breadcrumb trên đầu trang Breadcrumb hiển thị: Ví của tôi / Báo cáo chi phí Callbot.  
CR_UI_03 Hiển thị thời gian cập nhật Kiểm tra góc trên bên phải Hiển thị: Cập nhật lần cuối lúc HH:MM:SS DD/MM/YYYY. Đây là thời gian dữ liệu được tính toán gần nhất.  
CR_UI_04 Nút Reload cập nhật dữ liệu Nhấn icon reload (🔄) bên cạnh thời gian cập nhật Trang tải lại, thời gian “Cập nhật lần cuối” được cập nhật sang thời điểm hiện tại.  
CR_UI_05 Hiển thị báo cáo theo tháng Cuộn trang xuống Mỗi tháng (có phát sinh giao dịch) hiển thị thành một khối riêng, sắp xếp từ mới đến cũ (tháng gần nhất ở trên).  
CR_UI_06 Khối Callbot có thể thu gọn Nhấn vào tiêu đề “Callbot” trong một khối tháng Toàn bộ nội dung bên trong (Chiến dịch, Đơn hàng) thu gọn lại. Nhấn lại để mở rộng.  
CR_UI_07 Tháng không có giao dịch Kiểm tra xem tháng không có cuộc gọi nào có xuất hiện không Tháng không có phát sinh chi phí không hiển thị trong danh sách (hoặc hiển thị với tất cả số liệu = 0).  

4. Test Case: Panel “Tổng hợp” – Độ chính xác số liệu

4.1. Kiểm tra công thức tính toán

ID Tên Test Case Các bước thực hiện Kết quả mong đợi Trạng thái
CR_SUM_01 Công thức “Còn lại” tính đúng Mở tháng bất kỳ → kiểm tra panel Tổng hợp Còn lại = Số dư ban đầu + Đã nạp thêm – Đã dùng. Ghi nhận label công thức hiển thị đúng chữ “(= Số dư ban đầu + Đã nạp thêm – Đã dùng)”.  
CR_SUM_02 Số dư ban đầu tháng sau = Còn lại tháng trước So sánh “Số dư ban đầu” của Tháng N+1 với “Còn lại” của Tháng N Hai giá trị phải bằng nhau. Ví dụ: Tháng 04 – Còn lại = 44.187.980 VNĐ → Tháng 05 – Số dư ban đầu = 44.187.980 VNĐ.  
CR_SUM_03 “Đã dùng” khớp tổng chiến dịch Mở rộng panel Chiến dịch trong cùng tháng → Cộng tổng chi phí tất cả chiến dịch Tổng chi phí tất cả chiến dịch trong tháng = giá trị Đã dùng trong panel Tổng hợp. Sai số = 0.  
CR_SUM_04 “Đã nạp thêm” = 0 khi tháng không nạp Kiểm tra tháng không có lịch sử nạp tiền Dòng “Đã nạp thêm” hiển thị 0 VNĐ.  
CR_SUM_05 Số dư ban đầu hiển thị kèm số block Kiểm tra ở một tháng có nhiều cuộc gọi “Số dư ban đầu” hiển thị cả VNĐ lẫn số block tương ứng (VD: 50.589.190 VNĐ220.233 blocks).  
CR_SUM_06 “Đã dùng” không bao gồm giao dịch “Đang chờ” Kiểm tra khi có giao dịch ở trạng thái “Đang chờ” Số tiền “Đang chờ” chưa được tính vào “Đã dùng” (hoặc đã tính, tùy thiết kế – cần xác nhận hành vi).  

5. Test Case: Panel “Chiến dịch” – Danh sách và Chi phí

5.1. Hiển thị danh sách chiến dịch

ID Tên Test Case Các bước thực hiện Kết quả mong đợi Trạng thái
CR_CD_01 Mở rộng panel Chiến dịch Nhấn vào “▶ Chiến dịch” Panel mở rộng, hiển thị danh sách tất cả chiến dịch đã phát sinh chi phí trong tháng đó.  
CR_CD_02 Thu gọn panel Chiến dịch Nhấn vào “▼ Chiến dịch” khi đang mở Panel thu gọn, ẩn danh sách chiến dịch.  
CR_CD_03 Mỗi dòng chiến dịch hiển thị đúng thông tin Quan sát từng dòng trong panel Chiến dịch Mỗi dòng hiển thị: Tên chiến dịchSố tiền đã dùng (dạng âm, VD: -43.180 VNĐ).  
CR_CD_04 Chỉ hiển thị chiến dịch có phát sinh chi phí Kiểm tra các chiến dịch ở trạng thái “Khởi tạo” chưa gọi Những chiến dịch chưa thực hiện cuộc gọi nào không xuất hiện trong danh sách.  
CR_CD_05 Tổng chi phí các dòng chiến dịch = Đã dùng Cộng tay tất cả số tiền trong panel Chiến dịch Tổng phải bằng đúng giá trị “Đã dùng” trong panel Tổng hợp cùng tháng.  

5.2. Phân biệt AI Call Agent và Callbot truyền thống

ID Tên Test Case Loại chiến dịch Các bước thực hiện Kết quả mong đợi Trạng thái
CR_CD_06 Chi phí AI Call Agent cao hơn Callbot thường (cùng số block) AI Agent vs Callbot thường 1. Mở panel Chiến dịch
2. So sánh chi phí/block của chiến dịch Agent và chiến dịch thường có cùng số block
Chi phí/block của AI Call Agent cao hơn Callbot thường do bao gồm phí AI Agent (Steve: +60đ/block; Mark: +110đ/block).  
CR_CD_07 AI Call Agent xuất hiện trong danh sách chiến dịch AI Agent Chạy 1 chiến dịch Call Agent → kiểm tra báo cáo tháng đó Tên chiến dịch AI Call Agent xuất hiện trong panel Chiến dịch với chi phí đúng (tính theo đơn giá AI Agent).  
CR_CD_08 Callbot truyền thống xuất hiện trong danh sách Callbot thường Chạy 1 chiến dịch Callbot truyền thống → kiểm tra báo cáo Tên chiến dịch xuất hiện với chi phí thấp hơn AI Agent (chỉ tính Gọi hàng loạt + Số chung + tính năng cơ bản).  
CR_CD_09 Cùng thời lượng gọi – AI Agent tốn tiền hơn So sánh 2 chiến dịch 1. Tạo 2 chiến dịch (1 Agent, 1 thường) với cùng danh sách và kịch bản tương tự
2. Chạy cả 2 → So sánh chi phí
Chi phí chiến dịch Agent > Callbot thường tương ứng với chênh lệch đơn giá AI Agent.  

6. Test Case: Panel “Tổng hợp theo nhân viên”

ID Tên Test Case Các bước thực hiện Kết quả mong đợi Trạng thái
CR_EMP_01 Mở rộng panel Tổng hợp theo nhân viên Nhấn “▶ Tổng hợp theo nhân viên” Panel mở rộng, liệt kê từng nhân viên và số tiền/block đã sử dụng trong tháng.  
CR_EMP_02 Tổng chi phí theo nhân viên = Đã dùng Cộng tổng chi phí của tất cả nhân viên Tổng = giá trị “Đã dùng” trong Tổng hợp (không tính chi phí không gán nhân viên nếu có).  
CR_EMP_03 Nhân viên không gọi trong tháng Thêm nhân viên mới không thực hiện chiến dịch nào Nhân viên đó không xuất hiện trong Tổng hợp theo nhân viên (hoặc hiển thị với chi phí = 0).  
CR_EMP_04 Chi phí nhân viên = tổng chi phí chiến dịch được gán Chọn 1 nhân viên cụ thể → kiểm tra số tiền Chi phí nhân viên X = Tổng chi phí tất cả chiến dịch mà X được gán làm Nhân viên hoặc Quản lý.  

7. Test Case: Panel “Đơn hàng”

ID Tên Test Case Các bước thực hiện Kết quả mong đợi Trạng thái
CR_ORD_01 Mở rộng panel Đơn hàng Nhấn “▶ Đơn hàng” Panel mở rộng, hiển thị danh sách mã đơn hàng (invoice) tương ứng với các giao dịch nạp/trừ tiền trong tháng.  
CR_ORD_02 Đơn hàng khớp với lịch sử giao dịch Lấy một mã đơn hàng → kiểm tra trong Lịch sử giao dịch Mã đơn hàng tồn tại và khớp dữ liệu trong Lịch sử giao dịch.  

8. Test Case: Xuất báo cáo (“Tải về báo cáo đầy đủ”)

ID Tên Test Case Các bước thực hiện Kết quả mong đợi Trạng thái
CR_EXP_01 Tải báo cáo tháng hiện tại Nhấn “↓ Tải về báo cáo đầy đủ” ở khối Tháng gần nhất File .xlsx được tải về máy thành công.  
CR_EXP_02 Nội dung file Excel đầy đủ Mở file Excel vừa tải File chứa đầy đủ: Danh sách chiến dịch, số block, thành tiền, Tổng hợp (ban đầu/nạp/dùng/còn), Tổng theo nhân viên.  
CR_EXP_03 Số liệu file Excel khớp với UI So sánh từng chỉ số trên UI với file Excel Sai số = 0 cho tất cả các giá trị (Số dư ban đầu, Đã nạp, Đã dùng, Còn lại, chi phí từng chiến dịch).  
CR_EXP_04 Tải báo cáo tháng cũ Nhấn “↓ Tải về báo cáo đầy đủ” ở khối Tháng cũ hơn File .xlsx tương ứng tháng đó được tải về với dữ liệu đúng tháng, không bị nhầm với tháng khác.  
CR_EXP_05 Tên file Excel có chứa tháng Kiểm tra tên file được tải Tên file có chứa thông tin tháng (ví dụ: bao-cao-chi-phi-04-2026.xlsx hoặc tương tự).  

9. Test Case: Edge Cases & Kiểm tra Toàn Vẹn Dữ Liệu

ID Tên Test Case Kịch bản Kết quả mong đợi Trạng thái
CR_EDGE_01 Tháng đầu tiên sử dụng Workspace mới được tạo, tháng đầu tiên chạy chiến dịch “Số dư ban đầu” = số tiền nạp lần đầu. “Đã nạp thêm” hiển thị đúng. “Còn lại” tính đúng.  
CR_EDGE_02 Tháng nạp tiền nhiều lần Nạp tiền 3 lần trong 1 tháng “Đã nạp thêm” = Tổng cộng 3 lần nạp, không tính riêng lẻ.  
CR_EDGE_03 Chi phí làm tròn Cuộc gọi có thời lượng lẻ (ví dụ: 7s = 2 block × đơn giá) Chi phí hiển thị đúng sau làm tròn block, không có sai số thập phân.  
CR_EDGE_04 Dữ liệu real-time sau khi gọi xong Thực hiện 1 cuộc gọi → Nhấn Reload trên trang Báo cáo “Đã dùng” tăng thêm đúng chi phí cuộc gọi vừa thực hiện.  
CR_EDGE_05 Nhiều loại chiến dịch cùng tháng Tháng có cả AI Agent và Callbot thường và Telesale Báo cáo phân chia chi phí đúng loại. Chi phí Callbot không bị cộng nhầm với Telesale.  
CR_EDGE_06 Chiến dịch bị xóa vẫn giữ chi phí Xóa một chiến dịch đã có phát sinh chi phí Chi phí của chiến dịch đó vẫn hiển thị trong báo cáo tháng tương ứng (có thể với tên là “Chiến dịch đã xóa” hoặc tên gốc).  
CR_EDGE_07 Workspace không có giao dịch Workspace mới, chưa chạy chiến dịch nào Trang Báo cáo chi phí hiển thị rỗng hoặc thông báo “Chưa có dữ liệu báo cáo”.  

10. Dữ liệu tham chiếu thực tế (từ hệ thống Dev – Tháng 04/2026)

Chỉ số Giá trị quan sát
Số dư ban đầu 57.019.980 VNĐ
Đã nạp thêm 0 VNĐ
Đã dùng 12.832.000 VNĐ
Còn lại 44.187.980 VNĐ
Kiểm tra công thức 57.019.980 + 0 – 12.832.000 = 44.187.980

Tài liệu kiểm thử tính năng Báo cáo Chi phí Callbot – UCALL Dev.