Files
wecom_it_smart_desk/docs/06-测试质量/testing-测试/登录功能测试用例-20260706.md
T

92 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 登录功能测试用例
> **版本**: 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 |