Test Case: Tính Phí Callbot (Billing & Charging)
1. Môi trường kiểm thử
- Môi trường: Dev (https://dev.app.ucall.vn/dashboard)
- Tài khoản test: [email protected]
- Workspace: UCALLXXX
- Luồng kiểm tra phí: Icon Ví (💰) > Lịch sử giao dịch > Tab Callbot (chi tiết block) & Tab Cước viễn thông (số tiền trừ)
2. Cơ chế tính phí (theo bảng giá thực tế)
2.1. Đơn vị tính
- Mỗi cuộc gọi được tính theo block 6 giây (làm tròn lên).
- Công thức:
Tổng tiền/cuộc gọi = (Tổng đơn giá tính năng) × Số block
- Số block =
ceil(thời_lượng_giây / 6)
2.2. Bảng đơn giá tính năng (VNĐ/block 6s)
| Tính năng |
Đơn giá (đ/block) |
Ghi chú |
| Gọi hàng loạt |
150 |
Cước gọi cơ bản |
| Số chung cố định |
70 |
Đầu số cố định dùng chung |
| Cảm ứng giọng nói tiêu chuẩn |
20 |
Nhận diện âm thanh |
| AI Agent (Steve) |
60 |
AI Call Agent model Steve |
| AI Agent (Mark) |
110 |
AI Call Agent model Mark |
| Nhận diện ý định (Steve) |
20 |
Phân loại ý định bằng AI |
| Nhận diện ý định (Mark) |
30 |
Phân loại ý định bằng AI |
| Node nói Prompt (Steve) |
20 |
TTS từ LLM Steve |
| Node nói Prompt (Mark) |
30 |
TTS từ LLM Mark |
| AI Review (Steve) |
20 |
Review cuộc gọi bằng AI Steve |
| AI Review (Mark) |
30 |
Review cuộc gọi bằng AI Mark |
2.3. Gói tính năng điển hình
| Gói |
Tính năng đi kèm |
Tổng đơn giá/block |
| Standard Callbot |
Gọi hàng loạt (150) + Số chung (70) |
220đ/block |
| Advanced Callbot |
Standard + Cảm ứng giọng nói (20) + Nhận diện ý định Steve (20) |
260đ/block |
| AI Call Agent (Steve) |
Advanced + AI Agent Steve (60) |
330đ/block |
| AI Call Agent (Mark) |
Advanced + AI Agent Mark (110) |
380đ/block |
3. Test Case: Tab “Callbot” – Lịch sử tính phí theo block
Luồng: Icon Ví > Lịch sử giao dịch > Tab Callbot
3.1. Hiển thị giao diện tab Callbot
| ID |
Tên Test Case |
Các bước thực hiện |
Kết quả mong đợi |
Trạng thái |
| BILL_UI_01 |
Hiển thị đúng các cột dữ liệu |
Mở Tab Callbot → quan sát bảng |
Bảng hiển thị đủ 6 cột: Mã giao dịch, Số điện thoại, Chiến dịch, Thời lượng (s), Số lượng block, Tính năng. |
|
| BILL_UI_02 |
Lọc theo Chiến dịch |
Chọn một chiến dịch từ dropdown “Chiến dịch” |
Bảng chỉ hiển thị các giao dịch thuộc chiến dịch đã chọn. |
|
| BILL_UI_03 |
Lọc theo khoảng thời gian |
Chọn “Ngày bắt đầu” và “Ngày kết thúc” |
Bảng chỉ hiển thị giao dịch trong khoảng ngày được chọn. |
|
| BILL_UI_04 |
Tìm kiếm theo mã giao dịch |
Nhập một mã giao dịch hợp lệ vào ô “Mã giao dịch” |
Bảng lọc và chỉ hiển thị đúng 1 bản ghi khớp với mã đã nhập. |
|
| BILL_UI_05 |
Tìm kiếm mã không tồn tại |
Nhập chuỗi không hợp lệ vào ô “Mã giao dịch” |
Bảng hiển thị trống với thông báo “Không có dữ liệu”. |
|
| BILL_UI_06 |
Phân trang |
Xem trang 1 → nhấn trang 2 |
Dữ liệu thay đổi sang trang 2, không trùng lặp với trang 1. |
|
| BILL_UI_07 |
Thay đổi số bản ghi/trang |
Chọn “20/trang” hoặc “50/trang” từ dropdown |
Bảng hiển thị đúng số bản ghi/trang đã chọn. |
|
| BILL_UI_08 |
Xuất dữ liệu |
Nhấn nút “Xuất dữ liệu” |
File Excel/CSV được tải xuống với đầy đủ các cột tương ứng. |
|
3.2. Xác minh logic tính số block (Làm tròn lên theo 6s)
| ID |
Tên Test Case |
Thời lượng gọi |
Số block mong đợi |
Các bước thực hiện |
Kết quả mong đợi |
Trạng thái |
| BILL_BLK_01 |
Cuộc gọi đúng 6 giây |
6s |
1 block |
Thực hiện cuộc gọi thử, kết thúc ở giây thứ 6 → kiểm tra tab Callbot |
Cột “Số lượng block” = 1. |
|
| BILL_BLK_02 |
Cuộc gọi 7 giây (qua mốc 6s) |
7s |
2 blocks |
Thực hiện cuộc gọi thử kéo dài 7s |
Cột “Số lượng block” = 2 (ceil(7/6) = 2). |
|
| BILL_BLK_03 |
Cuộc gọi 1 giây (dưới 6s) |
1s |
1 block |
Thực hiện cuộc gọi cực ngắn, máy bắt nhấc rồi tắt ngay |
Cột “Số lượng block” = 1 (tối thiểu 1 block). |
|
| BILL_BLK_04 |
Cuộc gọi 64 giây |
64s |
11 blocks |
Mở giao dịch của cuộc gọi 64s trong tab Callbot |
Cột “Số lượng block” = 11 (ceil(64/6) = 11). Đối chiếu với bản ghi thực tế trong hệ thống. |
|
| BILL_BLK_05 |
Cuộc gọi 68 giây |
68s |
12 blocks |
Mở giao dịch của cuộc gọi 68s trong tab Callbot |
Cột “Số lượng block” = 12 (ceil(68/6) = 12). |
|
| BILL_BLK_06 |
Cuộc gọi không có thời lượng (không bắt máy) |
0s |
0 block |
Thực hiện cuộc gọi nhưng khách không bắt máy |
Cột “Số lượng block” = 0. Không phát sinh chi phí. |
|
3.3. Xác minh cấu phần tính năng hiển thị
| ID |
Tên Test Case |
Loại chiến dịch |
Kết quả mong đợi ở cột “Tính năng” |
Trạng thái |
| BILL_FEAT_01 |
Standard Callbot (Gọi hàng loạt + Số chung) |
Standard |
Gọi hàng loạt (150) + Số chung cố định (70) |
|
| BILL_FEAT_02 |
Advanced Callbot (Thêm cảm ứng giọng nói) |
Advanced |
Gọi hàng loạt (150) + Số chung cố định (70) + Cảm ứng giọng nói tiêu chuẩn (20) |
|
| BILL_FEAT_03 |
AI Call Agent dùng model Steve |
Call Agent (Steve) |
Gọi hàng loạt (150) + Số chung cố định (70) + Cảm ứng giọng nói tiêu chuẩn (20) + AI Agent Steve (60) |
|
| BILL_FEAT_04 |
AI Review bằng Steve |
Bật AI Review |
Steve (20) hoặc kèm theo các tính năng khác |
|
| BILL_FEAT_05 |
Chiến dịch có AI Review + Gọi hàng loạt |
Call Agent + AI Review |
Cột “Tính năng” liệt kê đầy đủ tất cả các thành phần, mỗi thành phần có đơn giá trong ngoặc. |
|
4. Test Case: Tab “Cước Viễn Thông” – Số tiền thực tế bị trừ
Luồng: Icon Ví > Lịch sử giao dịch > Tab Cước viễn thông
4.1. Hiển thị giao diện
| ID |
Tên Test Case |
Các bước thực hiện |
Kết quả mong đợi |
Trạng thái |
| BILL_TEL_01 |
Hiển thị đúng cột dữ liệu |
Mở Tab “Cước viễn thông” |
Bảng hiển thị đủ 6 cột: Mã giao dịch, Lý do giao dịch, Phân loại, Thành tiền (đồng), Trạng thái, Hành động. |
|
| BILL_TEL_02 |
Số tiền là số âm |
Kiểm tra cột “Thành tiền” |
Tất cả giao dịch trừ tiền hiển thị số âm (ví dụ: -330, -88). Không có số dương trong giao dịch trừ. |
|
| BILL_TEL_03 |
Phân loại luôn là “Trừ tiền” |
Kiểm tra cột “Phân loại” |
Tất cả bản ghi hiển thị badge “Trừ tiền” màu đỏ/cam. |
|
| BILL_TEL_04 |
Trạng thái “Thành công” |
Kiểm tra các giao dịch đã hoàn thành |
Badge “Thành công” màu xanh lá. |
|
| BILL_TEL_05 |
Trạng thái “Đang chờ” |
Kiểm tra các giao dịch đang chờ xử lý |
Badge “Đang chờ” màu cam/vàng. |
|
| BILL_TEL_06 |
Lọc theo Lý do giao dịch |
Chọn “Gọi điện” từ dropdown “Lý do giao dịch” |
Bảng chỉ hiển thị các giao dịch có Lý do = “Gọi điện”. |
|
| BILL_TEL_07 |
Xem chi tiết giao dịch |
Nhấn nút “Xem chi tiết” ở cột “Hành động” |
Popup/Drawer mở ra hiển thị thông tin đầy đủ của giao dịch (số tiền, thời gian, cuộc gọi liên quan). |
|
4.2. Xác minh số tiền trừ khớp với bảng giá
| ID |
Tên Test Case |
Kịch bản |
Công thức tính |
Số tiền mong đợi |
Trạng thái |
| BILL_AMT_01 |
AI Call Agent (Steve) – 1 block |
Cuộc gọi ≤6s dùng AI Agent Steve |
(150 + 70 + 20 + 60) × 1 block |
-300đ (hoặc theo cấu hình tổng tính năng) |
|
| BILL_AMT_02 |
AI Call Agent (Steve) – nhiều block |
Cuộc gọi 34s (6 blocks) |
(tổng đơn giá) × 6 |
-1.980đ (330 × 6 theo dữ liệu thực tế) |
|
| BILL_AMT_03 |
Đối chiếu tab Callbot và tab Cước |
Tìm cùng một mã giao dịch ở 2 tab |
Số block × Tổng đơn giá/block = Thành tiền |
Thành tiền ở tab “Cước viễn thông” = Tổng (đơn giá × số block) từ tab “Callbot”. |
|
| BILL_AMT_04 |
Cuộc gọi thử (Gọi thử từ kịch bản) |
Gọi thử qua chức năng “Kiểm thử” kịch bản |
Áp dụng đơn giá như gọi thật |
Xuất hiện bản ghi trong tab “Callbot” và “Cước viễn thông”. Số tiền khớp đúng với đơn giá. |
|
| BILL_AMT_05 |
Cuộc gọi chiến dịch thực |
Chạy chiến dịch Callbot, sau khi có cuộc gọi |
Block × đơn giá |
Mỗi cuộc gọi thành công trong chiến dịch tạo ra 1 bản ghi tương ứng trong lịch sử Callbot. |
|
| BILL_AMT_06 |
Gọi không thành công (không bắt máy) |
Cuộc gọi bị từ chối hoặc không bắt máy |
0 block → 0 tiền |
Không xuất hiện trong tab “Cước viễn thông” (hoặc xuất hiện với thành tiền = 0đ). |
|
| BILL_AMT_07 |
Số tiền “Gọi điện” (Lý do = Gọi điện) |
Gọi thủ công từ CRM |
Theo đơn giá gọi thủ công (ví dụ: -88đ quan sát thực tế) |
Thành tiền = âm, khác với cuộc gọi chiến dịch. Lý do giao dịch = “Gọi điện”. |
|
5. Test Case: Số Dư Ví & Ảnh Hưởng Sau Trừ Tiền
| ID |
Tên Test Case |
Các bước thực hiện |
Kết quả mong đợi |
Trạng thái |
|
|
| BILL_BAL_01 |
Số dư giảm đúng sau cuộc gọi |
1. Ghi lại số dư hiện tại 2. Thực hiện cuộc gọi thử 3. Chờ giao dịch hoàn thành 4. Kiểm tra lại số dư |
Số dư mới = Số dư cũ - |
Thành tiền |
. Sai lệch không quá 1 giao dịch đang chờ. |
|
| BILL_BAL_02 |
Số dư hiển thị trong popup Ví |
Click icon Ví → xem dropdown |
Dropdown hiển thị số dư hiện tại (đơn vị VNĐ), cập nhật real-time sau mỗi giao dịch thành công. |
|
|
|
| BILL_BAL_03 |
Chiến dịch dừng khi hết tiền |
1. Đặt ngân sách chiến dịch = số dư còn lại 2. Chạy chiến dịch |
Khi số dư về 0 (hoặc dưới ngưỡng tối thiểu), chiến dịch tự động dừng. Hiện thông báo “Số dư không đủ”. |
|
|
|
| BILL_BAL_04 |
Giao dịch “Đang chờ” không trừ ngay |
Kiểm tra số dư khi giao dịch ở trạng thái “Đang chờ” |
Số dư có thể giữ nguyên hoặc đã khấu trừ tạm. Cần xác nhận hành vi hệ thống (pre-deduct hay post-deduct). |
|
|
|
6. Test Case: Edge Cases & Kiểm tra Tính 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 |
| BILL_EDGE_01 |
Cuộc gọi bị lỗi kỹ thuật |
Cuộc gọi thất bại do lỗi hệ thống (không phải khách không bắt máy) |
Không tạo giao dịch tính phí. Hoặc nếu đã tạm trừ, hệ thống hoàn tiền. |
|
| BILL_EDGE_02 |
Gọi thử vs Gọi thật – cùng đơn giá |
So sánh đơn giá giao dịch từ “Kiểm thử kịch bản” và từ “Chạy chiến dịch thật” |
Đơn giá/block như nhau. Gọi thử không được miễn phí nếu giao tiếp đã xảy ra. |
|
| BILL_EDGE_03 |
Tính phí tính năng AI Review riêng biệt |
Chiến dịch bật AI Review → Sau cuộc gọi, AI xử lý xong |
Xuất hiện thêm 1 bản ghi riêng trong tab Callbot với tính năng = Steve (20) hoặc Mark (30), độc lập với giao dịch gọi. |
|
| BILL_EDGE_04 |
Nhiều cuộc gọi cùng lúc (đồng thời) |
Chạy chiến dịch có giới hạn 5 cuộc gọi đồng thời |
Mỗi cuộc gọi đồng thời tạo ra 1 giao dịch độc lập. Tổng tiền = tổng của từng giao dịch riêng lẻ. |
|
| BILL_EDGE_05 |
Gọi lại (Redial) tính phí riêng |
Cấu hình Gọi lại 3 lần và cuộc gọi gốc không bắt máy → Cuộc gọi lại thành công lần 2 |
Mỗi lần gọi lại thành công (có thời lượng > 0) tạo ra 1 bản ghi phí riêng trong lịch sử. |
|
| BILL_EDGE_06 |
Không có bản ghi trùng lặp |
Sau mỗi cuộc gọi, kiểm tra mã giao dịch |
Mỗi cuộc gọi có duy nhất 1 mã giao dịch trong tab Callbot (không bị duplicate). |
|
| BILL_EDGE_07 |
Chênh lệch đơn giá thực tế vs bảng giá PDF |
Kiểm tra bản ghi Gọi hàng loạt trong tab Callbot |
Đơn giá hiển thị trong ngoặc (ví dụ: 150 hay 160) khớp với mức giá đang áp dụng thực tế cho workspace này. |
|
7. Dữ liệu Test thực tế tham chiếu (từ hệ thống Dev)
| Mã giao dịch (rút gọn) |
Số điện thoại |
Chiến dịch |
Thời lượng |
Block |
Tính năng |
Thành tiền |
| 095c2ba2-… |
+84922799041 |
12342 |
7s |
2 |
Gọi hàng loạt(150) + Số chung(70) + Cảm ứng(20) |
-480đ |
| f75c0b7e-… |
+84989996458 |
AI Review + Gửi Zalo 21.04 |
68s |
12 |
Steve (20) |
-240đ |
| 76e73bc3-… |
+84989996458 |
AI Review + Gửi Zalo 21.04 |
68s |
12 |
Gọi hàng loạt(150)+Số chung(70)+Cảm ứng(20) |
-2.880đ |
| 1bb60015-… |
+84988838916 |
AI Review + Gửi Zalo 21.04 |
34s |
6 |
Steve (20) |
-120đ |
Lưu ý: Bảng trên là dữ liệu mẫu để đối chiếu kiểm thử. Giá trị chính xác phụ thuộc vào cấu hình tính năng từng workspace.
Tài liệu kiểm thử tính năng Billing/Charging Callbot – UCALL Dev.