test: add test improvement plan, update CMakeLists with correct GT_minimal reference
This commit is contained in:
224
tests/RHI/D3D12/TEST_IMPROVEMENT_PLAN.md
Normal file
224
tests/RHI/D3D12/TEST_IMPROVEMENT_PLAN.md
Normal file
@@ -0,0 +1,224 @@
|
||||
# D3D12 测试改进计划
|
||||
|
||||
## 一、当前状态
|
||||
|
||||
### 1.1 已完成
|
||||
|
||||
| 阶段 | 内容 | 状态 |
|
||||
|------|------|------|
|
||||
| Phase 0 | 单元测试框架搭建 (54 tests) | ✅ 完成 |
|
||||
| Phase 1 | 集成测试注册到 CTest | ✅ 完成 |
|
||||
|
||||
### 1.2 测试统计
|
||||
|
||||
```
|
||||
单元测试: 54 tests (全部通过)
|
||||
集成测试: 2 tests (D3D12_Minimal_Integration ✅, D3D12_RenderModel_Integration 待修复)
|
||||
```
|
||||
|
||||
### 1.3 目录结构
|
||||
|
||||
```
|
||||
tests/RHI/D3D12/
|
||||
├── unit/
|
||||
│ ├── CMakeLists.txt
|
||||
│ ├── fixtures/D3D12TestFixture.h
|
||||
│ └── test_*.cpp # 54 tests
|
||||
└── integration/
|
||||
├── CMakeLists.txt # 已注册 CTest
|
||||
├── main_minimal.cpp # D3D12_Minimal_Integration
|
||||
├── main_render.cpp # D3D12_RenderModel_Integration (有API问题)
|
||||
├── run_integration_test.py
|
||||
├── compare_ppm.py
|
||||
├── GT.ppm # RenderModel 用
|
||||
└── GT_minimal.ppm # Minimal 用
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、Phase 2: 测试命名规范化
|
||||
|
||||
### 2.1 目标
|
||||
|
||||
将测试命名统一为 `Component_Category_SubBehavior` 格式。
|
||||
|
||||
### 2.2 当前命名问题
|
||||
|
||||
| 当前名称 | 问题 |
|
||||
|---------|------|
|
||||
| `D3D12TestFixture.Buffer_Placeholder` | "Placeholder" 无意义 |
|
||||
| `D3D12TestFixture.Buffer_CreateDefaultHeap` | 格式不统一 |
|
||||
| `D3D12TestFixture.CommandQueue_ExecuteCommandList` | 未用下划线分隔 |
|
||||
|
||||
### 2.3 目标格式
|
||||
|
||||
```
|
||||
Component_Category_SubBehavior
|
||||
```
|
||||
|
||||
| 部分 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| Component | 被测组件 | Device, Buffer, Texture, CommandQueue |
|
||||
| Category | 操作类别 | Create, Get, Set, Map, Reset |
|
||||
| SubBehavior | 具体行为 | DefaultHeap, UploadHeap, GPUAddress |
|
||||
|
||||
### 2.4 重命名规则
|
||||
|
||||
#### 规则 1: 组件名称标准化
|
||||
|
||||
| 当前 | 规范 |
|
||||
|------|------|
|
||||
| D3D12TestFixture | Device, Buffer, Texture... (直接用组件名) |
|
||||
|
||||
#### 规则 2: 操作类别标准化
|
||||
|
||||
| Category | 说明 | 示例 |
|
||||
|----------|------|------|
|
||||
| Create | 创建资源 | Buffer_Create, Texture_Create |
|
||||
| Get | 获取属性 | Device_GetAdapterInfo |
|
||||
| Set | 设置属性 | Buffer_SetName |
|
||||
| Map | 内存映射 | Buffer_MapUnmap |
|
||||
| Reset | 重置状态 | CommandAllocator_Reset |
|
||||
|
||||
#### 规则 3: Placeholder 测试
|
||||
|
||||
所有 `*_Placeholder` 测试应:
|
||||
- 删除(如果只验证对象存在)
|
||||
- 或改为有意义的验证测试
|
||||
|
||||
### 2.5 具体重命名方案
|
||||
|
||||
#### Buffer tests (6 → 5, 删除 Placeholder)
|
||||
|
||||
| 当前名称 | 建议名称 |
|
||||
|---------|---------|
|
||||
| Buffer_Placeholder | (删除) |
|
||||
| Buffer_CreateDefaultHeap | Buffer_Create_DefaultHeap |
|
||||
| Buffer_CreateUploadHeap | Buffer_Create_UploadHeap |
|
||||
| Buffer_GetGPUAddress | Buffer_Get_GPUAddress |
|
||||
| Buffer_MapUnmap | Buffer_Map_Unmap |
|
||||
| Buffer_AlignmentRequirements | Buffer_Get_AlignmentRequirements |
|
||||
|
||||
#### Texture tests (5 → 5)
|
||||
|
||||
| 当前名称 | 建议名称 |
|
||||
|---------|---------|
|
||||
| Texture_Placeholder | (删除或改为 Texture_Create_2D) |
|
||||
| Texture_Create2D | Texture_Create_2D |
|
||||
| Texture_Create3D | Texture_Create_3D |
|
||||
| Texture_CreateMultipleMips | Texture_Create_MultipleMips |
|
||||
| Texture_CreateTextureArray | Texture_Create_Array |
|
||||
|
||||
#### CommandAllocator tests (4 → 3)
|
||||
|
||||
| 当前名称 | 建议名称 |
|
||||
|---------|---------|
|
||||
| CommandAllocator_Placeholder | (删除) |
|
||||
| CommandAllocator_Reset | CommandAllocator_Reset_Basic |
|
||||
| CommandAllocator_ResetMultiple | CommandAllocator_Reset_Multiple |
|
||||
| CommandAllocator_DifferentTypes | CommandAllocator_Create_DifferentTypes |
|
||||
|
||||
#### 其他组件类似处理...
|
||||
|
||||
### 2.6 实施步骤
|
||||
|
||||
1. **批量重命名测试用例** (test_*.cpp)
|
||||
2. **更新 fixtures/D3D12TestFixture.h** (如有必要)
|
||||
3. **运行测试验证**
|
||||
4. **更新文档**
|
||||
|
||||
### 2.7 CMake 配置
|
||||
|
||||
无需修改,测试名称不影响构建。
|
||||
|
||||
---
|
||||
|
||||
## 三、Phase 3: 错误路径测试
|
||||
|
||||
### 3.1 目标
|
||||
|
||||
添加负面测试,验证错误处理。
|
||||
|
||||
### 3.2 建议测试用例
|
||||
|
||||
```cpp
|
||||
// Device 错误测试
|
||||
Device_Create_NullAdapter // 无效适配器
|
||||
Device_Create_InvalidFeatureLevel // 不支持的功能级别
|
||||
|
||||
// Buffer 错误测试
|
||||
Buffer_Create_ZeroSize // 零大小
|
||||
Buffer_Create_OverflowSize // 超出限制大小
|
||||
|
||||
// Texture 错误测试
|
||||
Texture_Create_ZeroDimension // 零尺寸
|
||||
Texture_Create_InvalidFormat // 无效格式
|
||||
|
||||
// CommandList 错误测试
|
||||
CommandList_Close_WithoutRecord // 未录制就关闭
|
||||
CommandList_Reset_WhileRecording // 录制中重置
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、Phase 4: Golden Image 扩展
|
||||
|
||||
### 4.1 目标
|
||||
|
||||
为更多集成测试场景添加 Golden Template。
|
||||
|
||||
### 4.2 建议添加
|
||||
|
||||
| 场景 | Golden Template | 阈值 |
|
||||
|------|----------------|------|
|
||||
| 2D 渲染测试 | GT_render_2d.ppm | 5% |
|
||||
| 深度测试 | GT_depth_test.ppm | 5% |
|
||||
| 混合模式测试 | GT_blend.ppm | 5% |
|
||||
|
||||
---
|
||||
|
||||
## 五、Phase 5: CI 集成
|
||||
|
||||
### 5.1 目标
|
||||
|
||||
创建跨平台测试运行脚本。
|
||||
|
||||
### 5.2 建议结构
|
||||
|
||||
```bash
|
||||
scripts/
|
||||
└── run_tests.py # 统一测试入口
|
||||
```
|
||||
|
||||
### 5.3 功能需求
|
||||
|
||||
- 自动检测平台 (Windows/Linux)
|
||||
- 运行单元测试
|
||||
- 运行集成测试 (可选,需 GUI)
|
||||
- 生成测试报告
|
||||
- 支持 CI 环境
|
||||
|
||||
---
|
||||
|
||||
## 六、优先级和排期
|
||||
|
||||
| Phase | 优先级 | 估计工作量 | 说明 |
|
||||
|-------|--------|----------|------|
|
||||
| Phase 2 | P1 | 中 | 纯重命名,无代码逻辑变更 |
|
||||
| Phase 3 | P1 | 高 | 需设计错误注入方案 |
|
||||
| Phase 4 | P2 | 中 | 需手动生成 Golden Images |
|
||||
| Phase 5 | P2 | 低 | 主要是脚本工作 |
|
||||
|
||||
---
|
||||
|
||||
## 七、待解决问题
|
||||
|
||||
1. **D3D12_RenderModel_Integration** - main_render.cpp API 不兼容,需修复
|
||||
2. **GUI 集成测试** - CTest 无法直接运行 Win32 GUI 程序 (已用 Python wrapper 解决)
|
||||
3. **Golden Image 更新流程** - 如何在硬件差异时更新 GT
|
||||
|
||||
---
|
||||
|
||||
**文档版本**: 1.0
|
||||
**更新日期**: 2026-03-20
|
||||
**当前阶段**: Phase 1 完成,等待 Phase 2 开始
|
||||
@@ -129,7 +129,7 @@ add_test(NAME D3D12_Minimal_Integration
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/run_integration_test.py
|
||||
$<TARGET_FILE:D3D12_Minimal>
|
||||
minimal.ppm
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GT.ppm
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GT_minimal.ppm
|
||||
5
|
||||
WORKING_DIRECTORY $<TARGET_FILE_DIR:D3D12_Minimal>
|
||||
)
|
||||
|
||||
BIN
tests/RHI/D3D12/integration/GT_minimal.ppm
Normal file
BIN
tests/RHI/D3D12/integration/GT_minimal.ppm
Normal file
Binary file not shown.
Reference in New Issue
Block a user