81 lines
4.8 KiB
Markdown
81 lines
4.8 KiB
Markdown
|
|
# 越权 / 冲突 / 超时测试记录
|
|||
|
|
|
|||
|
|
| 项目 | 内容 |
|
|||
|
|
|------|------|
|
|||
|
|
| 文档编号 | TR-02 |
|
|||
|
|
| 文档名称 | 越权 / 冲突 / 超时测试记录 |
|
|||
|
|
| 版本 | V1.0 |
|
|||
|
|
| 测试阶段 | Alpha 安全与边界测试 |
|
|||
|
|
| 测试日期 | 2026-08-10 |
|
|||
|
|
| 被测系统 | 设备接入服务 Alpha、状态服务 Alpha、命令服务 Alpha |
|
|||
|
|
| 关联文档 | DOC-08、DOC-09、控制会话状态机、命令状态机 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 测试说明
|
|||
|
|
|
|||
|
|
本记录覆盖三类边界场景:
|
|||
|
|
|
|||
|
|
| 类别 | 说明 | 关注点 |
|
|||
|
|
|------|------|--------|
|
|||
|
|
| 越权(AUTH) | 未授权/越权访问设备与命令资源 | RBAC、设备归属、会话抢占权限 |
|
|||
|
|
| 冲突(CONFLICT) | 并发命令、重复回传、状态非法流转 | 互斥规则、幂等性、状态机守卫 |
|
|||
|
|
| 超时(TIMEOUT) | 心跳/命令/会话/握手超时 | 超时判定、自动重试、资源释放 |
|
|||
|
|
|
|||
|
|
## 2. 越权测试记录(AUTH-*)
|
|||
|
|
|
|||
|
|
| 用例 | 前置 | 步骤 | 预期 | 实际 | 结果 |
|
|||
|
|
|------|------|------|------|------|------|
|
|||
|
|
| AUTH-01 未登录访问设备列表 | 无 token | GET /api/devices | 401 拒绝 | 401 拒绝 | ✅ |
|
|||
|
|
| AUTH-02 viewer 下发控制命令 | viewer 角色会话 | POST /api/commands (move) | 403 无控制权限 | 403 拒绝 | ✅ |
|
|||
|
|
| AUTH-03 操作员控制非本场站设备 | 操作员 A,设备属场站 B | 下发命令至场站 B 设备 | 403 越权拒绝 | 403 拒绝 | ✅ |
|
|||
|
|
| AUTH-04 普通用户抢占已有会话 | 设备已被操作员 B 控制 | 普通用户申请控制权 | 403 设备被占用 | 403 拒绝 | ✅ |
|
|||
|
|
| AUTH-05 admin 抢占已有会话 | 设备被操作员 B 控制 | admin 申请控制权 | 抢占成功,原会话收到 PRECEDED 关闭 | 抢占成功,原会话关闭 | ✅ |
|
|||
|
|
| AUTH-06 伪造设备心跳 | 设备 A 的 secret 未知 | 用错误 secret 上报心跳 | 401 拒绝 | 401 拒绝(校验 secret) | ✅ |
|
|||
|
|
| AUTH-07 查询他人创建的命令 | 命令属用户 B | 用户 A GET /api/commands/:id | 403 无权查看 | 403 拒绝 | ✅ |
|
|||
|
|
|
|||
|
|
## 3. 冲突测试记录(CONFLICT-*)
|
|||
|
|
|
|||
|
|
| 用例 | 前置 | 步骤 | 预期 | 实际 | 结果 |
|
|||
|
|
|------|------|------|------|------|------|
|
|||
|
|
| CONFLICT-01 同设备并发互斥命令 | 设备执行 move(EXECUTING) | 再下发 task_start | 40902 设备忙 | 40902 拒绝 | ✅ |
|
|||
|
|
| CONFLICT-02 终态命令重复回传结果 | 命令已 SUCCEEDED | 再次 POST result | 409 终态不可回传 | 409 拒绝 | ✅ |
|
|||
|
|
| CONFLICT-03 终态命令重复 ACK | 命令已 SUCCEEDED | 再次 POST ack | 409 终态不可 ACK | 409 拒绝 | ✅ |
|
|||
|
|
| CONFLICT-04 取消执行中命令 | 命令 EXECUTING | POST cancel | 409 执行态不可取消 | 409 拒绝 | ✅ |
|
|||
|
|
| CONFLICT-05 重复注册设备 | 设备已注册 | 再次 register | 409 已注册 | 409 拒绝 | ✅ |
|
|||
|
|
| CONFLICT-06 双操作员同时申请控制权 | 无会话 | 同时 AUTH(非 admin) | 仅 1 人成功,另一人 403 | 1 成功 1 拒绝 | ✅ |
|
|||
|
|
| CONFLICT-07 重试与超时竞态 | 命令即将超时 | 超时瞬间手动 retry | 状态机保证不双写;以先到者为准 | 未出现状态错乱 | ✅ |
|
|||
|
|
|
|||
|
|
## 4. 超时测试记录(TIMEOUT-*)
|
|||
|
|
|
|||
|
|
| 用例 | 前置 | 步骤 | 预期 | 实际 | 结果 |
|
|||
|
|
|------|------|------|------|------|------|
|
|||
|
|
| TIMEOUT-01 心跳超时离线 | 设备心跳周期 30s | 停止心跳 70s | 设备自动置 offline | 70s 后 offline | ✅ |
|
|||
|
|
| TIMEOUT-02 命令 ACK 超时 | 下发命令(30s 超时) | 设备不 ACK | 自动重试 1 次后 TIMEOUT | TIMEOUT(events 含 auto_retry) | ✅ |
|
|||
|
|
| TIMEOUT-03 命令执行超时 | 命令已 ACK | 设备不回传结果 | 30s 后 TIMEOUT | TIMEOUT | ✅ |
|
|||
|
|
| TIMEOUT-04 超时命令手动重试 | 命令 TIMEOUT | POST retry | 重新 SENT 并重新计时 | SENT,定时器重置 | ✅ |
|
|||
|
|
| TIMEOUT-05 会话握手超时 | 客户端 AUTH 后不响应 | 等待 5s | 会话回 IDLE 并释放 | 回 IDLE | ✅ |
|
|||
|
|
| TIMEOUT-06 会话保活超时 | 会话 ESTABLISHED | 停止保活帧 30s | 会话 SUSPENDED→CLOSED | CLOSED(closedReason=timeout) | ✅ |
|
|||
|
|
| TIMEOUT-07 挂起会话恢复超时 | 会话 SUSPENDED | 等待 30s 不恢复 | CLOSED,未终态命令 CANCELLED | CLOSED,命令取消 | ✅ |
|
|||
|
|
|
|||
|
|
## 5. 回归结论
|
|||
|
|
|
|||
|
|
| 类别 | 用例数 | 通过 | 失败 | 通过率 |
|
|||
|
|
|------|:---:|:---:|:---:|:---:|
|
|||
|
|
| 越权 | 7 | 7 | 0 | 100% |
|
|||
|
|
| 冲突 | 7 | 7 | 0 | 100% |
|
|||
|
|
| 超时 | 7 | 7 | 0 | 100% |
|
|||
|
|
| **合计** | **21** | **21** | **0** | **100%** |
|
|||
|
|
|
|||
|
|
**遗留说明:**
|
|||
|
|
- 越权类用例中 RBAC 会话抢占、设备归属校验由控制会话层执行,Alpha 三服务以 token 占位校验实现,Beta 需接入统一认证网关(SSO)。
|
|||
|
|
- TIMEOUT-02/03 的自动重试次数可配置(maxRetries),测试按默认 1 次执行。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**变更记录**
|
|||
|
|
|
|||
|
|
| 版本 | 日期 | 变更内容 | 作者 |
|
|||
|
|
|------|------|----------|------|
|
|||
|
|
| V1.0 | 2026-08-10 | 初稿:越权/冲突/超时三类 21 用例全量通过 | 测试组 |
|