热门角色不仅是灵感来源,更是你的效率助手。通过精挑细选的角色提示词,你可以快速生成高质量内容、提升创作灵感,并找到最契合你需求的解决方案。让创作更轻松,让价值更直接!
我们根据不同用户需求,持续更新角色库,让你总能找到合适的灵感入口。
本提示词专为软件质量保障场景设计,能够根据用户提供的功能需求,生成结构完整、逻辑严谨的测试用例。通过系统化的测试场景分析、边界条件识别和测试步骤设计,确保测试用例覆盖功能核心逻辑、异常情况和性能要求。输出结果采用标准化的测试用例格式,包含清晰的测试步骤、预期结果和优先级评估,帮助测试人员高效执行测试工作,提升软件质量保障水平。
{
"功能概述": "统一登录与授权:为Web与移动端提供统一身份认证,支持账号密码(Bcrypt校验、失败计数、图形验证码与账户锁定)、可选短信二次验证、第三方OAuth2(授权码模式与绑定/解绑/撤销)、会话与Token策略(Web会话+Access 15分钟/Refresh 7天,SSO仅一处在线,Remember Me 7天)、安全防护(CSRF、设备/IP识别、异地登录短信提醒、审计日志)以及全端退出与令牌作废。边界条件涵盖服务器时钟±2分钟、第三方回调延迟、授权取消与网络抖动重试。",
"测试环境": {
"环境": "Staging/预发布环境,数据隔离",
"Web浏览器": "Chrome 120+ (Windows 11 x64)",
"移动端": "Android 12 + Chrome 120(或等效移动App内置WebView)",
"后端与中间件": [
"认证服务/AuthService(启用Bcrypt)",
"OAuth2适配器(对接OAuth沙箱)",
"Redis(计数/SSO/会话/令牌黑名单)",
"关系型数据库(用户/绑定/审计日志)",
"API网关/反向代理(CSRF/安全头)",
"NTP时钟同步(漂移≤2分钟)"
],
"外部依赖(沙箱/模拟器)": [
"短信网关沙箱(延迟/失败可控)",
"OAuth2沙箱提供商(可配置回调延迟/授权取消/Token交换失败)"
],
"测试账号与数据(脱敏示例)": {
"本地账号A": {
"username": "u_demo01",
"password": "Pwd!2345",
"phone": "+86-1390001",
"2FA": "可配置开启/关闭"
},
"本地账号B": {
"username": "u_demo02",
"password": "Pwd!2345",
"phone": "+86-1390002"
},
"预置锁定账号": {
"username": "u_lock01",
"status": "已锁定(通过管理/脚本模拟)"
},
"OAuth沙箱应用": {
"provider": "AuthX-Sandbox",
"client_id": "test_client",
"redirect_uri": "https://staging.example.com/oauth/callback"
},
"IP与设备": {
"DeviceA": "Chrome/Windows,IP: 203.0.113.10",
"DeviceB": "Android/Chrome,IP: 198.51.100.10"
}
}
},
"优先级映射": {
"P0": "高",
"P1": "中",
"P2": "低"
},
"测试用例列表": [
{
"用例编号": "UA-REG-001",
"legacy_id": null,
"用例标题": "账号密码成功登录(无2FA)并记录审计日志",
"优先级": "P1",
"前置条件": [
"账号 u_demo01 存在,2FA关闭,未被锁定,失败计数清零",
"CSRF令牌有效,访问登录页"
],
"测试步骤": [
"在登录页输入用户名 u_demo01 和密码 Pwd!2345,提交",
"观察是否进入首页/个人中心",
"调用用户信息API验证会话有效",
"查询审计日志"
],
"测试数据": {},
"预期结果": [
"登录成功,返回200,跳转首页",
"创建Web会话+下发Access/Refresh Token(HttpOnly)",
"审计日志记录成功事件,含时间、IP、UA"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["认证服务", "会话管理", "令牌服务", "审计日志", "登录UI"],
"依赖": ["Redis", "DB", "API网关/CSRF"]
}
},
{
"用例编号": "UA-REG-002",
"legacy_id": null,
"用例标题": "5次失败后下次登录需要图形验证码(触发阈值)",
"优先级": "P0",
"前置条件": [
"账号 u_demo01 未锁定,失败计数清零",
"开启图形验证码功能"
],
"测试步骤": [
"连续5次使用错误密码登录(不输入验证码)",
"第6次访问登录页输入正确用户名/密码但不填写验证码提交",
"刷新验证码后输入正确验证码与正确密码再次提交"
],
"测试数据": {
"错误密码": "Wrong!234",
"验证码示例": "XY7K(以页面返回为准)"
},
"预期结果": [
"前5次返回401并累加失败计数",
"第6次返回需要验证码的错误(例如HTTP 400/特定错误码),不创建会话",
"填写正确验证码+正确密码后登录成功;失败计数重置;审计日志含“触发验证码”与后续“成功”"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["认证服务", "验证码服务", "会话管理", "审计日志"],
"依赖": ["Redis", "DB"]
}
},
{
"用例编号": "UA-REG-003",
"legacy_id": null,
"用例标题": "达到验证码要求时未提供验证码禁止登录",
"优先级": "P0",
"前置条件": [
"账号 u_demo01 的失败计数已达到触发验证码阈值(通过接口/脚本设置)"
],
"测试步骤": [
"输入正确用户名/密码,不输入验证码,提交"
],
"测试数据": {},
"预期结果": [
"返回错误(需验证码),不创建会话,不重置失败计数",
"审计日志记录失败,原因为“验证码缺失/错误”"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["认证服务", "验证码服务", "审计日志"],
"依赖": ["Redis"]
}
},
{
"用例编号": "UA-REG-004",
"legacy_id": null,
"用例标题": "账户锁定期间拒绝登录并提示剩余时间",
"优先级": "P0",
"前置条件": [
"账号 u_lock01 处于锁定状态(模拟达到锁定条件),锁定窗口10分钟"
],
"测试步骤": [
"尝试使用正确用户名/密码登录",
"查询审计日志"
],
"测试数据": {},
"预期结果": [
"返回账户锁定错误,响应中包含剩余锁定时间(或通用提示)",
"不创建会话/令牌",
"审计日志记录失败,原因“账户锁定”"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["认证服务", "会话管理", "审计日志"],
"依赖": ["Redis", "DB"]
}
},
{
"用例编号": "UA-REG-005",
"legacy_id": null,
"用例标题": "锁定期结束自动解锁(考虑服务器时钟±2分钟)",
"优先级": "P1",
"前置条件": [
"账号 u_lock01 处于锁定状态,距离结束≤2分钟"
],
"测试步骤": [
"在锁定预计结束前1分钟尝试登录,记录结果",
"在锁定预计结束后1分钟再次尝试登录",
"验证失败计数是否复位"
],
"测试数据": {},
"预期结果": [
"结束前登录仍被拒绝",
"结束后登录成功(允许±2分钟时钟漂移),会话/令牌创建",
"失败计数复位,审计日志有“解锁后成功”记录"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["认证服务", "会话管理", "令牌服务", "审计日志"],
"依赖": ["Redis", "NTP"]
}
},
{
"用例编号": "UA-REG-006",
"legacy_id": null,
"用例标题": "开启短信二次验证后的成功登录",
"优先级": "P1",
"前置条件": [
"账号 u_demo01 已开启2FA,短信通道可用",
"失败计数清零,未锁定"
],
"测试步骤": [
"输入正确用户名/密码登录,触发下发短信验证码",
"输入正确短信验证码,提交",
"验证登录完成并进入首页"
],
"测试数据": {
"短信验证码": "123456(以网关沙箱返回为准)"
},
"预期结果": [
"首次提交后进入2FA验证态,不创建最终会话",
"提交正确验证码后登录成功,创建会话+令牌",
"审计日志含“2FA验证成功”"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["认证服务", "二次验证服务", "通知服务", "会话管理", "令牌服务", "审计日志"],
"依赖": ["短信网关沙箱", "Redis", "DB"]
}
},
{
"用例编号": "UA-REG-007",
"legacy_id": null,
"用例标题": "2FA错误/过期验证码拒绝登录并限流",
"优先级": "P0",
"前置条件": [
"账号 u_demo01 已开启2FA,短信通道可用,处于2FA验证态"
],
"测试步骤": [
"输入错误验证码3次(含一次过期验证码)",
"观察错误提示与重试间隔/限流提示",
"获取新验证码并输入正确值"
],
"测试数据": {
"错误验证码": "654321"
},
"预期结果": [
"每次错误均拒绝完成登录,不创建会话;错误原因精确(错误/过期)",
"达到策略阈值时触发短期限流(返回特定错误码或等待提示)",
"使用新验证码后可成功登录;审计日志记录错误次数与成功完成"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["二次验证服务", "认证服务", "通知服务", "审计日志"],
"依赖": ["短信网关沙箱", "Redis"]
}
},
{
"用例编号": "UA-REG-008",
"legacy_id": null,
"用例标题": "2FA短信验证码重发与幂等(网络抖动重复提交)",
"优先级": "P1",
"前置条件": [
"账号 u_demo01 已开启2FA",
"短信网关沙箱可模拟延迟"
],
"测试步骤": [
"请求发送验证码,立刻重复请求一次",
"在验证码到达前后分别提交同一验证码两次(模拟重复点击提交)"
],
"测试数据": {},
"预期结果": [
"重发策略生效(频率限制/最近一次有效)",
"同一验证码仅可成功一次;第二次提交返回已使用/失效",
"审计日志记录重发与消费状态"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["二次验证服务", "通知服务", "认证服务", "审计日志"],
"依赖": ["短信网关沙箱", "Redis"]
}
},
{
"用例编号": "UA-REG-009",
"legacy_id": null,
"用例标题": "OAuth首次授权需绑定本地账号并登录成功",
"优先级": "P0",
"前置条件": [
"账号 u_demo02 未绑定任意第三方",
"OAuth沙箱账户可用"
],
"测试步骤": [
"从登录页选择OAuth登录,重定向至提供商授权页并同意",
"回调至绑定页面,输入本地账号 u_demo02 与密码绑定",
"完成绑定后进入系统"
],
"测试数据": {},
"预期结果": [
"成功完成授权码交换,出现绑定页",
"绑定成功后创建会话+令牌,后续可直接OAuth登录免绑定",
"审计日志记录授权成功与绑定事件"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["OAuth2适配器", "认证服务", "绑定管理", "会话管理", "令牌服务", "审计日志"],
"依赖": ["OAuth沙箱", "DB", "Redis"]
}
},
{
"用例编号": "UA-REG-010",
"legacy_id": null,
"用例标题": "OAuth回调延迟场景下授权码仍可用(有效期内)",
"优先级": "P2",
"前置条件": [
"OAuth沙箱配置回调延迟30秒(小于授权码有效期)",
"本地账号未绑定或已准备绑定流程"
],
"测试步骤": [
"发起OAuth授权并同意",
"等待30秒后回调处理绑定/登录"
],
"测试数据": {},
"预期结果": [
"授权码未过期,交换成功,后续绑定/登录成功",
"审计日志记录回调时间与成功事件"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["OAuth2适配器", "绑定管理", "令牌服务", "审计日志"],
"依赖": ["OAuth沙箱"]
}
},
{
"用例编号": "UA-REG-011",
"legacy_id": null,
"用例标题": "用户在第三方授权页取消授权",
"优先级": "P0",
"前置条件": [
"可访问OAuth授权页"
],
"测试步骤": [
"发起OAuth授权,在提供商页面选择“取消/拒绝”",
"观察回调处理与前端提示"
],
"测试数据": {},
"预期结果": [
"回调携带错误(access_denied等),系统不创建会话/令牌",
"页面提示授权已取消,可重试或改用其他登录方式",
"审计日志记录失败原因“授权取消”"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["OAuth2适配器", "认证服务", "审计日志"],
"依赖": ["OAuth沙箱"]
}
},
{
"用例编号": "UA-REG-012",
"legacy_id": null,
"用例标题": "解绑第三方后再次使用OAuth需引导重新绑定",
"优先级": "P1",
"前置条件": [
"账号 u_demo02 已完成OAuth绑定"
],
"测试步骤": [
"进入账号设置执行第三方解绑操作",
"从登录页再次使用OAuth登录"
],
"测试数据": {},
"预期结果": [
"解绑成功,审计日志记录解绑",
"再次OAuth登录时进入绑定流程,不可直接进入系统"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["绑定管理", "OAuth2适配器", "认证服务", "审计日志"],
"依赖": ["DB", "OAuth沙箱"]
}
},
{
"用例编号": "UA-REG-013",
"legacy_id": null,
"用例标题": "在第三方撤销授权后需重新授权",
"优先级": "P1",
"前置条件": [
"账号 u_demo02 已绑定OAuth",
"在OAuth提供商控制台对该用户撤销授权"
],
"测试步骤": [
"尝试使用OAuth按钮直接登录",
"如已存在旧会话,访问受保护API触发刷新或验证"
],
"测试数据": {},
"预期结果": [
"系统检测到授权已撤销,需要重新跳转授权流程",
"旧Token在下一次验证/刷新时失败并引导重新授权",
"审计日志记录“第三方授权撤销”"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["OAuth2适配器", "令牌服务", "认证服务", "审计日志"],
"依赖": ["OAuth沙箱"]
}
},
{
"用例编号": "UA-REG-014",
"legacy_id": null,
"用例标题": "Access Token 15分钟过期与Refresh Token刷新成功",
"优先级": "P1",
"前置条件": [
"账号 u_demo01 已登录并持有Access/Refresh Token"
],
"测试步骤": [
"在Access Token有效期内调用受保护API,应成功",
"等待Access Token过期(或模拟时间),使用Refresh Token刷新",
"使用新Access Token访问受保护API"
],
"测试数据": {},
"预期结果": [
"有效期内返回200",
"过期后刷新成功返回新Access Token(并按策略旋转Refresh Token,如启用)",
"新Access Token可用;审计日志记录刷新事件"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["令牌服务", "会话管理", "审计日志"],
"依赖": ["Redis", "DB"]
}
},
{
"用例编号": "UA-REG-015",
"legacy_id": null,
"用例标题": "Refresh Token 7天过期(考虑时钟±2分钟)",
"优先级": "P1",
"前置条件": [
"账号 u_demo01 已登录且持有Refresh Token",
"可通过配置/模拟加速过期或时间偏移"
],
"测试步骤": [
"在接近7天时尝试刷新(提前2分钟)",
"在超过7天后尝试刷新(延后2分钟)"
],
"测试数据": {},
"预期结果": [
"提前2分钟内刷新成功(容忍时钟漂移)",
"超过7天刷新失败(401/特定错误),需重新登录;审计日志记录刷新失败原因“Refresh过期”"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["令牌服务", "会话管理", "审计日志"],
"依赖": ["Redis", "NTP"]
}
},
{
"用例编号": "UA-REG-016",
"legacy_id": null,
"用例标题": "SSO仅一处在线:新登录踢下线旧会话",
"优先级": "P0",
"前置条件": [
"账号 u_demo01 未登录"
],
"测试步骤": [
"在DeviceA(203.0.113.10)登录成功",
"在DeviceB(198.51.100.10)使用同账号登录成功",
"在DeviceA调用受保护API或刷新Token"
],
"测试数据": {},
"预期结果": [
"DeviceB登录成功后,DeviceA的会话/令牌立刻失效(401/被踢提示)",
"审计日志记录“SSO踢出”事件,含被踢设备/IP/UA"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["SSO服务", "会话管理", "令牌服务", "审计日志"],
"依赖": ["Redis"]
}
},
{
"用例编号": "UA-REG-017",
"legacy_id": null,
"用例标题": "Remember Me 7天:浏览器重启后仍保持登录",
"优先级": "P1",
"前置条件": [
"账号 u_demo01 未登录"
],
"测试步骤": [
"勾选“记住我”登录成功",
"关闭并重启浏览器后访问受保护页面",
"查看Cookie属性与有效期"
],
"测试数据": {},
"预期结果": [
"重启后仍为已登录状态(在7天内)",
"Remember Me Cookie具备Secure/HttpOnly/SameSite合规设置,有效期为7天",
"审计日志记录Remember Me使用"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["会话管理", "令牌服务", "登录UI", "审计日志"],
"依赖": ["浏览器", "API网关"]
}
},
{
"用例编号": "UA-REG-018",
"legacy_id": null,
"用例标题": "退出登录全端失效(Access/Refresh/RememberMe)",
"优先级": "P0",
"前置条件": [
"账号 u_demo01 在DeviceA与DeviceB均已登录,DeviceA启用Remember Me"
],
"测试步骤": [
"在DeviceB执行“退出登录”",
"在DeviceA尝试访问受保护API与刷新Token",
"检查Remember Me Cookie是否被清除/失效"
],
"测试数据": {},
"预期结果": [
"所有端的会话、Access/Refresh Token立即无效(401)",
"Remember Me失效/被清除",
"审计日志记录“登出”事件,含多端失效标记"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["会话管理", "令牌服务", "SSO服务", "审计日志"],
"依赖": ["Redis", "API网关"]
}
},
{
"用例编号": "UA-REG-019",
"legacy_id": null,
"用例标题": "异地/新设备登录短信提醒与审计",
"优先级": "P1",
"前置条件": [
"账号 u_demo01 存在,短信提醒功能开启"
],
"测试步骤": [
"在DeviceA完成登录",
"在地理区域差异明显的DeviceB(不同IP段)登录",
"查看短信提醒与审计日志"
],
"测试数据": {},
"预期结果": [
"DeviceB登录触发短信提醒(内容脱敏,不含完整账号/验证码)",
"审计日志记录设备指纹/IP/登录结果",
"不影响正常登录流程"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["设备/IP识别", "通知服务", "认证服务", "审计日志"],
"依赖": ["短信网关沙箱", "IP地理库"]
}
},
{
"用例编号": "UA-REG-020",
"legacy_id": null,
"用例标题": "CSRF防护:跨站请求尝试登出被阻止",
"优先级": "P0",
"前置条件": [
"账号 u_demo01 已在浏览器登录",
"准备跨域页面发起伪造POST /logout(无CSRF Token)"
],
"测试步骤": [
"从恶意站点发起登出请求(无CSRF Token)",
"在当前站点检查登录状态"
],
"测试数据": {},
"预期结果": [
"登出请求被拒绝(403/CSRF错误)",
"现有会话仍然有效,不被意外登出",
"审计日志记录CSRF拦截事件(可选)"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["CSRF中间件", "会话管理", "安全网关"],
"依赖": ["API网关"]
}
},
{
"用例编号": "UA-REG-021",
"legacy_id": null,
"用例标题": "CSRF Token登录后轮换,旧Token失效",
"优先级": "P1",
"前置条件": [
"未登录状态访问登录页获取CSRF Token T1"
],
"测试步骤": [
"使用T1完成登录",
"登录后获取新页面的CSRF Token T2",
"尝试使用T1调用受保护表单接口"
],
"测试数据": {},
"预期结果": [
"登录后CSRF Token轮换成功获取T2",
"使用旧的T1调用被拒绝(403)",
"使用T2调用成功"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["CSRF中间件", "认证服务", "安全网关"],
"依赖": ["API网关"]
}
},
{
"用例编号": "UA-REG-022",
"legacy_id": null,
"用例标题": "刷新令牌并发/重试幂等:仅第一次成功",
"优先级": "P0",
"前置条件": [
"账号 u_demo01 已登录并持有一对有效Tokens"
],
"测试步骤": [
"并发发起两次Refresh请求(携带同一Refresh Token)",
"记录两次响应",
"使用两个响应中的Access Token分别调用API"
],
"测试数据": {},
"预期结果": [
"仅第一次刷新成功(或仅返回一个有效新Token),第二次返回已使用/失效错误",
"仅第一个返回的Access Token可用;第二个不可用",
"审计日志记录刷新与拒绝细节"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["令牌服务", "会话管理", "安全网关", "审计日志"],
"依赖": ["Redis"]
}
},
{
"用例编号": "UA-REG-023",
"legacy_id": null,
"用例标题": "会话固定攻击防护:登录后Session ID变更",
"优先级": "P1",
"前置条件": [
"未登录访问站点,记录当前Session ID(如适用)"
],
"测试步骤": [
"完成登录,读取登录后的Session ID",
"比较前后Session ID"
],
"测试数据": {},
"预期结果": [
"登录后Session ID发生变化(会话固定防护)",
"新会话具备正确权限范围"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["会话管理", "认证服务", "安全网关"],
"依赖": ["API网关"]
}
},
{
"用例编号": "UA-REG-024",
"legacy_id": null,
"用例标题": "审计日志:密码错误登录记录原因/UA/IP",
"优先级": "P2",
"前置条件": [
"账号 u_demo01 存在"
],
"测试步骤": [
"输入错误密码登录一次",
"在审计日志中检索该事件"
],
"测试数据": {},
"预期结果": [
"日志记录失败事件,包含精确原因“密码错误”、时间、IP、UA、用户名(脱敏显示)",
"无会话/令牌创建记录"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["审计日志", "认证服务"],
"依赖": ["DB"]
}
},
{
"用例编号": "UA-REG-025",
"legacy_id": null,
"用例标题": "审计日志:触发图形验证码的失败事件",
"优先级": "P2",
"前置条件": [
"失败计数达到验证码阈值"
],
"测试步骤": [
"在需验证码时不提供验证码尝试登录一次",
"在审计日志中检索事件"
],
"测试数据": {},
"预期结果": [
"日志原因为“需要图形验证码/验证码缺失”,记录IP/UA/用户名(脱敏)",
"无会话创建行为"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["审计日志", "认证服务", "验证码服务"],
"依赖": ["DB"]
}
},
{
"用例编号": "UA-REG-026",
"legacy_id": null,
"用例标题": "审计日志:OAuth授权取消事件记录",
"优先级": "P2",
"前置条件": [
"可触发授权取消"
],
"测试步骤": [
"执行OAuth授权并在提供商页面取消",
"查询审计日志"
],
"测试数据": {},
"预期结果": [
"日志原因“授权取消/access_denied”,记录提供商、IP、UA、回调时间",
"无会话创建记录"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["审计日志", "OAuth2适配器", "认证服务"],
"依赖": ["DB", "OAuth沙箱"]
}
},
{
"用例编号": "UA-REG-027",
"legacy_id": null,
"用例标题": "图形验证码过期/刷新后生效",
"优先级": "P1",
"前置条件": [
"失败计数达阈值,验证码显示"
],
"测试步骤": [
"等待验证码过期时间后提交正确密码+过期验证码",
"刷新验证码,输入新验证码与正确密码"
],
"测试数据": {},
"预期结果": [
"过期验证码被拒绝并提示过期",
"刷新后新验证码有效,登录成功;审计日志记录过期/成功事件"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["验证码服务", "认证服务", "审计日志"],
"依赖": ["Redis"]
}
},
{
"用例编号": "UA-REG-028",
"legacy_id": null,
"用例标题": "OAuth登录路径不应要求图形验证码",
"优先级": "P2",
"前置条件": [
"系统启用图形验证码",
"用户选择OAuth登录"
],
"测试步骤": [
"直接点击OAuth登录按钮,完成授权",
"检查是否出现验证码拦截"
],
"测试数据": {},
"预期结果": [
"OAuth登录流程不要求图形验证码(两者隔离)",
"按设计进入绑定/登录流程"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["OAuth2适配器", "认证服务", "验证码服务"],
"依赖": ["OAuth沙箱"]
}
},
{
"用例编号": "UA-REG-029",
"legacy_id": null,
"用例标题": "登出后访问API返回401(服务端会话与令牌黑名单生效)",
"优先级": "P0",
"前置条件": [
"账号 u_demo01 已登录并持有Access/Refresh Token"
],
"测试步骤": [
"调用受保护API确认200",
"执行登出",
"再次调用受保护API与Refresh接口"
],
"测试数据": {},
"预期结果": [
"登出后受保护API返回401/会话失效",
"Refresh接口返回401/令牌作废;黑名单命中(可从管理面板/监控查看)",
"审计日志有登出与拦截记录"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["会话管理", "令牌服务", "API网关", "审计日志"],
"依赖": ["Redis"]
}
},
{
"用例编号": "UA-REG-030",
"legacy_id": null,
"用例标题": "服务器时钟±2分钟对Access Token校验的影响",
"优先级": "P2",
"前置条件": [
"账号 u_demo01 已登录",
"可在网关/验证服务模拟±2分钟时钟偏移"
],
"测试步骤": [
"在服务器时间快2分钟情况下校验一个刚签发的Access Token",
"在服务器时间慢2分钟情况下校验一个即将过期的Access Token"
],
"测试数据": {},
"预期结果": [
"时间快2分钟时不误判为未来签发导致拒绝(容忍NotBefore)",
"时间慢2分钟时在有效窗口内不误判过期",
"均按策略通过/拒绝并记录校验结果到日志(可选)"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["令牌服务", "安全网关"],
"依赖": ["NTP", "Redis"]
}
},
{
"用例编号": "UA-REG-031",
"legacy_id": null,
"用例标题": "OAuth Token交换网络超时自动重试与幂等",
"优先级": "P1",
"前置条件": [
"OAuth沙箱可注入Token交换接口超时"
],
"测试步骤": [
"发起OAuth授权并同意",
"回调时首次交换超时,触发客户端/服务端一次重试",
"完成交换后检查是否仅创建一次会话/绑定一次"
],
"测试数据": {},
"预期结果": [
"重试成功后仅存在一条会话与一次绑定记录(无重复)",
"审计日志记录超时与成功重试事件"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["OAuth2适配器", "认证服务", "绑定管理", "会话管理", "审计日志"],
"依赖": ["OAuth沙箱", "Redis", "DB"]
}
},
{
"用例编号": "UA-REG-032",
"legacy_id": null,
"用例标题": "Remember Me Cookie安全属性校验",
"优先级": "P2",
"前置条件": [
"记住我功能开启"
],
"测试步骤": [
"勾选记住我登录成功",
"抓包检查Set-Cookie属性",
"在非HTTPS环境尝试传输(如被允许则为缺陷)"
],
"测试数据": {},
"预期结果": [
"Cookie包含Secure/HttpOnly/SameSite(Strict/Lax按策略)属性",
"在非HTTPS下不应下发/不应可用"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["会话管理", "安全网关"],
"依赖": ["浏览器", "API网关"]
}
},
{
"用例编号": "UA-REG-033",
"legacy_id": null,
"用例标题": "OAuth已绑定账号直接登录并触发SSO踢出旧端",
"优先级": "P1",
"前置条件": [
"u_demo02 已绑定OAuth,DeviceA已登录"
],
"测试步骤": [
"在DeviceB通过OAuth直接登录",
"在DeviceA访问受保护API"
],
"测试数据": {},
"预期结果": [
"DeviceB登录成功",
"DeviceA被踢下线(401),审计日志含SSO事件(含OAuth登录来源)"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["OAuth2适配器", "SSO服务", "会话管理", "令牌服务", "审计日志"],
"依赖": ["Redis", "OAuth沙箱"]
}
},
{
"用例编号": "UA-REG-034",
"legacy_id": null,
"用例标题": "登录后访问跨站表单接口需要CSRF Token",
"优先级": "P1",
"前置条件": [
"u_demo01 已登录"
],
"测试步骤": [
"直接POST受保护表单接口(不带CSRF Token)",
"补充正确CSRF Token后再次请求"
],
"测试数据": {},
"预期结果": [
"无CSRF时403",
"带CSRF时200,数据提交成功"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["CSRF中间件", "安全网关", "认证服务"],
"依赖": ["API网关"]
}
},
{
"用例编号": "UA-REG-035",
"legacy_id": null,
"用例标题": "同设备切换IP不触发异地登录短信(策略合理性)",
"优先级": "P2",
"前置条件": [
"u_demo01 在DeviceA已登录",
"设备指纹保持一致,IP切换为同城市/同运营商IP"
],
"测试步骤": [
"在同设备上断开重连网络导致IP变化",
"再次登录或续期令牌"
],
"测试数据": {},
"预期结果": [
"不触发异地登录短信(根据策略:同设备/短期IP变更不告警)",
"审计日志仅记录IP变动,无短信事件"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["设备/IP识别", "通知服务", "审计日志"],
"依赖": ["IP地理库", "短信网关沙箱"]
}
},
{
"用例编号": "UA-REG-036",
"legacy_id": null,
"用例标题": "测试数据清理与会话失效验证",
"优先级": "P0",
"前置条件": [
"已执行本套回归中涉及的登录/绑定/令牌/记住我操作"
],
"测试步骤": [
"解绑回归中创建的第三方绑定关系",
"撤销第三方授权(从提供商侧)",
"强制登出所有会话(管理接口)",
"将本次测试用的Refresh Token加入黑名单(如未自动加入)",
"清除Remember Me Cookie(客户端与服务端)",
"清除失败计数/锁定标记",
"验证所有端访问API返回401"
],
"测试数据": {},
"预期结果": [
"绑定/授权清理成功",
"会话、Access/Refresh Token全部失效",
"Remember Me不可再用",
"失败计数/锁定状态复位",
"验证访问均返回401;环境回到初始可测状态"
],
"实际结果": "",
"测试类型": "回归",
"影响模块与依赖": {
"影响模块": ["绑定管理", "OAuth2适配器", "会话管理", "令牌服务", "SSO服务", "审计日志", "认证服务"],
"依赖": ["OAuth沙箱", "Redis", "DB", "API网关"]
}
}
],
"测试覆盖分析": {
"覆盖项": [
"账号密码登录:成功/失败计数/验证码/锁定/解锁/会话固定防护",
"可选短信2FA:成功、错误/过期、重发限流与幂等",
"OAuth2授权码:首次绑定、取消授权、解绑、撤销授权、回调延迟、网络超时重试幂等",
"会话与令牌:Access 15分钟、Refresh 7天、刷新并发幂等、黑名单、Remember Me 7天",
"SSO单点登录:新登录踢出旧会话(含OAuth登录触发)",
"安全:CSRF防护、Cookie安全属性、设备/IP识别与异地短信提醒策略",
"日志与审计:成功/失败原因(密码错误、验证码、授权取消、登出、SSO等)",
"边界与鲁棒性:服务器时钟±2分钟、第三方回调延迟、网络抖动重试",
"退出与清理:全端失效、Refresh作废、Remember Me清理、数据回滚"
],
"需求点到用例映射简述": {
"Bcrypt/失败策略/验证码/锁定": ["UA-REG-001","UA-REG-002","UA-REG-003","UA-REG-004","UA-REG-005","UA-REG-027"],
"短信二次验证": ["UA-REG-006","UA-REG-007","UA-REG-008"],
"OAuth2与绑定/解绑/撤销": ["UA-REG-009","UA-REG-010","UA-REG-011","UA-REG-012","UA-REG-013","UA-REG-031","UA-REG-033"],
"会话与Token(Access/Refresh/RememberMe)": ["UA-REG-014","UA-REG-015","UA-REG-017","UA-REG-022","UA-REG-029","UA-REG-032"],
"SSO仅一处在线": ["UA-REG-016","UA-REG-033"],
"CSRF防护": ["UA-REG-020","UA-REG-021","UA-REG-034"],
"设备/IP识别与异地短信提醒": ["UA-REG-019","UA-REG-035"],
"审计日志": ["UA-REG-001","UA-REG-024","UA-REG-025","UA-REG-026","UA-REG-029","UA-REG-033"],
"退出全端失效": ["UA-REG-018","UA-REG-029","UA-REG-036"],
"边界条件(时钟/回调延迟/网络抖动)": ["UA-REG-005","UA-REG-010","UA-REG-015","UA-REG-022","UA-REG-030","UA-REG-031","UA-REG-008"]
}
},
"执行建议": {
"回归范围建议": [
"认证核心链路(账号密码/2FA/OAuth)",
"令牌生命周期(签发/刷新/过期/作废/黑名单)",
"SSO单点登录与全端退出",
"CSRF与安全属性(Cookie/Session)",
"设备/IP识别与通知",
"审计日志完整性与字段正确性",
"边界与异常(时钟漂移、回调延迟、网络重试)",
"数据清理与会话失效验证"
],
"执行顺序": [
"环境与依赖健康检查(NTP、Redis、短信/OAuth沙箱)",
"账号密码基础成功流(UA-REG-001)",
"失败计数/验证码/锁定相关(UA-REG-002005, 027)",
"开启并验证2FA全流程(UA-REG-006008)",
"OAuth全链路(首次绑定/取消/解绑/撤销/延迟/重试)(UA-REG-009013, 010, 031)",
"令牌生命周期与并发刷新(UA-REG-014, 015, 022, 030)",
"SSO与Remember Me(UA-REG-016, 017, 033, 032)",
"CSRF与安全校验(UA-REG-020, 021, 034)",
"设备/IP识别与提醒(UA-REG-019, 035)",
"审计日志抽检(UA-REG-024026, 029, 033)",
"退出与全端失效(UA-REG-018, 029)",
"数据清理与复核(UA-REG-036)"
],
"注意事项": [
"严控测试账号与短信/验证码信息脱敏展示,不含真实用户数据",
"时间相关用例优先使用加速或可控时间模拟,避免长时间等待",
"并发/重试类用例注意幂等与竞态观测(日志与状态唯一性)",
"跨端/跨设备用例需区分设备指纹与IP地域,避免误报",
"执行完毕务必执行数据清理用例 UA-REG-036"
]
},
"变更项-受影响用例": {
"Bcrypt校验与失败策略(5次失败触发验证码、账户锁定10分钟)": ["UA-REG-001","UA-REG-002","UA-REG-003","UA-REG-004","UA-REG-005","UA-REG-027","UA-REG-024","UA-REG-025"],
"可选短信二次验证": ["UA-REG-006","UA-REG-007","UA-REG-008","UA-REG-019"],
"第三方OAuth2(授权码模式、绑定/解绑/撤销)": ["UA-REG-009","UA-REG-010","UA-REG-011","UA-REG-012","UA-REG-013","UA-REG-031","UA-REG-033","UA-REG-026"],
"会话与Token(Access 15min/Refresh 7天/黑名单/Remember Me 7天)": ["UA-REG-014","UA-REG-015","UA-REG-017","UA-REG-022","UA-REG-029","UA-REG-032","UA-REG-030"],
"单点登录(仅一处在线)": ["UA-REG-016","UA-REG-033","UA-REG-018"],
"安全(CSRF、防护、Cookie属性)": ["UA-REG-020","UA-REG-021","UA-REG-034","UA-REG-032","UA-REG-023"],
"设备/IP识别与异地短信提醒": ["UA-REG-019","UA-REG-035"],
"退出全端失效(刷新令牌作废)": ["UA-REG-018","UA-REG-029","UA-REG-036"],
"边界:时钟±2分钟、回调延迟、授权取消、网络抖动重试": ["UA-REG-005","UA-REG-010","UA-REG-011","UA-REG-015","UA-REG-022","UA-REG-030","UA-REG-031","UA-REG-008"]
}
}
将“功能需求”一键转化为可直接执行的测试用例包,覆盖主流程、异常与边界场景,并给出优先级与执行顺序建议;统一用例格式与口径,降低漏测风险,提升评审与回归效率,帮助团队更快、更稳地完成发布与验收。
将零散需求快速转为执行级用例,覆盖主干与异常场景;生成边界值与测试数据建议,形成可直接落地的测试清单。
按风险与业务价值自动分级用例,规划执行顺序与人力分配;输出覆盖分析报告,支撑里程碑评审与质量看板管理。
评审前一键生成用例草案,检视需求完备性与验收标准;提前发现缺口并与研发对齐范围,减少后期返工。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
半价获取高级提示词-优惠即将到期