🔐 Bài 4: Form đổi mật khẩu (yêu cầu password hiện tại)
Form đổi mật khẩu cho người dùng đã đăng nhập. Khác với bài 3 (đổi từ link email), ở đây hệ thống yêu cầu user nhập password hiện tại để xác thực, kèm các quy tắc strength khắt khe hơn.
📌 Test data có sẵn
- Current password (mật khẩu hiện tại):
Current123!
- 3 mật khẩu đã dùng gần nhất (không được dùng lại):
Pass123!
Pass456@
Pass789#
📋 Bảng đặc tả (Specification)
| # |
Tên |
Loại Control |
Chỉnh Sửa |
Bắt Buộc |
Mặc Định |
Mô Tả |
| 1 |
Current password |
Password |
Yes |
Yes |
Blank |
- Người dùng nhập password hiện tại.
- Password hiện tại trống → message:
Please input password
- Password không đúng → message:
Current password is incorrect
|
| 2 |
New password |
Password |
Yes |
Yes |
Blank |
- Người dùng nhập password mới.
- Không nhập →
Please input new password
- Password nằm ngoài khoảng 6–32 ký tự →
New password should have 6 to 32 characters
- Mật khẩu phải khác với 3 mật khẩu gần nhất. Nếu trùng →
Your password should not be the same with used password
- Mật khẩu phải chứa ít nhất 1 ký tự in hoa, 1 in thường, 1 đặc biệt, 1 số. Nếu không đủ →
Your password is not strong enough
|
| 3 |
Confirm password |
Password |
Yes |
Yes |
Blank |
- Người dùng nhập lại mật khẩu mới.
- Không nhập →
Please input confirm password
- Repeat password không đúng →
New password and repeat password should be the same
|
| 4 |
Change password |
Button |
N/a |
N/a |
N/a |
- Kiểm tra dữ liệu nhập và thực hiện đổi sang mật khẩu mới.
- Nếu tất cả dữ liệu thỏa mãn →
Change password successfully
|
🎯 Yêu cầu công việc
- Đọc kỹ bảng Specification ở trên — đặc biệt chú ý 4 quy tắc strength và quy tắc password history.
- Thiết kế bộ test case bao trùm:
- Current password: rỗng / sai / đúng.
- New password — length: 5, 6, 7 (cận biên dưới); 31, 32, 33 (cận biên trên).
- New password — strength: chỉ 1 trong 4 yếu tố / 2 / 3 / đầy đủ 4. Test combinations.
- New password — history: trùng với 1 trong 3 password đã dùng.
- Confirm password: rỗng / khác / trùng / có khoảng trắng đầu/cuối.
- Tổ hợp các trường hợp lỗi cùng lúc — quan sát thứ tự ưu tiên hiển thị message.
- Sang tab "🧪 Form thực hành" để thực hiện test.
- Ghi nhận các bug phát hiện được.
💡 Gợi ý kỹ thuật test cho bài này:
- Decision Table: bài này thích hợp dùng decision table với 4 input (current OK/sai, new length OK/lỗi, new strength OK/lỗi, confirm OK/lỗi) → 16 cases.
- Boundary Value Analysis cho length 6–32: test 5/6/7 và 31/32/33.
- Password strength combinations: thử password chỉ thiếu 1 yếu tố mỗi lần (chỉ thiếu hoa, chỉ thiếu thường, chỉ thiếu số, chỉ thiếu đặc biệt) — kiểm tra xem code có check đầy đủ cả 4 không.
- Password history: nhập đúng 1 trong 3 password đã dùng — check có báo lỗi không.
- Case-sensitivity của password history: nhập
PASS123! (chữ hoa) trong khi history có Pass123! — phải coi là khác hay giống?
- Đối chiếu chính xác message với spec — đặc biệt giữa các trường: current dùng
Please input password (KHÔNG có "current"), nhưng new và confirm thì có.
⚠️ Lưu ý: Form có nhiều bug được cài cắm tại các điểm: validation logic (boundary, strength rules), message text, và behavior sau success. Đây là bài có nhiều quy tắc nhất — đọc kỹ spec từng dòng.