Files
agent-unit-testing/rules/edge-cases-matrix.md
T
Pham-Tan-Thien 2045c856e9 feat: complete Smartgift AI Laravel unit testing toolkit
- Add 10 core testing guides (setup, AAA principles, PHPUnit/Pest, mocking, anti-patterns, PHP 8.4+, debugging, data factories, advanced edge cases)
- Add 13 component testing guides covering all Laravel layers
- Add standard templates for PHPUnit 10/11 and Pest v2/v3 including ArchitectureTest
- Add Docker smart test runner, dependency installer, and CI/CD templates (GitHub Actions, GitLab CI)
- Add 4 Claude Code skills (laravel-test-setup, laravel-unit-test with --all mode, laravel-test-review, laravel-mock-helper)
- Add single unified installer script (sg-install-unit-testing.sh) with global support, CLI runners, and 1-click updater (sg-test-update)
- Add comprehensive documentation (README.md, USAGE-GUIDE.md)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-07 16:41:37 +07:00

3.3 KiB

Ma Trận Kịch Bản Biên & Ngoại Lệ (Edge Cases Matrix)

Bảng phân loại toàn diện các tình huống biên cần phải kiểm thử đối với từng kiểu dữ liệu và nghiệp vụ trong ứng dụng Laravel.


1. Phân Loại Dữ Liệu Đầu Vào (Input Data Types)

Loại dữ liệu Kịch bản biên bắt buộc phải test
String (Chuỗi) - Chuỗi rỗng: ""
- Chuỗi chỉ chứa khoảng trắng: " "
- Chuỗi cực dài vượt giới hạn database/API (e.g. > 255 ký tự hoặc > 65535 ký tự)
- Chuỗi chứa ký tự Unicode đặc biệt / Emoji: "Nguyễn Văn A 🚀 🔥"
- Chuỗi chứa mã độc hại: <script>alert(1)</script> hoặc SQL injection test
Number (Số) - Số 0
- Số âm: -1, -99999
- Số thực với số thập phân dài: 0.00000001
- Giá trị cực đại (PHP_INT_MAX)
- Phép chia cho 0 (Division by zero)
Array (Mảng) - Mảng rỗng: []
- Mảng thiếu các key bắt buộc
- Mảng chứa giá trị null ở các field quan trọng
- Mảng lồng nhau nhiều cấp (Deeply nested)
- Mảng có key trùng lặp hoặc không tuần tự
Date / Time (Thời gian) - Thời gian quá khứ vs Hiện tại vs Tương lai
- Ngày nhuận (29/02)
- Chuyển giao năm cũ sang năm mới (31/12 -> 01/01)
- Khác biệt múi giờ (Timezone discrepancies: UTC vs Local)
Object / Model - Object bị null
- Model không tồn tại ID tương ứng
- Model ở trạng thái Soft-Deleted
- Model thiếu quan hệ (Missing relationship / Relation not loaded)

2. Phân Loại Nghiệp Vụ & Dịch Vụ Ngoài (Business & External Services)

Nhóm nghiệp vụ Tình huống cần test
Authentication & Authorization - Người dùng chưa đăng nhập (Unauthenticated / Guest / null)
- Người dùng đã đăng nhập nhưng không đủ quyền (Unauthorized / 403)
- Người dùng bị khóa tài khoản (Inactive / Banned)
- Token hết hạn hoặc không hợp lệ
HTTP Client / External API - API phản hồi thành công (200, 201)
- API trả về lỗi nghiệp vụ (400 Bad Request, 422 Unprocessable)
- API từ chối xác thực (401, 403)
- API bị sập (500, 502, 503)
- API bị treo kết nối (Network Timeout / SocketException)
- API trả về cấu trúc JSON sai định dạng (Malformed JSON)
Storage & File Upload - File rỗng (0 bytes)
- Dung lượng file vượt quá giới hạn (Max upload size exceeded)
- Định dạng đuôi file không được phép (MIME type mismatch)
- Đĩa lưu trữ bị đầy hoặc không có quyền ghi
Queue & Background Jobs - Job thực thi thành công
- Job bị fail ở lần thử đầu tiên và kích hoạt retry
- Job bị fail hoàn toàn (hết số lần retry) -> kích hoạt hàm failed()
- Job nhận payload bị thiếu hoặc serialized object đã bị xóa
Concurrency & Race Conditions - Hai yêu cầu cùng trừ tiền hoặc cùng đặt mua một sản phẩm còn 1 số lượng
- Idempotency: Gửi lại cùng một transaction ID 2 lần