Files
I150/docs/ScriptEngine/InstanceMissionManager_TestCases.md
2026-07-03 16:37:12 +07:00

19 KiB

InstanceMissionManager Test Cases

Tổng quan

InstanceMissionManager là component để quản lý và hiển thị danh sách các instance missions (mission instances đã được tạo và chạy). Component sử dụng MudTable với server-side pagination và search.

Tài liệu này mô tả các test case cần thiết để đảm bảo component hoạt động đúng.


1. Test Cases - Khởi tạo và Loading

TC-001: Hiển thị table khi khởi tạo

Mô tả: Kiểm tra table hiển thị đúng khi component được load.

Các bước:

  1. Navigate đến InstanceMissionManager page
  2. Quan sát UI

Kết quả mong đợi:

  • MudTable hiển thị với các columns: Mission Name, State, Score, Created At, Stopped At, Actions
  • Loading indicator hiển thị khi đang load data
  • Table height được tính toán đúng dựa trên container height
  • Toolbar với search box và refresh button hiển thị

TC-002: Khởi tạo SignalR connection

Mô tả: Kiểm tra InstanceMissionHub connection được khởi tạo đúng.

Các bước:

  1. Navigate đến InstanceMissionManager page
  2. Mở browser DevTools > Network tab
  3. Quan sát SignalR connections

Kết quả mong đợi:

  • InstanceMissionHub connection được khởi tạo
  • Connection thành công (status 101 Switching Protocols)
  • Không có lỗi connection trong console

TC-003: Tính toán table height động

Mô tả: Kiểm tra table height được tính toán đúng dựa trên container.

Các bước:

  1. Navigate đến InstanceMissionManager page
  2. Resize browser window
  3. Quan sát table height

Kết quả mong đợi:

  • Table height được tính toán dựa trên container height
  • Table height = container height - toolbar height - padding
  • Table height cập nhật khi resize window
  • Table không bị overflow

TC-004: Load data ban đầu

Mô tả: Kiểm tra data được load đúng khi component khởi tạo.

Các bước:

  1. Navigate đến InstanceMissionManager page
  2. Đợi data load
  3. Quan sát table

Kết quả mong đợi:

  • LoadData được gọi với page 1, page size mặc định
  • Data được hiển thị trong table
  • Total items được hiển thị đúng trong pagination
  • Loading indicator biến mất sau khi load xong

2. Test Cases - Table Display

TC-005: Hiển thị mission name

Mô tả: Kiểm tra mission name được hiển thị đúng.

Các bước:

  1. Load table với data
  2. Quan sát Mission Name column

Kết quả mong đợi:

  • Mission name hiển thị đúng cho mỗi row
  • Text không bị truncate không mong muốn
  • Format đúng

TC-006: Hiển thị state với color coding

Mô tả: Kiểm tra state được hiển thị với đúng màu sắc.

Các bước:

  1. Load table với missions ở các states khác nhau
  2. Quan sát State column

Kết quả mong đợi:

  • Running: Color.Success (green)
  • Paused: Color.Warning (yellow)
  • Pausing: Color.Warning (yellow)
  • Resuming: Color.Info (blue)
  • Completed: Color.Success (green)
  • Canceled: Color.Default (gray)
  • Error: Color.Error (red)
  • Idle: Color.Default (gray)
  • MudChip hiển thị đúng state name và color

TC-007: Hiển thị score percentage

Mô tả: Kiểm tra score được hiển thị dưới dạng percentage.

Các bước:

  1. Load table với missions có score
  2. Quan sát Score column

Kết quả mong đợi:

  • Score hiển thị dưới dạng: (score / totalScore) * 100 với 2 decimal places
  • Format: "XX.XX%"
  • Hiển thị "0.00%" nếu score = 0
  • Hiển thị "100.00%" nếu score = totalScore

TC-008: Hiển thị Created At

Mô tả: Kiểm tra Created At được hiển thị đúng format.

Các bước:

  1. Load table với missions
  2. Quan sát Created At column

Kết quả mong đợi:

  • Created At hiển thị format: "yyyy-MM-dd HH:mm:ss"
  • Timezone đúng (UTC hoặc local time)
  • Hiển thị cho tất cả missions

TC-009: Hiển thị Stopped At

Mô tả: Kiểm tra Stopped At chỉ hiển thị khi mission đã stopped.

Các bước:

  1. Load table với missions ở các states khác nhau
  2. Quan sát Stopped At column

Kết quả mong đợi:

  • Stopped At hiển thị format: "yyyy-MM-dd HH:mm:ss" cho missions ở states: Canceled, Completed, Error
  • Stopped At hiển thị "--" cho missions ở states khác (Running, Paused, etc.)
  • Format đúng

