tableDB/TEST.md

34 lines
1.8 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.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 查询的语句结构注入被拦截。