Files
ai_soc_sw/docs/02_测试架构/automated_test_architecture.md
tupingr 8157f10768 feat: 完善 MCU 芯片自动化测试架构
- 重构为三角色协作:人+Arch AI+执行AI
- 新增 Excel 寄存器表格解析工具,自动生成测试代码
- 新增串口日志分析工具,自动生成测试报告
- 完善项目文档:AGENTS.md、README.md
- 创建自动化测试架构设计文档
- 添加示例测试任务 P01-001
2026-05-27 10:44:55 +08:00

7.3 KiB

自动化测试架构设计

目标

基于芯片手册和 Excel 寄存器表格,通过 JTAG 调试工具和串口工具,自动验证芯片实际功能是否与文档描述一致。


架构概览

┌────────────────────────────────────────────────────────────┐
│                     输入资源层                            │
│  ┌──────────────────┐  ┌──────────────────────┐        │
│  │ Excel寄存器表格  │  │ 芯片手册/文档        │        │
│  └──────────────────┘  └──────────────────────┘        │
└────────────────────────┬───────────────────────────────────┘
                         │
┌────────────────────────▼───────────────────────────────────┐
│                  解析与生成层 (Arch AI)                    │
│  ┌─────────────────────────────────────────────────────┐ │
│  │ 寄存器解析 → 寄存器定义头文件 → 测试框架代码生成    │ │
│  └─────────────────────────────────────────────────────┘ │
└────────────────────────┬───────────────────────────────────┘
                         │
┌────────────────────────▼───────────────────────────────────┐
│                 自动化测试层 (执行AI)                      │
│  ┌─────────────────────────────────────────────────────┐ │
│  │ 测试固件编译 → JTAG下载 → 运行 → 串口日志收集     │ │
│  └─────────────────────────────────────────────────────┘ │
└────────────────────────┬───────────────────────────────────┘
                         │
┌────────────────────────▼───────────────────────────────────┐
│                  验证与报告层                              │
│  ┌─────────────────────────────────────────────────────┐ │
│  │ 日志解析 → 与预期结果对比 → 生成测试报告            │ │
│  └─────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────┘

核心组件

1. 寄存器解析器

  • 输入:docs/00_芯片资料/registers/*.xlsx
  • 输出:
    • C 头文件 (projects/P01_chip_test/inc/registers.h)
    • 测试描述文件 (projects/P01_chip_test/tests/test_specs.json)

2. 测试固件生成器

  • 输入:测试描述文件
  • 输出:
    • 自动生成的测试代码 (projects/P01_chip_test/src/auto_*.c)
    • 包含:寄存器读写测试、功能验证、串口输出

3. JTAG 调试工具

  • 位置:tools/jtag/
  • 功能:
    • 自动编译固件
    • JTAG 下载固件
    • 单步调试控制
    • 断点设置

4. 串口监控工具

  • 位置:tools/uart/
  • 功能:
    • 实时监控串口输出
    • 日志捕获与保存
    • 日志格式解析

5. 结果验证器

  • 输入:捕获的串口日志
  • 输出:
    • PASS/FAIL 结果
    • 差异报告
    • 统计信息

测试流程

┌─────────────────┐
│ 1. 解析寄存器   │
│   Excel 表格    │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 2. 生成头文件   │
│   registers.h   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 3. 生成测试代码 │
│   auto_test.c   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 4. 编译固件     │
│   Arm GCC/Clang │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 5. JTAG 下载    │
│   到芯片        │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 6. 运行测试     │
│   串口输出日志  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 7. 日志捕获     │
│   分析结果      │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ 8. 验证与报告   │
│   生成测试报告  │
└─────────────────┘

测试类型

1. 寄存器读写测试

  • 写入已知值到寄存器
  • 读回寄存器值
  • 验证读写一致性

2. 位域操作测试

  • 设置特定位域
  • 读取并验证位域值
  • 验证复位值

3. 功能模块测试

  • GPIO:输入输出、中断
  • UART:发送接收
  • Timer:定时、中断
  • 其他外设

4. 边界条件测试

  • 极端值测试
  • 非法值测试
  • 时序测试

串口日志格式

测试固件输出日志格式:

[TEST] 测试名称: 开始
[REG] 寄存器名: 写入值=0x1234, 读回值=0x1234
[PASS] 寄存器名: 读写一致
[FAIL] 寄存器名: 期望值=0x1234, 实际值=0x5678
[INFO] 附加信息
[TEST] 测试名称: 结束

工具链

工具 位置 用途
parse_registers.py shared/scripts/ 解析 Excel 寄存器表格
flash.sh tools/jtag/ JTAG 下载固件
monitor.sh tools/uart/ 串口监控
analyze_log.py shared/scripts/ 日志分析与验证

配置文件

test_config.json

{
  "target": "Cortex-M7",
  "compiler": "arm-none-eabi-gcc",
  "jtag_tool": "pyocd",
  "uart_port": "/dev/ttyUSB0",
  "uart_baud": 115200,
  "test_timeout": 30,
  "retry_count": 3
}