TC-010: Hiển thị actions buttons theo state

Mô tả: Kiểm tra action buttons hiển thị đúng theo mission state.

Các bước:

  1. Load table với missions ở các states khác nhau
  2. Quan sát Actions column

Kết quả mong đợi:

  • View Log button: Hiển thị cho tất cả missions
  • Cancel button: Chỉ hiển thị cho Running, Paused, Pausing states
  • Pause button: Chỉ hiển thị cho Running state
  • Resume button: Chỉ hiển thị cho Paused state
  • Buttons không hiển thị khi không applicable

3. Test Cases - Pagination

TC-011: Pagination hoạt động đúng

Mô tả: Kiểm tra pagination hoạt động đúng với server-side data.

Các bước:

  1. Load table với nhiều missions (> page size)
  2. Click vào page 2
  3. Quan sát data

Kết quả mong đợi:

  • LoadData được gọi với page number đúng (MudTable uses 0-based, API uses 1-based)
  • Data được load đúng cho page được chọn
  • Total items được hiển thị đúng trong pagination
  • Page number được highlight đúng

TC-012: Change page size

Mô tả: Kiểm tra thay đổi page size hoạt động đúng.

Các bước:

  1. Load table
  2. Thay đổi page size (10, 25, 50, 100)
  3. Quan sát data

Kết quả mong đợi:

  • LoadData được gọi với page size mới
  • Data được load đúng số lượng items theo page size
  • Pagination cập nhật đúng
  • Table height vẫn đúng

TC-013: Navigate giữa các pages

Mô tả: Kiểm tra navigate giữa các pages hoạt động đúng.

Các bước:

  1. Load table với nhiều pages
  2. Navigate: Page 1 → Page 2 → Page 3 → Page 1
  3. Quan sát data

Kết quả mong đợi:

  • Data được load đúng cho mỗi page
  • Loading indicator hiển thị khi đang load
  • Không có duplicate data
  • Page number được highlight đúng

TC-014: Search bằng text input

Mô tả: Kiểm tra search hoạt động khi nhập text.

Các bước:

  1. Load table
  2. Nhập text vào search box
  3. Đợi debounce (1 second)
  4. Quan sát data

Kết quả mong đợi:

  • Search được trigger sau 1 second debounce
  • LoadData được gọi với TxtSearch parameter đúng
  • Table reload với kết quả search
  • Total items cập nhật theo kết quả search

TC-015: Search bằng Enter key

Mô tả: Kiểm tra search hoạt động khi nhấn Enter.

Các bước:

  1. Load table
  2. Nhập text vào search box
  3. Nhấn Enter
  4. Quan sát data

Kết quả mong đợi:

  • Search được trigger ngay lập tức (không đợi debounce)
  • LoadData được gọi với TxtSearch parameter đúng
  • Table reload với kết quả search

TC-016: Search bằng search icon click

Mô tả: Kiểm tra search hoạt động khi click vào search icon.

Các bước:

  1. Load table
  2. Nhập text vào search box
  3. Click vào search icon (adornment)
  4. Quan sát data

Kết quả mong đợi:

  • Search được trigger ngay lập tức
  • LoadData được gọi với TxtSearch parameter đúng
  • Table reload với kết quả search

TC-017: Search với empty text

Mô tả: Kiểm tra search với empty text trả về tất cả records.

Các bước:

  1. Search với một text
  2. Clear search text (để trống)
  3. Đợi debounce hoặc nhấn Enter
  4. Quan sát data

Kết quả mong đợi:

  • LoadData được gọi với TxtSearch = ""
  • Table reload với tất cả records
  • Total items trở về tổng số records

TC-018: Search với special characters

Mô tả: Kiểm tra search hoạt động với special characters.

Các bước:

  1. Search với text chứa special characters (%, _, @, etc.)
  2. Quan sát data

Kết quả mong đợi:

  • Search không crash
  • Kết quả search đúng (hoặc empty nếu không match)
  • Special characters được handle đúng

5. Test Cases - Actions

TC-019: View Log action

Mô tả: Kiểm tra View Log action mở dialog với đúng log content.

Các bước:

  1. Click vào View Log button của một mission
  2. Quan sát dialog

Kết quả mong đợi:

  • MissionLogDialog được mở
  • Dialog title: "Mission Log: {missionName}"
  • Dialog hiển thị đúng log content
  • Dialog có thể đóng bằng Close button
  • Dialog size: MaxWidth.Large, FullWidth = true

TC-020: Cancel Mission action - Dialog

Mô tả: Kiểm tra Cancel Mission action mở dialog xác nhận.

