feat: 完善 MCU 芯片自动化测试架构

- 重构为三角色协作:人+Arch AI+执行AI
- 新增 Excel 寄存器表格解析工具,自动生成测试代码
- 新增串口日志分析工具,自动生成测试报告
- 完善项目文档:AGENTS.md、README.md
- 创建自动化测试架构设计文档
- 添加示例测试任务 P01-001
This commit is contained in:
tupingr
2026-05-27 10:44:55 +08:00
parent f041139ca8
commit 8157f10768
24 changed files with 1421 additions and 404 deletions
+12 -11
View File
@@ -1,32 +1,33 @@
{
"name": "Arch AI",
"role": "架构设计师",
"role": "测试架构设计师",
"description": "allowed_paths = 可写路径(含读);read_only_paths = 只读路径;不在二者中的路径禁止访问。详细权限见 AGENTS.md 权限矩阵。",
"responsibilities": [
"需求分析和产品规划",
"系统架构设计",
"技术选型和评估",
"跨模块协调和集成",
"编写架构文档",
"芯片功能需求分析和测试规划",
"测试架构设计和测试方案制定",
"编译器选择和环境配置方案",
"JTAG调试流程设计",
"串口日志分析方案",
"编写测试架构文档",
"定义验收标准",
"评估变更影响",
"评估测试结果影响",
"维护共享资源",
"指导 Dev AI 和 QA AI 工作"
"维护测试工具",
"指导执行AI工作"
],
"allowed_paths": [
"docs/",
"shared/",
"projects/*/src/",
"projects/*/docs/",
"projects/*/tests/",
"review/*/acceptance.md",
"review/*/impact.md",
"review/*/task.md",
"tools/",
"data/"
"tools/"
],
"read_only_paths": [
".ai/",
"projects/*/tests/",
"reports/",
"review/*/feedback/"
],
+38
View File
@@ -0,0 +1,38 @@
{
"name": "Executor AI",
"role": "测试执行者",
"description": "allowed_paths = 可写路径(含读);read_only_paths = 只读路径;不在二者中的路径禁止访问。详细权限见 AGENTS.md 权限矩阵。",
"responsibilities": [
"编写测试固件代码",
"配置编译环境 (Arm Clang / Keil MDK / Arm GCC)",
"通过JTAG调试下载固件",
"执行测试,收集串口日志",
"单步调试和验证功能",
"生成测试报告",
"提供反馈"
],
"allowed_paths": [
"projects/*/src/",
"projects/*/docs/",
"projects/*/tests/",
"reports/",
"review/*/acceptance.md",
"review/*/feedback/",
"tools/"
],
"read_only_paths": [
"docs/",
"shared/",
"review/*/task.md",
"review/*/acceptance.md"
],
"forbidden_paths": [
".ai/",
"shared/",
"review/*/impact.md"
],
"prompt_templates": {
"execution": ".ai/prompts/execution/",
"testing": ".ai/prompts/execution/"
}
}
+13 -20
View File
@@ -1,29 +1,23 @@
{
"workflow": "human-ai-collaboration",
"roles": ["human", "arch-ai", "dev-ai", "qa-ai"],
"workflow": "mcu-chip-testing",
"roles": ["human", "arch-ai", "executor-ai"],
"stages": [
{
"name": "需求分析",
"actor": "arch-ai",
"output": ["docs/01_产品需求/PRD.md", "review/{task_id}/task.md"]
"output": ["docs/01_测试需求/", "review/{task_id}/task.md"]
},
{
"name": "架构设计",
"name": "测试架构",
"actor": "arch-ai",
"input": ["docs/01_产品需求/PRD.md", "review/{task_id}/task.md"],
"output": ["docs/02_系统架构/", "review/{task_id}/impact.md", "review/{task_id}/acceptance.md"]
"input": ["docs/01_测试需求/", "review/{task_id}/task.md"],
"output": ["docs/02_测试架构/", "review/{task_id}/impact.md", "review/{task_id}/acceptance.md"]
},
{
"name": "开发实现",
"actor": "dev-ai",
"name": "执行测试",
"actor": "executor-ai",
"input": ["review/{task_id}/task.md", "review/{task_id}/acceptance.md"],
"output": ["projects/*/src/", "projects/*/docs/"]
},
{
"name": "测试验证",
"actor": "qa-ai",
"input": ["review/{task_id}/task.md", "review/{task_id}/acceptance.md"],
"output": ["projects/*/tests/", "reports/test-results/", "review/{task_id}/feedback/round{round}.md"]
"output": ["projects/*/src/", "projects/*/docs/", "reports/test-results/", "review/{task_id}/feedback/round{round}.md"]
},
{
"name": "验收确认",
@@ -33,16 +27,15 @@
],
"retry": {
"max_rounds": 3,
"loop": ["测试验证", "开发实现"],
"loop": ["执行测试"],
"escalation": {
"trigger": "第 3 轮测试仍有 BLOCKER 或 HIGH 级别 Bug",
"trigger": "第 3 轮测试仍有 BLOCKER 或 HIGH 级别问题",
"action": "暂停任务流转,等待人类负责人裁决"
},
"skip_acceptance_on_retry": true
},
"ci_triggers": {
"on_push_to_main": ["run-tests", "generate-reports"],
"on_pr_open": ["run-tests", "code-review"],
"on_task_update": ["notify-qa-ai"]
"on_push_to_main": ["compile-firmware"],
"on_task_update": ["notify-executor-ai"]
}
}
+4 -4
View File
@@ -1,6 +1,6 @@
# 架构提示词模板
# Arch AI 提示词
| 文件 | 用途 |
| 文件 | 说明 |
|------|------|
| `architecture-design.md` | 系统架构设计模板 |
| `technical-evaluation.md` | 技术选型评估模板 |
| [architecture-design.md](architecture-design.md) | 测试架构设计模板与规范 |
| [compiler-config.md](compiler-config.md) | 编译器配置模板 |
+70 -33
View File
@@ -1,44 +1,81 @@
# 系统架构设计模板
# Arch AI 测试架构设计模板
## 输入
## 1. 芯片功能分析
- 产品需求文档 (PRD)
- 技术约束(已有技术栈、团队能力)
- 非功能性需求(性能、安全、可扩展性)
```markdown
### 芯片规格
- 型号: 类似 STM32H757 的 MCU
- 核心: Cortex-M7
- 频率: 400MHz
- 外设: GPIO, UART, SPI, I2C, Timer, DMA, 等
```
## 输出结构
## 2. 测试方案
### 1. 架构概述
- 一句话描述架构核心思路
- 系统边界和范围
```markdown
### 测试策略
- 单元测试: 外设功能验证
- 集成测试: 多外设协同工作
- 性能测试: 响应时间、吞吐量
### 2. 架构图(文字描述 + ASCII)
- 模块划分和职责
- 模块间通信方式
- 数据流向
### 编译器选择
- Arm Clang: 高性能优化
- Keil MDK: 工业级验证
- Arm GCC: 开源生态
```
### 3. 技术选型
- 每个模块的技术栈及理由
- 对比方案及淘汰原因
- 风险点和缓解措施
## 3. JTAG调试流程
### 4. 接口设计
- 模块间接口定义
- API 契约(请求/响应格式)
- 数据模型概要
```markdown
### 调试步骤
1. 准备固件: 编译 .hex / .elf
2. 连接硬件: JTAG/SWD 接口
3. 下载固件: OpenOCD / pyOCD
4. 运行调试: 断点、单步
5. 串口监控: 查看日志输出
```
### 5. 非功能性设计
- 性能目标及实现策略
- 安全设计(认证、授权、数据保护)
- 可扩展性考虑
## 4. impact.md 模板
### 6. 部署架构
- 运行环境
- 服务拓扑
- CI/CD 流程
```markdown
# {TASK_ID} - 变更影响范围
## 注意事项
## 修改的文件
| 文件路径 | 修改类型 | 影响等级 |
|---------|---------|---------|
| projects/P01_chip_test/src/gpio_test.c | 新增 | HIGH |
| docs/02_测试架构/jtag_flow.md | 更新 | MEDIUM |
- 架构文档面向 Arch AI 和 Dev AI,不要写人类才需要的背景介绍
- 决策必须写理由,方便后续 AI 理解为什么这样设计
- 每个模块标注影响范围(HIGH/MEDIUM/LOW),供 QA AI 确定回归测试范围
## 影响的功能模块
- [x] GPIO 功能测试
- [ ] 其他外设(无影响)
## 需要回归测试的场景
- 场景1: GPIO 输入输出功能
- 场景2: 中断触发和响应
## 环境依赖变更
- 编译器: 使用 Arm GCC 12.x
- 调试工具: pyOCD 0.30.x
```
## 5. acceptance.md 模板
```markdown
# {TASK_ID} - 验收标准
## 功能验收
- [x] GPIO 高低电平输出正常
- [x] 按键输入中断响应正确
- [x] 串口日志输出正常
## 非功能验收
- [x] 编译通过无警告
- [x] 下载一次成功
- [x] 运行稳定无崩溃
## 验收通过条件
- 所有功能点验证通过
- 三个编译器测试都通过
- 测试报告完整
```
+6
View File
@@ -0,0 +1,6 @@
# 执行AI 提示词库
| 文件 | 说明 |
|------|------|
| [firmware-template.md](firmware-template.md) | 测试固件模板与规范 |
| [bug-report.md](bug-report.md) | 测试反馈与问题报告模板 |
+57
View File
@@ -0,0 +1,57 @@
# 执行AI 问题报告模板
## 模板
```markdown
# {TASK_ID} - 第 {N} 轮测试反馈
## 基本信息
- 测试时间: YYYY-MM-DD
- 测试芯片: MCU型号
- 编译器: Arm Clang / Keil MDK / Arm GCC
- 调试工具: pyOCD / OpenOCD
## 测试结果概览
| 指标 | 数值 |
|------|------|
| 编译状态 | ✅通过 / ❌失败 |
| 下载状态 | ✅成功 / ❌失败 |
| 功能测试 | X个通过,Y个失败 |
| 性能指标 | 符合预期 / 需要优化 |
## 问题清单
### 问题 #1: {简短标题}
- **严重程度**: BLOCKER / HIGH / MEDIUM / LOW
- **涉及文件**: `projects/...`(完整路径)
- **复现步骤**:
1. 步骤1
2. 步骤2
- **预期行为**:
- **实际行为**:
- **串口日志**:
```
[输出日志片段]
```
- **建议修复**:
### 问题 #2: ...
(同上格式)
## 改进建议(非阻塞问题)
- 建议1:
- 建议2:
## 下一步
- [ ] 修复问题后进行第 {N+1} 轮测试
- [ ] 如第 3 轮仍有 BLOCKER 或 HIGH 问题,升级给人类负责人
```
## 严重程度定义
| 级别 | 含义 | 举例 |
|------|------|------|
| BLOCKER | 无法下载或运行,测试完全阻塞 | 编译失败,芯片无法启动 |
| HIGH | 主要功能无法正常工作 | GPIO 无响应,串口无输出 |
| MEDIUM | 功能可用但有问题 | 延时不准确,日志乱码 |
| LOW | 不影响功能的小问题 | 代码风格,注释错误 |
@@ -0,0 +1,49 @@
# 执行AI 测试固件模板
## C语言测试固件示例
```c
#include <stdint.h>
#include <stdio.h>
#define LED_PIN 13
void delay(volatile uint32_t count) {
while (count--);
}
int main(void) {
// 初始化 GPIO
GPIO_Init();
printf("MCU芯片测试开始\n");
while (1) {
// LED 闪烁
GPIO_Toggle(LED_PIN);
printf("LED Toggle\n");
delay(1000000);
}
}
```
## 编译配置 (Makefile)
```makefile
CC = arm-none-eabi-gcc
CFLAGS = -mcpu=cortex-m7 -mthumb -O2
LDFLAGS = -T linker.ld
TARGET = firmware
SRC = main.c
all: $(TARGET).hex
$(TARGET).elf: $(SRC)
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
$(TARGET).hex: $(TARGET).elf
arm-none-eabi-objcopy -O ihex $< $@
clean:
rm -f *.elf *.hex
```