验证Web或客户端应用程序在用户会话超时后,能否正确地中断当前操作,将用户重定向至安全状态(通常是登录页面),并且确保用户在重新认证后,系统能恢复到-预期的一致状态,同时-不会出现数据错误、功能异常或安全漏洞。
验证内容
会话超时: 服务器为每个用户会话设置的静止(无操作)存活时间。超过-此时限,服务器端会主动使会话失效。
功能恢复: 用户在被超时中断后,通过重新登录,系统应能妥善处理其后续-操作请求的能力。
测试环境和前提条件
明确超时策略: 确认应用的会话超时时间(如:15分钟静止超时)。这是测试的基准-。
配置测试环境: 在测试或预发布环境中,为便于测试,通常会将超时时间临时缩短-(如改为1-2分钟)。
准备测试账户: 拥有不同权限的测试账户。
工具准备: 浏览器开发者工具(Network, Console面板)、Burp Suite等代理工具可用-于监控请求和响应。
详细测试方案、测试验证点
测试需覆盖“超时发生瞬间”和“重新登录后”两种情况。
测试一:超时发生时的即时行为验证
界面感知与重定向
操作: 登录后,静置直至会话超时。在超时后,尝试在当前页面进行任何-操作(点击按钮、链接、提交表单等)。
预期结果:
应用程序应能检测到会话失效。
用户应立即被重定向到登录页面。
出现清晰的提示信息,如“会话已超时,请重新登录”。(非调试性错误信息)
HTTP状态码: 发起操作的请求应返回 401 Unauthorized 或 403 Forbidden,而重定向到登录页的-请求返回 200 OK 或 302 Found。
异步请求(AJAX)处理
操作: 在超时发生时,恰好有一个异步请求(如:自动保存、搜索建议、数据加载)正在进行或刚刚触发。
预期结果:
服务器应对异步请求返回包含错误信息的JSON/XML响应(如 {"status": "error", "code": "session_timeout"})或直接返回 401/403 状态码。
前端JavaScript代码应能全局捕获此类响应,并优雅地处理(如:显示超时提示框,并跳转到登录页)。不能出现静默失败或持续加载状态。
测试二:重新登录后的状态恢复验证
这是“功能恢复有效性”的验证。
post-login 重定向
操作: 在会话超时后被重定向到登录页,成功重新登录。
预期结果: 用户应被重定向到应用首页,或安全审计日志中记录的最初请求的URL(Deep Link)。不应直接停留在登录成功的确认页面-。
数据一致性检查
操作: 在超时前,进行有状态的操作(如:填写长表单至一半、购物车添加了商品但未结算),超时重新登录后,检查这些状态。
预期结果:
未提交的数据应丢失。 这是符合预期的行为,因为数据未持久化。半成品表单应为空,购物车不应包含超时前未确认添加的商品。
已提交的数据必须保持完整。 超时前已成功提交的事务(如:下单、付款、信息更新)必须已在服务器端持久化,重新登录后应能看到最终状态。
功能连续性测试
操作: 重新登录后,立即执行常规功能操作(如:浏览页面、创建新内容、提交新表单)。
预期结果: 所有功能应表现正常,与全新会话无异。不应出现因旧会话令牌残留而-引发的 500 Internal Server Error 或逻辑-错误。
测试三:多标签页兼容性测试
操作:
打开浏览器,登录应用。
在同一浏览器中打开多个标签页,访问应用的不同功能页面(如:Tab A-编辑个人资料, Tab B-查看订单列表)。
静置至其中一个标签页检测到超时并跳转到登录页。
在另一个仍未超时的标签页(Tab B)尝试操作。
在任一标签页重新登录。
预期结果:
步骤4中,在Tab B的操作应触发会话失效处理(重定向或提示)。
在任一标签页成功重新登录后,所有同源的应用标签页都应感知到登录状态的变化并自动刷新,恢复到正常可用状态。避免-出现一些页登录、一些页未登录的矛盾状态。