Các bước:

  1. Click vào Cancel button của một Running mission
  2. Quan sát dialog

Kết quả mong đợi:

  • CancelMissionDialog được mở
  • Dialog title: "Cancel Mission"
  • Dialog có input field để nhập reason
  • Dialog có Cancel và Confirm buttons
  • Dialog size: MaxWidth.Small, FullWidth = true

TC-021: Cancel Mission action - Success

Mô tả: Kiểm tra Cancel Mission action thành công.

Các bước:

  1. Click vào Cancel button của một Running mission
  2. Nhập reason (hoặc để trống)
  3. Click Confirm
  4. Quan sát UI

Kết quả mong đợi:

  • CancelMissionAsync được gọi với mission ID và reason
  • Reason format: "Canceled by {userName}: {userReason}" hoặc "Canceled by {userName}" nếu reason trống
  • Success snackbar hiển thị
  • Table reload để cập nhật state
  • Mission state chuyển sang Canceled

TC-022: Cancel Mission action - Cancel dialog

Mô tả: Kiểm tra Cancel Mission action khi cancel dialog.

Các bước:

  1. Click vào Cancel button của một Running mission
  2. Click Cancel trong dialog
  3. Quan sát UI

Kết quả mong đợi:

  • Dialog đóng
  • Mission không bị cancel
  • Table không reload
  • Không có snackbar

TC-023: Cancel Mission action - Error handling

Mô tả: Kiểm tra error handling khi Cancel Mission fail.

Các bước:

  1. Simulate error khi cancel mission (disconnect network hoặc server error)
  2. Click Cancel button và confirm
  3. Quan sát UI

Kết quả mong đợi:

  • Error được catch
  • Error snackbar hiển thị với message
  • Table không reload
  • Mission state không thay đổi

TC-024: Pause Mission action

Mô tả: Kiểm tra Pause Mission action.

Các bước:

  1. Click vào Pause button của một Running mission
  2. Quan sát UI

Kết quả mong đợi:

  • PauseMissionAsync được gọi với mission ID
  • Success snackbar hiển thị nếu thành công
  • Error snackbar hiển thị nếu thất bại
  • Table có thể reload để cập nhật state (nếu có auto-refresh)

TC-025: Resume Mission action

Mô tả: Kiểm tra Resume Mission action.

Các bước:

  1. Click vào Resume button của một Paused mission
  2. Quan sát UI

Kết quả mong đợi:

  • ResumeMissionAsync được gọi với mission ID
  • Success snackbar hiển thị nếu thành công
  • Error snackbar hiển thị nếu thất bại
  • Table có thể reload để cập nhật state (nếu có auto-refresh)

TC-026: Refresh button

Mô tả: Kiểm tra Refresh button reload table data.

Các bước:

  1. Load table
  2. Thực hiện một action (cancel mission, etc.)
  3. Click Refresh button
  4. Quan sát data

Kết quả mong đợi:

  • Table reload với data mới nhất
  • Current page và search text được giữ nguyên
  • Loading indicator hiển thị khi đang load

6. Test Cases - Error Handling

TC-027: Error khi load data fail

Mô tả: Kiểm tra error handling khi load data thất bại.

Các bước:

  1. Simulate error (disconnect network hoặc server error)
  2. Navigate đến InstanceMissionManager page
  3. Quan sát UI

Kết quả mong đợi:

  • Exception được catch
  • Error snackbar hiển thị: "Error loading missions: {errorMessage}"
  • Table hiển thị empty state (No matching records found)
  • Loading indicator biến mất
  • Không crash ứng dụng

TC-028: Error khi SignalR connection fail

Mô tả: Kiểm tra error handling khi SignalR connection thất bại.

Các bước:

  1. Block SignalR port hoặc tắt server
  2. Navigate đến InstanceMissionManager page
  3. Quan sát UI

Kết quả mong đợi:

  • Connection error được handle
  • Table vẫn có thể load data (nếu server-side API vẫn hoạt động)
  • Không crash ứng dụng
  • Error message hiển thị nếu cần

7. Test Cases - Performance

TC-029: Performance khi load nhiều records

Mô tả: Kiểm tra performance khi có nhiều missions.

Các bước:

  1. Tạo 1000+ missions
  2. Load table
  3. Navigate giữa các pages
  4. Quan sát performance

Kết quả mong đợi:

  • Table load trong thời gian hợp lý (< 2 giây cho mỗi page)
  • Pagination hoạt động mượt mà
  • UI không bị freeze
  • Memory usage hợp lý

Mô tả: Kiểm tra performance khi search với nhiều records.

Các bước:

  1. Load table với 1000+ missions
  2. Search với text
  3. Quan sát performance

