测试规范与质量标准 v1.0
测试规范与质量标准 v1.0
摘要
本规范定义 Xisound 研发中心 全产品线、全阶段、全岗位 的测试与质量红线,是 研发中心章程 §4.2 与 XiTest 三件套在"规范层"的落地。 覆盖 四层测试体系(Unit / Integration / Regression / UI)、CI 集成、金标管理、Tapeout 放行、Bug 等级、质量指标(MTBF / THD+N / SNR) 六大主题。 所有产品线研发人员必须遵守本规范;各产品可在不违反红线前提下补充自己的细化规范。
1. 适用范围
- 软件产品:XiStudio / XiForge / XiTune / 后端服务
- 固件:XiDSP 固件、XiBox 系统软件
- 芯片:XiDSP / XiCore(与
ic-dev-spec.md交叉引用) - 算法:XiAlgo 各套件(与
algo-dev-spec.md交叉引用) - 硬件:XiAmp / XiBox(与
hw-dev-spec.md交叉引用)
2. 四层测试体系
2.1 层级关系
graph TB
U[Unit Test<br/>单元测试] --> I[Integration Test<br/>集成测试]
I --> R[Regression Test<br/>回归测试]
R --> E[UI / E2E Test<br/>端到端测试]
U -.金标比对.-> G[Golden Reference]
R -.长期趋势.-> K[KPI Dashboard]
class U xyL1
class I xyL2
class R xyL3
class E xyL4
class G,K xyL0
2.2 各层职责
| 层 | 范围 | 负责人 | 触发 | 目标 |
|---|---|---|---|---|
| Unit | 单函数 / 单类 | 代码作者 | 每次提交 | 增量覆盖率 ≥ 70% |
| Integration | 模块间交互 | 模块 Owner | 合 PR 前 | 关键路径 100% |
| Regression | 整产品版本 | QA 团队 | Nightly / Release | 金标 100% 通过 |
| UI / E2E | 用户真实路径 | QA + 产品 | 版本候选 | 关键场景 100% |
2.3 覆盖率目标(按产品类别)
| 产品类别 | Line | Branch | 备注 |
|---|---|---|---|
| 软件核心库 | ≥ 80% | ≥ 70% | XiAlgo / 后端核心 |
| 桌面应用 UI | ≥ 60% | ≥ 50% | XiStudio / XiForge |
| 芯片固件 | ≥ 90% | ≥ 85% | XiDSP 固件 |
| 算法 C 实现 | ≥ 95% | ≥ 90% | 与金标结合 |
| 脚本 / 工具 | ≥ 50% | — | CI / 构建脚本 |
3. 单元测试(Unit Test)
3.1 框架选择
| 语言 | 框架 | 说明 |
|---|---|---|
| C/C++ | Google Test / Unity | 嵌入式首选 Unity |
| C# | xUnit / NUnit | xUnit 为默认 |
| TypeScript | Vitest / Jest | Vitest 为 Vite 生态首选 |
| Python | Pytest | 配合 coverage.py |
3.2 单元测试原则
单元测试七原则(FIRST + 2)
- Fast:毫秒级,不访问网络 / 文件系统(除非隔离)
- Independent:测试之间无顺序依赖
- Repeatable:任何时间任何环境结果一致
- Self-validating:断言明确,不人工判
- Timely:与代码同步(不是最后补)
- Naming:测试名表达"情境 + 期望"(如
EQBypass_WhenFreq0_ShouldOutputEqualInput) - One assert(原则上):一个测试方法表达一个事实
3.3 Mock 与 Fake
- 外部依赖(网络 / 数据库 / 硬件)必须用 Mock / Fake 替代
- 算法层使用固定输入(而非随机)+ 金标断言
- Mock 框架:Moq(C#) / unittest.mock(Python) / gmock(C++)
4. 集成测试
4.1 典型场景
- 模块间接口:Mixer ↔ DSP、前端 ↔ 后端 API
- 固件 ↔ 硬件:Bring-up 脚本、自检程序
- 算法 ↔ 平台:XiAlgo 在 XiStudio 中的插件加载与参数下发
4.2 环境要求
- 独立测试环境(不污染开发机)
- 每次跑 Integration Test 前重置环境到已知基线
- 使用容器 / 虚拟机固化环境
4.3 数据管理
- 黄金数据集(Golden dataset)集中存放,不随代码仓
- 测试数据按业务场景分类:典型 / 边界 / 异常 / 压力
- 大数据集走 Git LFS 或对象存储
5. 回归测试
5.1 回归分级
| 级别 | 频率 | 范围 | 目标时长 |
|---|---|---|---|
| PR Gate | 每次 PR | 关键子集 | ≤ 15 min |
| Nightly | 每日 | 全量 | ≤ 8 h |
| Weekly | 每周 | 扩展(长时 / 性能 / 跨平台) | ≤ 48 h |
| Release | 每次发版 | 全量 + 手工抽测 | 业务决定 |
5.2 金标管理
- 每个算法 / 核心模块有对应金标集(见
algo-dev-spec.md§8) - 金标更新必须有 ADR 记录 + 双人签批
- 金标版本与产品版本解耦(金标独立打 Tag)
5.3 性能回归
- 关键性能指标(延迟 / 吞吐 / MIPS / 内存)纳入回归
- 阈值:任一指标劣化 > 5% 即阻塞(除非有 ADR)
6. UI / E2E 测试
6.1 框架选择
| 平台 | 框架 |
|---|---|
| Web 前端 | Playwright / Cypress |
| Electron | Playwright(Electron 适配) |
| 桌面 .NET | FlaUI / WinAppDriver |
| 移动 | Appium(未来扩展) |
6.2 关键场景覆盖
XiStudio / XiForge 等产品必须覆盖: - 登录 / 授权激活 - 新建工程 → 编辑 → 保存 → 重新打开 - 插件加载 / 参数保存 / Undo-Redo - 导出 / 导入 / 打印 - 错误路径(无网络 / 文件损坏 / 授权失效)
6.3 稳定性
- Flaky Test 零容忍:连续 3 次失败则禁用 + 挂 Issue
- 每次 E2E 运行记录视频 + 截图,失败时作为证据
7. CI / CD 集成
7.1 流水线结构
graph LR
P[PR 提交] --> L[Lint + Format]
L --> B[Build Matrix]
B --> U[Unit Tests]
U --> I[Integration Tests]
I --> S[SAST + SCA]
S --> G{质量门禁}
G -- 通过 --> M[可合并标记]
G -- 失败 --> R[阻塞 + 回报]
class P xyL0
class L,B xyL2
class U,I xyL3
class S xyWarn
class G xyWarn
class M xySuccess
class R xyError
7.2 质量门禁(Quality Gate)
任一项失败 → PR 阻塞,不能合并: - Lint / Format 有 Error - Unit Test 有失败 - 增量覆盖率 < 70% - SAST / SCA 有 High+ - PR 体量 > 500 行且未拆分
7.3 Nightly 与趋势
- Nightly 跑全量回归
- 指标推送到 KPI Dashboard(Grafana / 自研)
- 覆盖率 / 性能 / 稳定性 / 安全四维趋势图持续可见
8. Tapeout 放行与出厂测试
8.1 Tapeout 放行清单
与 ic-dev-spec.md §7.1 的 "Tapeout 八不放" 呼应,测试维度要点:
测试视角的 Tapeout 红线
- Release Regression 最近一次 0 Fail
- 代码 / 功能 / 断言覆盖率全部达标
- CDC / Lint / Formal 零未豁免违规
- DFT ATPG 覆盖率 ≥ 目标(Stuck-at ≥ 99%)
- Bring-up Plan 已含完整测试策略
- 出厂测试程序(FT Program)已有初版
8.2 出厂测试(FT)
- FT 程序在 Bring-up 阶段完成 v1
- 覆盖:功能 / 参数 / 性能(关键) / DFT
- 目标:每片测试时长 ≤ 5 秒,良率判据清晰
- 量产阶段每周抽样 50 片做"FT 对比测试"(设备 A vs 设备 B)
9. Bug 等级与质量指标
9.1 Bug 等级定义
| 等级 | 定义 | 响应 SLA | 解决 SLA |
|---|---|---|---|
| P0 | 生产不可用 / 数据损坏 / 安全严重 | ≤ 1 h | ≤ 24 h |
| P1 | 主要功能不可用 / 严重性能劣化 | ≤ 4 h | ≤ 3 d |
| P2 | 次要功能异常 / 体验问题 | ≤ 1 d | ≤ 2 w |
| P3 | 体验小瑕疵 / 文档问题 | ≤ 1 w | 纳入迭代 |
9.2 P0 红线
- P0 Bug 发现 → 必须立即启动 应急响应流程
- 涉及客户现场 → 商务中心同步通报
- 解决后必须出 RCA(Root Cause Analysis)报告
- P0 外溢率 = 0(版本发布后才发现的 P0 数 / 版本数)
9.3 质量指标
软件
- 崩溃率(Crash Rate) ≤ 0.1%
- 版本按时发布率 ≥ 90%
- P0 外溢率 = 0
- 自动化测试覆盖率 ≥ 70%
硬件
- 量产不良率 ≤ 1%(消费) / ≤ 0.3%(车规)
- MTBF ≥ 5 万小时(消费) / ≥ 20 万小时(车规)
- RMA 率 ≤ 0.5%
音频性能(核心产品通用)
| 指标 | 消费级目标 | 车规/专业级目标 |
|---|---|---|
| THD+N | ≤ 0.01% | ≤ 0.005% |
| SNR | ≥ 110 dB | ≥ 120 dB |
| Dynamic Range | ≥ 110 dB | ≥ 120 dB |
| Crosstalk | ≤ -90 dB | ≤ -100 dB |
| 响应延迟 | ≤ 10 ms | ≤ 5 ms |
10. 附录
10.1 测试文档模板
每个产品 / 模块测试套件应有: - Test Plan:范围、策略、资源、里程碑 - Test Case:用例条目(ID / 前置 / 步骤 / 期望 / 实际) - Test Report:执行结果、Pass Rate、Issue 汇总 - RCA:P0 / P1 Bug 的根因分析
10.2 关联文档
10.3 版本历史
| 版本 | 日期 | 要点 |
|---|---|---|
| v1.0 | 2026-05-05 | 首版 · 四层测试 + Tapeout 红线 + P0 外溢 0 |
test-spec.md · D1-B-SPEC-004 · v1.0 · 2026-05-05 · Xisound 研发中心