# cgm_code_unit_test **Repository Path**: qu-shuwei/cgm_code_unit_test ## Basic Information - **Project Name**: cgm_code_unit_test - **Description**: CGM代码单元测试 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-30 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CGM 嵌入式固件单元测试 — AI 辅助方法探索与实践 ## 项目概述 本项目是 **CGM(持续血糖监测)嵌入式 C 固件**单元测试的方法探索与资产集合。围绕「存量代码补测试」和「AI 编码后测试工作流」两个目标,完成了三轮递进实践。详细方案、成果和结论见 [方案与实践报告](project_practice_report.md)。 ## 目录结构 ```text cgm_code_unit_test/ ├── README.md ← 本文件 ├── project_practice_report.md # 整盘方案与实践报告 ├── .cursor/rules/ │ └── project-rules.mdc # AI 自动加载的规则入口(按场景指向详细规范) ├── docs/ │ ├── standards/ # 人读详细规范(AI 规则的完整参考版) │ │ ├── 00-ai-collaboration-guide.md │ │ ├── 10-embedded-c-guide.md │ │ └── 20-testing-guide.md ├── cgm_code_unit_test_v1/ # 第一轮:大范围可跑测试 + 覆盖率 │ ├── cgm/ # 被测固件 C 源码 │ └── tests/unit_test/ # Unity 测试、构建脚本、覆盖率报告 ├── cgm_code_unit_test_v2/ # 第二轮:规范化筛选 + 生成 + 门禁 │ ├── cgm/ # 被测固件 C 源码(与 v1 对齐) │ └── tests/ │ ├── specs/ # 筛选规范、生成规范 │ ├── reports/ # 筛选报告、分层策略、FAQ │ └── unit_test/ # Unity 测试、doubles、build/run 脚本 └── cgm_code_unit_test_v3/ # 第三轮:BLE 接收链路 AI 实现 ├── project.yml # Ceedling 项目配置 ├── ble_recv_pipeline_requirements.md # 需求文档(单一事实源) ├── include/ # 对外公开接口 ├── src/ # 五阶段管线实现 │ ├── ble_recv/ # 拼帧、校验/解码、命令分发 │ ├── commands/ # BLE 命令处理器 │ ├── crypto/ # CRC16、XXTEA、DH │ ├── device/ # device_api stub │ └── ble_hal/ # HAL stub ├── test/ # test_*.c 测试源码(Ceedling 自动发现) │ └── support/ # fake/stub 测试替身 ├── docs/ │ ├── ceedling_manual.md # Ceedling 详细说明书(人读参考手册) │ ├── specs/ # 筛选规范、生成规范、Ceedling 工具规范 │ ├── plans/ # 测试入口清单、场景矩阵与生成计划 │ └── reports/ # DHF 格式子程序测试记录 └── ai_coding_test_workflow.md # 端到端工作流(五阶段主控文档) ``` ## 技术栈 | 类别 | 技术 | | -------- | --------------------------------------------- | | 语言 | C99 | | 编译器 | GCC(MinGW-w64 / MSYS2) | | 测试框架 | Unity(精简版,v1/v2)、Ceedling + CMock(v3) | | 构建 | Batch 脚本(v1/v2)、Ceedling(v3) | | 覆盖率 | gcov + gcovr | | 平台 | Windows(主机侧测试,与目标硬件解耦) | ## 环境要求 - **GCC**:MinGW-w64 或 MSYS2,需加入系统 `PATH` - **Ruby + Ceedling**(仅 v3 需要):`gem install ceedling` - **gcovr**(仅覆盖率报告需要):`pip install gcovr` ## 文档索引 ### 总览与规范 | 文档 | 说明 | | ------------------------------------------------------- | ----------------------------------------- | | [方案与实践报告](project_practice_report.md) | 三轮实践全文、两种模式对比、AI 与人工边界 | | [AI 协作指南](docs/standards/00-ai-collaboration-guide.md) | 人机协作原则(中文详细版) | | [嵌入式 C 规范](docs/standards/10-embedded-c-guide.md) | 编码风格、命名、内存、错误处理等规范 | | [测试规范](docs/standards/20-testing-guide.md) | 测试方法论:分层、替身策略、覆盖率目标 | > **`docs/standards/` vs `.cursor/rules/` 的分工**: > > - `docs/standards/*.md` 是**人读的完整参考规范**,有示例、解释和 rationale,适合学习和 review。 > - `.cursor/rules/project-rules.mdc` 是**AI 自动加载的规则入口**(alwaysApply),按操作场景(编辑 C 代码、编辑测试、V3 工作区等)指引 AI 读取对应的详细规范。 ### 第一轮(无规范 AI 辅助) | 文档 | 说明 | | --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | | [方案与实现说明](cgm_code_unit_test_v1/tests/unit_test/design_and_implementation.md) | 工程组织原因、test_*.c 编写方法、Unity/Stub/Mock/Fake 落地方式、构建与覆盖率链路、新增模块扩展步骤 | | [覆盖率总结](cgm_code_unit_test_v1/tests/unit_test/coverage_summary_report.md) | 11 模块 162 用例概览、覆盖率表格与图表 | | [构建运行指南](cgm_code_unit_test_v1/tests/unit_test/build_and_run_guide.md) | 环境准备、构建运行命令、常见问题排查 | | [测试约定](cgm_code_unit_test_v1/tests/unit_test/test_conventions.md) | 文件组织、命名、注释和同步更新约定 | | [子程序测试记录](cgm_code_unit_test_v1/tests/unit_test/subprogram_test_records.md) | DHF 格式的逐函数测试记录:输入、期望、实测 | ### 第二轮(规范驱动筛选与生成) | 文档 | 说明 | | --------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [筛选规范](cgm_code_unit_test_v2/tests/specs/candidate_screening_spec.md) | 三层流水线(标签→噪音过滤→评分)、15 项信号定义、阈值校准 | | [生成规范](cgm_code_unit_test_v2/tests/specs/test_generation_spec.md) | 用例结构、命名、断言标准、QG 门禁定义(v2.3) | | [筛选报告](cgm_code_unit_test_v2/tests/reports/screening_report.md) | 11 个源文件 149 候选函数分级清单 | | [分层策略](cgm_code_unit_test_v2/tests/reports/scope_and_layering_report.md) | 加密/存储/命令处理器分层取舍 | | [用例生成计划](cgm_code_unit_test_v2/tests/unit_test/plans/test_generation_plan.md) | 已落地函数的场景矩阵、具体输入/期望 | | [可测性改造](cgm_code_unit_test_v2/tests/reports/testability_improvement_guide.md) | 全局依赖、签名欺骗等反模式的隔离方案 | | [流程 FAQ](cgm_code_unit_test_v2/tests/reports/workflow_faq.md) | 筛选判断案例、常见争议解答 | ### 第三轮(AI 编码 + 同步测试) | 文档 | 说明 | | ------------------------------------------------------------------------ | -------------------------------------- | | [BLE 接收链路需求](cgm_code_unit_test_v3/ble_recv_pipeline_requirements.md) | 五阶段管线需求(单一事实源) | | [测试筛选规范](cgm_code_unit_test_v3/docs/specs/test_selection_spec.md) | 需求级/行为级/风险级三层测试筛选方法论 | | [用例生成规范](cgm_code_unit_test_v3/docs/specs/test_generation_spec.md) | 用例结构、策略选择、隔离方案、质量门禁 | | [Ceedling 工具规范](cgm_code_unit_test_v3/docs/specs/ceedling_spec.md) | AI 编写测试的工具约束与模板 | | [Ceedling 详细说明书](cgm_code_unit_test_v3/docs/ceedling_manual.md) | 安装、原理、build 目录、命令大全、排障 | | [AI 编码测试工作流](cgm_code_unit_test_v3/ai_coding_test_workflow.md) | 端到端工作流(主控文档,五阶段,调用上述规范) | | [测试入口清单](cgm_code_unit_test_v3/docs/plans/test_entry_list.md) | 设计阶段交付物:8 模块 23 函数 4 批次 | | [测试方案(场景矩阵)](cgm_code_unit_test_v3/docs/plans/test_generation_plan.md) | 逐函数场景矩阵、UT-ID 映射、策略与隔离方案 | | [子程序测试记录](cgm_code_unit_test_v3/docs/reports/subprogram_test_records.md) | DHF 格式,96 条用例详细记录与覆盖率统计 |