Kiểm thử Đăng nhập Không mật khẩu mà không gây hỗn loạn hộp thư đến
Đăng nhập không mật khẩu trông có vẻ dễ dàng trong các bản demo. Người dùng nhập email, nhận một magic link và đăng nhập.
Trong môi trường staging, luồng này thường bị lỗi. Các liên kết rơi vào các hộp thư dùng chung hoặc các bí danh email cũ. Việc kiểm thử trở nên cực kỳ hỗn loạn.
Bạn phải coi xác thực không mật khẩu là một hệ thống thống nhất. Bạn cần kiểm thử client JavaScript, backend Node.js, việc gửi email và phiên làm việc (session) cuối cùng.
Nếu bạn bỏ qua bước kiểm tra hộp thư, các bài kiểm thử API của bạn có thể vượt qua trong khi trải nghiệm người dùng lại thất bại.
Các lỗi phổ biến bao gồm:
- Backend gửi hai liên kết sau khi thử lại.
- Email trỏ đến host của môi trường không chính xác.
- Một liên kết cũ hoạt động lâu hơn mức cho phép.
- Frontend đánh dấu người dùng đã đăng nhập trước khi cookie được thiết lập.
Hãy sử dụng một hộp thư cô lập cho mỗi lần chạy kiểm thử. Điều này giúp dữ liệu của bạn luôn sạch sẽ và việc gỡ lỗi (debugging) diễn ra nhanh chóng. Nếu ba bài kiểm thử cùng sử dụng một hộp thư, bạn sẽ không thể tìm ra lỗi.
Hãy làm theo quy trình làm việc này:
- Kích hoạt đăng nhập từ UI hoặc một bài kiểm thử end-to-end.
- Để Node.js gửi liên kết thông qua luồng staging của bạn.
- Thu thập tin nhắn trong một hộp thư mới và cô lập.
- Mở liên kết mới nhất trong cùng một phiên trình duyệt.
- Xác minh trạng thái đã xác thực.
Một bài kiểm thử tốt không chỉ dừng lại ở việc kiểm tra xem email đã đến hay chưa. Hãy kiểm tra các bước này theo thứ tự:
- Yêu cầu đăng nhập trả về một phản hồi thành công trung tính.
- Chỉ tồn tại duy nhất một magic link mới.
- Host của liên kết khớp với domain staging của bạn.
- Token khởi tạo một phiên làm việc hợp lệ.
- Việc sử dụng lại cùng một liên kết sẽ thất bại.
- Ứng dụng cập nhật UI mà không cần tải lại trang thủ công.
Ở phía backend, hãy đính kèm một correlation ID vào nhật ký (logs) của bạn. Điều này giúp bạn theo dõi một yêu cầu từ lúc khởi tạo cho đến phiên làm việc cuối cùng.
Đừng thay thế tất cả các bài kiểm thử của bạn bằng các bài kiểm thử dựa trên email. Hãy sử dụng unit test nhanh cho logic và sử dụng luồng hộp thư này cho bộ kiểm thử staging của bạn.
Hãy sử dụng danh sách kiểm tra này trước khi triển khai:
- Một yêu cầu đăng nhập chỉ tạo ra một liên kết đang hoạt động.
- Email mới nhất dễ dàng được phân tích (parse) trong môi trường staging.
- Liên kết đăng nhập người dùng trên đúng host.
- Liên kết không thể được sử dụng hai lần.
- Đăng xuất và đăng nhập lại tạo ra một token mới sạch sẽ.
