Các tài nguyên và templates
[Manual testing] Checklist cho chức năng form validation

Context
- Mục đích: Kiểm thử validation cho mọi loại form input
- Thời gian ước tính: 10-15 phút mỗi form
- Mức độ ưu tiên: Cao
- Điều kiện tiên quyết:
- Danh sách các fields và rules
- Test data cho mọi kịch bản
- Tài liệu error messages
Kiểm Tra Luồng Chính
Kịch Bản Thuận Lợi – Gửi Form
- Nhập tất cả các trường bắt buộc → Submit thành công
- Các trường tùy chọn để trống → Vẫn submit OK
- Validation realtime khi blur field → Hiển thị lỗi ngay
- Xóa lỗi khi người dùng sửa → Lỗi biến mất
- Submit → Trạng thái loading → Thông báo thành công
Kiểm Thử Các Loại Field
- Text: Validation độ dài min/max đúng
- Email: Validation định dạng (xxx@yyy.zzz)
- Điện thoại: Định dạng và độ dài đúng theo khu vực
- Số: Giá trị min/max, số thập phân
- Ngày: Định dạng, không cho phép ngày tương lai/quá khứ
- Upload file: Kích thước, loại file, nhiều files
- Dropdown: Giá trị mặc định, lựa chọn bắt buộc
- Checkbox: Đồng ý bắt buộc, multi-select
- Radio: Lựa chọn đơn, checked mặc định
Các Trường Hợp Đặc Biệt Hàng Đầu
- Submit form rỗng → Hiển thị tất cả lỗi bắt buộc
- Copy-paste dữ liệu không hợp lệ → Kích hoạt validation
- Autofill từ browser → Validation vẫn chạy
- JavaScript bị tắt → Server-side validation
- Submit hai lần → Ngăn trùng lặp
- Input rất dài → Cắt ngắn hoặc báo lỗi
Danh Sách Kiểm Tra Nhanh
P1 – Quan trọng nhất (PHẢI test)
- Validation các trường bắt buộc?
- Validation định dạng email?
- Ngăn chặn SQL injection?
- Ngăn chặn tấn công XSS?
- Có server-side validation?
- Thông báo lỗi rõ ràng?
- Nút submit bị vô hiệu hóa khi không hợp lệ?
P2 – Quan trọng (NÊN test)
- Validation realtime (khi blur)?
- Xóa lỗi khi sửa?
- Thông báo lỗi inline?
- Focus vào field có lỗi?
- Giữ lại dữ liệu sau lỗi?
- Trạng thái loading khi submit?
- Xác nhận thành công rõ ràng?
P3 – Tốt nếu có
- Validation từng bước?
- Input masks (điện thoại, ngày)?
- Tự động định dạng (thẻ tín dụng)?
- Tooltips cho các field phức tạp?
- Đo độ mạnh mật khẩu?
- Hỗ trợ accessibility?
4. Cảnh Báo Quan Trọng
Dừng và Báo Cáo Ngay Nếu:
- Vượt qua validation qua inspector/console
- SQL injection không được ngăn chặn
- Script XSS có thể thực thi
- Có thể submit dữ liệu không hợp lệ
- Server chấp nhận dữ liệu client từ chối
- Dữ liệu nhạy cảm trong thông báo lỗi
- Không có rate limiting cho việc gửi form
5. Test Data Nhanh
Các Trường Text:
Hợp lệ:
- Bình thường: John Doe
- Độ dài tối thiểu: Jo (2 ký tự)
- Độ dài tối đa: [50 ký tự]
Không hợp lệ:
- Rỗng: ""
- Quá ngắn: J (1 ký tự)
- Quá dài: [51+ ký tự]
- Chỉ có số: 12345
- Ký tự đặc biệt: @#$%^&*
Validation Email:
Hợp lệ:
- user@example.com
- user.name@example.co.uk
- user+tag@example.com
- user_123@sub.example.com
Không hợp lệ:
- user@
- @example.com
- user@.com
- user..@example.com
- user@example
- user name@example.com (có khoảng trắng)
Số Điện Thoại:
Hợp lệ VN:
- 0901234567
- +84901234567
- 090-123-4567
Không hợp lệ:
- 090123456 (9 số)
- 09012345678 (11 số)
- 1234567890 (không đúng đầu số)
- abc1234567
Các Trường Số:
Tuổi/Số lượng:
- Hợp lệ: 1, 50, 100
- Không hợp lệ: -1, 0, 999, abc, 1.5
Giá/Số tiền:
- Hợp lệ: 1000, 1000.50, 0.01
- Không hợp lệ: -100, abc, 1.234 (>2 số thập phân)
Phần trăm:
- Hợp lệ: 0, 50, 100
- Không hợp lệ: -1, 101, 150
Các Trường Ngày:
Hợp lệ:
- Hôm nay: 15/01/2024
- Quá khứ: 01/01/2000
- Tương lai: 01/01/2025 (nếu cho phép)
Không hợp lệ:
- Định dạng sai: 2024/01/15
- Ngày không hợp lệ: 32/13/2024
- Text: abc/def/ghij
Test Ký Tự Đặc Biệt:
SQL Injection:
- ' OR '1'='1
- admin'--
- '; DROP TABLE users;
XSS:
- <script>alert('xss')</script>
- javascript:alert(1)
- <img src=x onerror=alert(1)>
HTML:
- <b>bold</b>
- <a href="#">link</a>
- <>&
Unicode & Emoji:
- Tiếng Việt: Nguyễn Thị Hà
- Tiếng Trung: 中文测试
- Tiếng Ả Rập: مرحبا
- Emoji: 😀🎉❤️
Validation Theo Từng Field
Field Mật Khẩu:
- Tối thiểu 8 ký tự?
- Yêu cầu chữ hoa?
- Yêu cầu chữ thường?
- Yêu cầu số?
- Yêu cầu ký tự đặc biệt?
- Không giống username?
- Xác nhận mật khẩu khớp?
- Nút hiện/ẩn mật khẩu?
Upload File:
- Giới hạn kích thước file (vd: 5MB)?
- Hạn chế loại file (.jpg, .pdf)?
- Xử lý nhiều files?
- Hỗ trợ kéo & thả?
- Xem trước trước khi upload?
- Chỉ báo tiến trình?
- Tùy chọn hủy upload?
Dropdown/Select:
- Tùy chọn mặc định “Vui lòng chọn”?
- Validation lựa chọn bắt buộc?
- Có thể tìm kiếm cho danh sách dài?
- Hiển thị các tùy chọn theo nhóm?
- Multi-select nếu cần?
- Tùy chọn xóa lựa chọn?
Kiểm Tra Theo Platform
Ứng Dụng Mobile:
- Loại bàn phím đúng (số, email)?
- Tự động viết hoa phù hợp?
- Thanh phụ kiện input?
- Ẩn bàn phím khi submit?
- Cuộn đến field có lỗi?
Ứng Dụng Web:
- Thứ tự tab hợp lý?
- Phím Enter submit form?
- Browser validation so với custom?
- Tương thích với autofill?
- Chế độ xem in ẩn lỗi?
Chất Lượng Thông Báo Lỗi
Thông Báo Lỗi Tốt:
✅ "Email phải có định dạng: example@domain.com"
✅ "Mật khẩu phải có ít nhất 8 ký tự, bao gồm chữ hoa, chữ thường và số"
✅ "Số điện thoại phải có 10 số và bắt đầu bằng 09, 08, 07, 05, 03"
Thông Báo Lỗi Kém:
❌ "Input không hợp lệ"
❌ "Lỗi"
❌ "Trường bắt buộc"
❌ "Định dạng không đúng"
Ghi Chú
Môi Trường Test:
- Tên form: [Liên hệ/Đăng ký/Checkout]
- Môi trường: [Staging/Production]
- Ngày: [Ngày test]
- Người test: [Tên]
Lỗi Tìm Thấy:
- Lỗi 1: [Mô tả]
- Lỗi 2: [Mô tả]
- Lỗi 3: [Mô tả]
Một số gợi ý để tốt hơn:
- Triển khai input masks để cải thiện UX
- Thêm validation real-time để phản hồi ngay lập tức
- Sử dụng định dạng thông báo lỗi nhất quán
- Cân nhắc thêm gợi ý/ví dụ cho field
- Cải thiện accessibility cho screen readers
Phiên bản Template: 1.0
Cập nhật lần cuối: 2025
