Làm thế nào để test trường hợp Session Timeout
Đã bao giờ bạn kiểm thử trường hợp Session Timeout? Có một vài ứng dụng hoặc trường hợp sẽ hiển thị message thông báo “ your session timeout! ”/" Phiên làm việc của bạn đã hết hạn " cho người dùng biết rằng phiên làm việc của mình đã hết. Nhưng cũng có trường hợp, timeout xảy ra ...
Đã bao giờ bạn kiểm thử trường hợp Session Timeout?
Có một vài ứng dụng hoặc trường hợp sẽ hiển thị message thông báo “your session timeout!”/"Phiên làm việc của bạn đã hết hạn" cho người dùng biết rằng phiên làm việc của mình đã hết. Nhưng cũng có trường hợp, timeout xảy ra mà không thông báo cho người dùng. Các trường hợp timeout này rất khó để xác định cũng như kiểm thử, vì vậy bài viết này sẽ xem xét cả 2 trường hợp trên và đưa ra cách để có thể test 2 trường hợp đó.
Có lần, tôi đã cố gắng thử check trường hợp timeout. Tôi đã thực hiện đăng nhập và không thao tác trong 1 giờ, và khi tôi quay trở lại, tôi phải đăng nhập lại. Đó chính là session timeout mà không thông báo. Nhưng rõ ràng ta không thể xác định được thời gian timeout là lúc nào (do không dùng đến hệ thống) và điều gì sẽ xảy ra khi người dùng cố thực hiện các chức năng của hệ thống khi phiên làm việc đã hết hạn??
Thông báo thời gian Timeout tự động
Nhiều ứng dụng dịch vụ tài chính hiển thị thông báo cho biết thời gian đăng nhập của người dùng (Thông báo này từ giờ tôi sẽ gọi là LI user) sẽ kết thúc, và nhắc người dùng cần thiết lập lại bộ đếm thời gian bằng một nút click chuột. Nếu người dùng không thực hiện, ứng dụng thay thế trang hiện tại bằng một message thông báo phiên làm việc của người dùng đã hết. Giải pháp này mang đến cho người dùng- những người bị timeout (được gọi là TO user) phản hồi những gì đã xảy ra ngay lâp tức.
Nhiều ứng dụng lại thêm tính năng để người dùng có thể tiếp tục bất cứ điều gì anh ta hoặc cô ta đang thực hiện khi phiên làm việc kết thúc. Ít nhất, điều này sẽ cho phép người dùng đăng nhập trở lại trên trang chung và có thể bao gồm việc giữ lại dữ liệu của người dùng đã nhập vì người dùng không phải nhập lại thông tin này. Nếu ứng dụng của bạn xử lý theo cách này trong thời gian timeout, bạn sẽ cần test việc nhắc nhở thời gian timeout và thông báo timeout trên các loại trang khác nhau. Một ví dụ, trên một website ngân hàng, bạn phải có các trang như sau: một trang để hiển thị tất cả các tài khoản, một trang hiển thị tài khoản cá nhân, một trang hiển thị giao dịch cá nhân, một trang hiển thị thông tin cơ bản và một trang dành cho thông tin liên hệ. Bạn sẽ muốn đảm bảo hiển thị nhắc nhỏ và thông báo thời gian timeout trên mỗi trang ở vị trí thích hợp. Trong các trường hợp này bạn sẽ không muốn thay đổi trang thông tin hoặc trang thông tin liên hệ với các thông báo luân phiên nhau khi phiên làm việc của người sử dụng kết thúc.
Danh mục và trang
Nhiều ứng dụng có hai thiết lập trang khả dụng cho người dùng:
- Một là thiết lập trang bên ngoài, các trang thông tin có sẵn dành cho trường trường hợp người dùng không phải đăng nhập (gọi là NLI user)
- Một thiết lập trang bên trong bao gồm các dữ liệu cụ thể của người dùng và các màn hình nhập dữ liệu dành cho các LI user có thể truy cập. Đối với phần cơ bản của kiểm thử, tôi đảm bảo NLI user có thể thấy các trang thích hợp và nhắc nhỏ đăng nhập hoặc các nút tác động trên các trang chỉ dành cho LI user có thể truy cập. Trường hợp người dùng đã đăng nhập, tôi xem lại các trang giống nhau để đảm bảo người dùng có thể xem (và sử dụng) tất cả các trang.
Tôi cũng kiểm tra các trang để đảm bảo rằng khi nào người dùng đăng xuất chủ động, NLI user mới không nhìn thấy các trang giống như khi anh ta hoặc cô ta đã đăng nhập. Thêm vào thời gian timeout của phiên làm việc, tôi chạy qua các trang lại một lần nữa với người dùng đã kết thúc phiên làm việc. Khái niệm TO user có thể khác với NLI user, vì tôi thấy để đảm bảo rằng TO user không thể truy cập vào bất cứ trang nào như một LI user. Trong các trường hợp timeout khác nhau trên các trang khác nhau, tôi lựa chọn nút “Back” của trình duyệt để thấy nếu TO user có thể nhìn thấy các trang bên trong trước đó và các form không phù hợp.
Testing a User Session Time Out
Xét hai dạng form đặc biệt: form đăng nhập và form đăng ký. Nếu ứng dụng hiển thị thông báo hoặc chuyển hướng khi LI user vào trực tiếp form, tôi cần đảm bảo rằng việc chuyển hướng hoặc thông báo không được xuất hiện sau phiên làm việc đã bị kết thúc và LI user trở thành TO user. Thỉnh thoảng một số form không hiển thị trên các trang của chính họ, nhưng hiển thị ở trên đầu trang khi user bấm một nút trong khi NLI, và hiển thị tên tài khoản hoặc các tác vụ xử lý luân phiên nhau khi người dùng là LI user. Khi LI user kết thúc phiên làm việc, các form và các tác vụ xử lý phải trở lại để phản ánh trạng thái của NLI.
Các forms không hoàn thiện
Nếu site hoặc ứng dụng của bạn không cung cấp một thông báo nhắc nhỏ hoặc chuyển hướng khi người dùng kết thúc phiên làm việc, Các user của bạn có thể bắt đầu trên một form, đi ăn trưa, và sau đó quay lại hoàn thành form sau khi phiên làm việc kết thúc. Ít nhất, điều này có thể làm cho TO user khi xác nhận thông tin bị lỗi. Tồi tệ nhất, ứng dụng có thể không hoạt động.
Để kiểm thử một ứng dụng xử lý trường hợp này như thế nào, tôi mở các form của các trang riêng, để user kết thúc phiên làm việc, và sau đó thực hiện xác nhận form. Nếu form có nhiều bước, tôi cho user kết thúc phiên làm việc ở mỗi bước của form để phát hiện ra bất kỳ sự tương tác ẩn nào với server. Nếu tôi chỉ kiểm thử ở bước 4 của form, vị trí mà user hoàn thành việc xác nhận cuối cùng cho form, có thể tôi sẽ bỏ quan bước 2 thực hiện bên phía địa chỉ server xác nhận rằng có thể bị lỗi tồi tệ hơn cho TO user.
Lý tưởng nhất, ứng dụng của bạn sẽ cung cấp một vài cơ chế để cho phép người dùng tiếp tục mà không cần phải nhập thông tin người dùng đã nhập, như một phương thức nhắc nhỏ rằng cho sẽ cho người dùng quay trở lại trang hiện tại. Tuy nhiên, ứng dụng sẽ không quay trở lại một thông báo lỗi không xử lý, cũng không nên “treo” với việc không phản hồi lại cho người dùng.
Page cập nhật và làm mới
Nhiều website hiện đại cấu hình các tính năng tự động cập nhật dữ liệu để các web tải dữ liệu hiện tại mà người dùng không phải bấm vào bất cứ thứ gì. Trên một website tài chính, việc cập nhật dữ liệu tự động bao gồm việc cập nhật tự động giá cổ phiếu. Ở các website khác, thì việc cập nhật dữ liệu tự động bao gồm cả việc tự động cập nhật, Tôi cho một user kết thúc thời gian làm việc trên các trang bị tác động để xem điều gì xảy ra. Chỉ hiển thị các nội dụng hiện tại? Hay hiển thị nhắc nhỏ đăng nhập? Hoặc hiển thị lỗi trên màn hình hoặc bảng điều khiển JavaScript?
"Anything" and "Everything"
Bài viết này đề cập đến hành vi của các website khi người dùng hết phiên làm việc. Tuy nhiên, nếu là ứng dụng di động bạn đang sử dụng có một vài thời gian kết thúc phiên làm việc ngắn, bạn cũng có thể thêm một vài ý tưởng cho việc kiểm thử trên thiết bị di động, như thông tin giữa client và server sẽ tương tự nhau. Để kiểm thử các ứng dụng thương mại trên thiết bị di động, đăng nhập vào và đi đến các trang riêng và thoát khỏi nó trên màn hình vẫn ở giai đoạn timeout kết thúc. Điều gì xảy ra khi bạn thêm một thứ vào giỏ hàng? Nhắc nhở của ứng dụng cho việc đăng nhập trước khi cho phép người dùng thoát khỏi ứng dụng?
Điểm chính của việc kiểm thử thời thời gian timeout trong sự quen thuộc với việc ứng dụng của bạn giao tiếp như thế nào đối với server, người sử dụng tương tác với ứng dụng như thế nào và thiết lạp việc đăng nhập của họ ở trạng thái nào, và người dùng thường cố gắng làm gì khi phiên làm việc của họ kết thúc.
Những nội dung cơ bản này có thể mang đến cho bọn một sự bắt đầu cho việc kiểm thử thời gian timeout, nhưng kiến thức và kinh nghiệm của bạn với ứng dụng của bạn sẽ xác định các vị trí khác để tìm. Có lẽ bạn sẵn sang có một phương hướng cho thứ tự tải và vị trí trong các file JavaScript. Có lẽ một trong số chúng sẽ bị tác động khi người dùng kết thúc phiên làm việc và người dùng chuyển hướng sang vị trí khác. Tôi mong muốn được nghe ý kiến và kinh nghiệm của bạn đối với kiểm thử thời gian timeout trong những phản hồi ở dưới đây.