Files
Web_BLS_OldRcu_Heartbeat_Se…/bls-oldrcu-heartbeat-backend/spec/testing.md

69 lines
1.9 KiB
Markdown
Raw Normal View History

# 测试规范 (Testing Specification)
## 1. 测试框架与工具
### 1.1 技术栈
| 工具 | 版本 | 用途 |
|------|------|------|
| Vitest | 4.0.18 | 单元测试框架 |
| Node.js | 18+(推荐) | 运行时环境 |
| npm | 9+ | 包管理 |
## 2. 单元测试
### 2.1 Parser 测试 (heartbeat_parser.test.js)
**覆盖对象**: `src/processor/heartbeatParser.js`
**测试覆盖矩阵**:
| 测试编号 | 测试项 | 输入 | 期望结果 | 状态 |
|---------|--------|------|---------|------|
| T1 | 有效消息 | 4 个正确字段 | parsed object | ✓ 通过 |
| T2 | 无效 JSON | 格式错误 | null | ✓ 通过 |
| T3 | 缺失字段 | 无 ts_ms | null | ✓ 通过 |
| T4 | 类型错误 | ts_ms 为字符串 | null | ✓ 通过 |
| T5 | 空值 | hotel_id="" | null | ✓ 通过 |
| T6 | 空值 | hotel_id=" " | null | ✓ 通过 |
| T7 | 格式错误 | non-digit hotel_id | null | ✓ 通过 |
| T8 | 多字节字符 | 中文 room_id | parsed object | ✓ 通过 |
### 2.2 Buffer 测试 (heartbeat_buffer.test.js)
**覆盖对象**: `src/buffer/heartbeatBuffer.js`
**测试覆盖矩阵**:
| 测试编号 | 测试项 | 场景 | 期望结果 | 状态 |
|---------|--------|------|---------|------|
| B1 | 重复去重 | 同键 3 条消息 | 保留 ts_ms=1100 | ✓ 通过 |
| B2 | 分离条目 | 不同键 | 缓冲大小=2 | ✓ 通过 |
| B3 | 无效拒绝 | null 输入 | 缓冲size=0 | ✓ 通过 |
| B4 | 失败恢复 | DB 异常 | 记录重入队 | ✓ 通过 |
| B5 | 冷却期 | 30s 内重写 | 写入被跳过 | ✓ 通过 |
| B6 | 冷却期保留 | 30s 内多次更新 | 最新值被保留 | ✓ 通过 |
## 3. 测试执行
### 3.1 运行所有测试
```bash
npm run test
```
**输出示例**:
```
✓ tests/heartbeat_parser.test.js (8)
✓ tests/heartbeat_buffer.test.js (6)
Test Files 2 passed (2)
Tests 14 passed (14)
Duration 234ms
```
---
**上次修订**: 2026-03-11