Kết quả mong đợi:

  • Search hoàn tất trong thời gian hợp lý (< 2 giây)
  • Debounce hoạt động đúng (không search mỗi keystroke)
  • UI responsive
  • Không có lag

8. Test Cases - Edge Cases

TC-031: Empty state - No missions

Mô tả: Kiểm tra hiển thị khi không có missions.

Các bước:

  1. Load table khi không có missions
  2. Quan sát UI

Kết quả mong đợi:

  • Table hiển thị "No matching records found"
  • Pagination hiển thị 0 items
  • Search box vẫn hoạt động
  • Refresh button vẫn hoạt động

TC-032: Empty state - No search results

Mô tả: Kiểm tra hiển thị khi search không có kết quả.

Các bước:

  1. Load table với missions
  2. Search với text không match
  3. Quan sát UI

Kết quả mong đợi:

  • Table hiển thị "No matching records found"
  • Pagination hiển thị 0 items
  • Clear search trả về tất cả records

TC-033: Table height với toolbar height khác nhau

Mô tả: Kiểm tra table height tính toán đúng với toolbar height khác nhau.

Các bước:

  1. Resize browser window
  2. Quan sát table height
  3. Kiểm tra toolbar height

Kết quả mong đợi:

  • Table height = container height - max(toolbar height, 64) - padding
  • Table không bị overflow
  • Table scroll hoạt động đúng

TC-034: Dispose và cleanup

Mô tả: Kiểm tra cleanup đúng khi component dispose.

Các bước:

  1. Navigate đến InstanceMissionManager page
  2. Navigate away
  3. Quan sát Network tab và console

Kết quả mong đợi:

  • InstanceMissionHub connection được stop
  • Không có memory leaks
  • Không có lỗi trong console

9. Test Cases - Integration

TC-035: Tích hợp với Authentication

Mô tả: Kiểm tra tích hợp với authentication để lấy user name.

Các bước:

  1. Login với một user
  2. Cancel một mission
  3. Kiểm tra reason trong log

Kết quả mong đợi:

  • User name được lấy từ AuthenticationStateProvider
  • Reason format: "Canceled by {userName}: {reason}"
  • User name đúng với user đã login

TC-036: Tích hợp với Snackbar

Mô tả: Kiểm tra snackbar hiển thị đúng cho các actions.

Các bước:

  1. Thực hiện các actions (cancel, pause, resume)
  2. Quan sát snackbar

Kết quả mong đợi:

  • Success snackbar hiển thị khi action thành công
  • Error snackbar hiển thị khi action thất bại
  • Message đúng và rõ ràng
  • Snackbar tự động dismiss sau vài giây

Checklist Test Execution

Pre-conditions

  • Ứng dụng đã được build thành công
  • Server đang chạy
  • Database có dữ liệu test (missions)
  • Authentication đã được configure

Test Environment

  • Browser: Chrome/Firefox/Edge (latest version)
  • Screen resolution: 1920x1080 hoặc tương đương
  • Network: Stable connection
  • User đã login

Test Execution Notes

  • Ghi chú các bug phát hiện trong quá trình test
  • Ghi lại screenshots cho các test case failed
  • Ghi lại performance metrics nếu có vấn đề
  • Test với nhiều số lượng missions khác nhau

Known Issues và Limitations

Đã Fix

  • Table height không được tính toán đúng khi toolbar height thay đổi
  • Search không hoạt động với Enter key
  • Cancel mission reason không include user name

Cần theo dõi

  • Performance khi có quá nhiều missions (>10000)
  • Memory usage khi pagination với nhiều pages
  • Auto-refresh khi mission state thay đổi (có thể cần thêm feature)

Test Priority

High Priority (P0)

  • TC-001, TC-002, TC-004, TC-005, TC-006, TC-010, TC-011, TC-014, TC-019, TC-020, TC-021, TC-027

Medium Priority (P1)

  • TC-003, TC-007, TC-008, TC-009, TC-012, TC-013, TC-015, TC-016, TC-017, TC-022, TC-023, TC-024, TC-025, TC-026, TC-028

Low Priority (P2)

  • TC-018, TC-029, TC-030, TC-031, TC-032, TC-033, TC-034, TC-035, TC-036

Test Results Template

Test Case ID: TC-XXX
Test Date: YYYY-MM-DD
Tester: [Name]
Status: Pass/Fail/Blocked
Notes: [Any additional notes]
Screenshots: [If applicable]
Browser: [Browser name and version]
Missions Count: [Number of missions in test data]

Tài liệu này được tạo tự động và cần được cập nhật khi có thay đổi trong InstanceMissionManager component.