Các tài nguyên và templates

[Manual testing] Checklist cho chức năng form validation

Phong Do Phong Do · 07/09/2025 · 10 phút đọc

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?
  •  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

Phong Do
Tác giả
Phong Do