92 lines
4.2 KiB
Markdown
92 lines
4.2 KiB
Markdown
# 登录功能测试用例
|
||
|
||
> **版本**: v1.0 | **日期**: 2026-07-06 | **状态**: 待执行
|
||
> **依据文档**: PRD v1.2 §4.5 身份认证与统一入口
|
||
> **测试环境**: 本地开发环境
|
||
|
||
---
|
||
|
||
## 1. 测试范围
|
||
|
||
| 模块 | 接口 | 说明 |
|
||
|------|------|------|
|
||
| 企微免密登录 | `/api/auth_wecom/jsdk-login` | 企微JS-SDK免认证登录 |
|
||
| 账号密码登录 | `/api/agents/login` | 坐席/管理员账号密码+OTP登录 |
|
||
| MFA验证 | `/api/mfa/verify` | OTP验证码验证 |
|
||
|
||
---
|
||
|
||
## 2. 前置条件
|
||
|
||
### 2.1 测试账号
|
||
|
||
| 角色 | user_id | 密码 | MFA状态 | 说明 |
|
||
|------|---------|------|---------|------|
|
||
| 坐席 | `sxn` | `admin123` | 已绑定 | IT支持组组长 |
|
||
| 管理员 | `sxn` | `admin123` | 已绑定 | 同上,具有admin权限 |
|
||
| 普通员工 | `test_user` | - | 未绑定 | 仅user角色 |
|
||
|
||
### 2.2 环境要求
|
||
|
||
- 后端服务运行在 `http://127.0.0.1:8000`
|
||
- 前端服务:坐席端 `http://127.0.0.1:5177`,管理后台 `http://127.0.0.1:5178`
|
||
- Redis 服务正常运行
|
||
- PostgreSQL/SQLite 数据库正常运行
|
||
|
||
---
|
||
|
||
## 3. 测试用例
|
||
|
||
### 3.1 企微免密登录 (/jsdk-login)
|
||
|
||
| TC_ID | 测试场景 | 前置条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
|
||
|-------|----------|----------|----------|----------|----------|------|
|
||
| JSDK-01 | 企微用户具有坐席角色,免密登录 | user_id 具有 agent 角色 | 1. 前端调用 jsdk-login 传入 userid<br>2. 后端查询角色列表 | 返回 token 和 roles=["agent"] | | 待测试 |
|
||
| JSDK-02 | 企微用户具有管理员角色,免密登录 | user_id 具有 admin 角色 | 同上 | 返回 token 和 roles=["admin"] | | 待测试 |
|
||
| JSDK-03 | 企微用户具有坐席+管理员角色 | user_id 同时具有 agent 和 admin | 同上 | 返回 token 和 roles=["admin","agent"] | | 待测试 |
|
||
| JSDK-04 | 企微用户仅具有user角色 | user_id 只有 user 角色 | 同上 | 返回 403 错误:"您没有坐席或管理员权限" | | 待测试 |
|
||
| JSDK-05 | 企微用户无任何角色 | user_id 不在 user_roles 表 | 同上 | 返回 403 错误 | | 待测试 |
|
||
|
||
### 3.2 账号密码登录 (/agents/login)
|
||
|
||
| TC_ID | 测试场景 | 前置条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
|
||
|-------|----------|----------|----------|----------|----------|------|
|
||
| PWD-01 | 正确账号密码+OTP登录 | 坐席账号、已绑定MFA | 1. 输入正确账号密码<br>2. 点击登录<br>3. 输入正确OTP | 返回 token,进入工作台 | | 待测试 |
|
||
| PWD-02 | 正确账号密码+错误OTP | 坐席账号、已绑定MFA | 1. 输入正确账号密码<br>2. 点击登录<br>3. 输入错误OTP | 返回错误:"OTP验证码错误" | | 待测试 |
|
||
| PWD-03 | 正确账号密码+无OTP | 坐席账号、已绑定MFA | 1. 输入正确账号密码<br>2. 点击登录(不输入OTP) | 返回 require_otp: true,提示输入OTP | | 待测试 |
|
||
| PWD-04 | 错误账号 | 不存在的账号 | 输入错误的user_id | 返回错误:"用户不存在" | | 待测试 |
|
||
| PWD-05 | 错误密码 | 正确的user_id,错误密码 | 输入错误的password | 返回错误:"本地密码错误" | | 待测试 |
|
||
| PWD-06 | 账号密码登录(未绑定MFA) | 坐席账号、未绑定MFA | 输入正确的账号密码 | 直接返回 token,无需OTP | | 待测试 |
|
||
|
||
### 3.3 MFA 验证
|
||
|
||
| TC_ID | 测试场景 | 前置条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
|
||
|-------|----------|----------|----------|----------|----------|------|
|
||
| MFA-01 | 正确OTP验证码 | 已绑定MFA的坐席 | 调用 /api/mfa/verify | 返回验证成功 | | 待测试 |
|
||
| MFA-02 | 错误OTP验证码 | 已绑定MFA的坐席 | 输入错误的OTP | 返回验证失败 | | 待测试 |
|
||
| MFA-03 | 已验证状态(30分钟内) | 之前已通过OTP验证 | 再次调用需要MFA的接口 | 无需再次OTP | | 待测试 |
|
||
|
||
---
|
||
|
||
## 4. 执行记录
|
||
|
||
| 执行日期 | 测试人员 | 环境 | 备注 |
|
||
|----------|----------|------|------|
|
||
| 2026-07-06 | | 本地开发环境 | 首轮测试 |
|
||
|
||
---
|
||
|
||
## 5. 缺陷记录
|
||
|
||
| 缺陷ID | 对应TC | 描述 | 严重程度 | 状态 |
|
||
|--------|--------|------|----------|------|
|
||
| | | | | |
|
||
|
||
---
|
||
|
||
## 6. 修订历史
|
||
|
||
| 版本 | 日期 | 变更内容 | 修改人 |
|
||
|------|------|----------|--------|
|
||
| v1.0 | 2026-07-06 | 初始版本 | Claude |
|