feat: 完善 MCU 芯片自动化测试架构
- 重构为三角色协作:人+Arch AI+执行AI - 新增 Excel 寄存器表格解析工具,自动生成测试代码 - 新增串口日志分析工具,自动生成测试报告 - 完善项目文档:AGENTS.md、README.md - 创建自动化测试架构设计文档 - 添加示例测试任务 P01-001
This commit is contained in:
+12
-11
@@ -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/"
|
||||
],
|
||||
|
||||
@@ -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
@@ -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"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 架构提示词模板
|
||||
# Arch AI 提示词库
|
||||
|
||||
| 文件 | 用途 |
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `architecture-design.md` | 系统架构设计模板 |
|
||||
| `technical-evaluation.md` | 技术选型评估模板 |
|
||||
| [architecture-design.md](architecture-design.md) | 测试架构设计模板与规范 |
|
||||
| [compiler-config.md](compiler-config.md) | 编译器配置模板 |
|
||||
|
||||
@@ -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] 运行稳定无崩溃
|
||||
|
||||
## 验收通过条件
|
||||
- 所有功能点验证通过
|
||||
- 三个编译器测试都通过
|
||||
- 测试报告完整
|
||||
```
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# 执行AI 提示词库
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| [firmware-template.md](firmware-template.md) | 测试固件模板与规范 |
|
||||
| [bug-report.md](bug-report.md) | 测试反馈与问题报告模板 |
|
||||
@@ -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
|
||||
```
|
||||
Reference in New Issue
Block a user