Files
ViewDesignEngine/docs/05-测试验证/01-测试计划.md
T

3.2 KiB
Raw Blame History

测试计划

目录

  1. 测试策略
  2. 测试环境
  3. 单元测试规范
  4. 性能基准
  5. 回归测试
  6. 测试数据管理

1. 测试策略

测试金字塔

         ┌───────┐
         │  端到端 │  完整建模工作流测试
         ├───────┤
         │  集成  │  模块间交互测试
         ├───────┤
         │  单元  │  每个函数/类的独立测试(主力)
         └───────┘
层次 范围 工具 覆盖目标
单元测试 单个函数/类 Google Test ≥ 90%
集成测试 模块间交互 Google Test 关键路径
端到端测试 完整工作流 自定义脚本 典型场景
性能测试 单个算法 Google Benchmark 回归监控

2. 测试环境

环境 编译器 平台
CI linux-gcc GCC 11 Ubuntu 22.04
CI linux-clang Clang 15 Ubuntu 22.04
CI windows-msvc MSVC 2022 Windows Server 2022
CI macos-clang Apple Clang 14 macOS 13

CI 流程

Push / PR
  ├──► 编译(Debug + Release)
  ├──► 单元测试
  ├──► 代码覆盖率(lcov → Codecov
  ├──► 静态分析(clang-tidy)
  └──► 性能基准(Release 构建,与基线对比)

3. 单元测试规范

命名规则

TEST(<模块名>Test, <函数名>_<场景描述>)

示例:TEST(MeshTest, Simplify_ReducesFaceCount)

AAA 结构

TEST(PointTest, Distance_SamePoint_ReturnsZero) {
    // Arrange(准备)
    Point3D a(1, 2, 3), b(1, 2, 3);
    // Act(执行)
    double d = (a - b).norm();
    // Assert(断言)
    EXPECT_DOUBLE_EQ(d, 0.0);
}

必测场景

  1. 正常输入Happy Path
  2. 边界条件(空集、单元素、极值)
  3. 退化情况(共线、共面、零面积)
  4. 错误输入(非法参数、无效状态)
  5. 精度边界(极小/极大坐标值)

4. 性能基准

算法 输入规模 性能目标
Delaunay 2D 10⁶ 点 ≤ 10 秒
BVH 构建 10⁶ 三角面 ≤ 5 秒
BVH 射线查询 10⁶ 三角面 ≤ 0.1 毫秒/次
GJK 碰撞检测 凸体 ≤ 30 次迭代
布尔运算 2D 10³ 顶点 ≤ 0.1 秒
NURBS 求值 ≤ 1 微秒/次

5. 回归测试

  • Golden File 测试:将标准测试用例输出与参考文件比对
  • 性能回归:基准测试结果与历史对比,性能退化 > 10% 报警

6. 测试数据管理

data/
├── meshes/
│   ├── primitives/          # 基本体(球、盒、柱)
│   ├── stanford/            # Stanford 标准模型
│   │   ├── bunny.obj
│   │   ├── dragon.obj
│   │   └── armadillo.obj
│   └── degenerate/          # 退化情况
│       ├── non_manifold.obj
│       └── zero_area.obj
└── curves/
    ├── bezier_basic.json
    └── nurbs_circle.json