tableDB/TEST.md

34 lines
1.8 KiB
Markdown
Raw Normal View History

# 测试报告
## 性能测试
| 测试项 | 性能指标 (v1.1.6) | 备注 |
| :--- | :--- | :--- |
| **BenchmarkTableSet** | ~760,000 ns/op | 包含 Schema 验证、身份注入、1-RTT 写入及自动 ID 生成 |
| **鉴权开销 (RTT)** | 1-RTT | 核心鉴权逻辑已合并至主查询/写入 SQL无额外网络往返 |
| **内存展平查询** | $O(1)$ | 字段有效性验证与策略检索均通过内存缓存实现,无递归开销 |
## 覆盖场景
1. **零开销 ABAC 鉴权引擎**
- 验证了在开启 `enableRLS` 时,系统自动注入 `creator = ? OR (conditions)`
- 验证了 `checkAuth` 在单条操作Get/Remove时的 1-RTT 性能闭环。
2. **多级权限继承与环状检测**
- 测试通过了 `Manager -> Clerk` 的权限继承Manager 自动获得 Clerk 的所有表级访问权。
- 验证了循环继承A -> B -> A场景下系统依然能保持稳定运行不发生内存溢出或死锁。
3. **自主授权体系**
- 验证了普通用户(非 `_system`)只有在对目标表拥有 `full` 权限时,才能通过 `SetPolicy` 为第三方授权。
- 验证了 `inherit` 类型的策略被严格限制在 `SystemUserID` 权限下操作。
4. **结构化数据操作与隔离**
- 测试通过了包含和排除 system userID 时的增删改查。
- `Auth` 方法通过携带不同 userID 后实现了 `creator` 的数据隔离限制。
5. **生命周期 Hook 触发机制**
- `OnUpdatingRow` 触发并允许修改将要入库的行数据。
- `OnUpdatedRows` 在更新结束后被触发。
- `OnRemovedRows` 在成功移除后被触发返回对应的 ID 集合。
6. **SQL注入黑盒测试**
- Table 名称注入被验证并阻止。
- Field 查询字段注入被验证并阻止。
- Join On 条件验证被拦截。
- OrderBy 查询的语句结构注入被拦截。