跳转至
MIGRATED

XiTest 产品规格书

摘要

本文档是 XiTest 测试验证平台完整技术规格书,涵盖框架架构、测试用例格式、执行引擎 API、HIL 协议、报告格式、CI 集成规范。 面向测试框架开发者、算法开发者、硬件工程师、DevOps 工程师。

数据来源

规格为 v1.0 GA 目标值(2027 Q4),最终以 Release Notes 为准。


1. 总体架构

1.1 系统总览

graph TB
    CLI[xitest CLI]
    Srv[XiTest Server<br/>Orchestrator]
    CLI --> Srv

    Srv --> UnitW[Unit Worker Pool]
    Srv --> IntegW[Integration Worker Pool]
    Srv --> HILW[HIL Controller]
    Srv --> UIW[UI Worker<br/>Playwright]

    UnitW --> XAlg[XiAlgo 单测]
    IntegW --> XLink[算法链路 E2E]
    HILW --> XDSP[XiDSP EVB]
    UIW --> XStu[XiStudio/XiForge]

    Srv --> DB[(用例数据库<br/>PostgreSQL)]
    Srv --> Store[(金标 WAV 存储<br/>MinIO/S3)]
    Srv --> Report[(报告存档<br/>S3 + ElasticSearch)]

    class CLI xyL4
    class Srv xyL2
    class UnitW,IntegW,HILW,UIW xyL3
    class XAlg xyL3
    class XLink xyL2
    class XDSP xyL0
    class XStu xyL4
    class DB,Store,Report xySuccess

1.2 技术栈

技术
编排器 Go + gRPC
执行节点 Docker + containerd
Unit 框架 Google Test / Catch2 + CMake
Integration 引擎 自研 xy-test-runner(Python + NumPy/SciPy)
UI 测试 Playwright + pixelmatch
HIL 控制 Python + 专业声卡驱动 + JTAG
存储 PostgreSQL(用例元数据)· MinIO/S3(WAV)· ES(日志/报告)
监控 Prometheus + Grafana + OpenTelemetry
API gRPC(内部)+ REST(CI/用户)

1.3 部署拓扑

环境 配置
Dev(单机) 16 核 CPU / 64GB / 本地 Docker
Staging 3 节点 K8s · 32 core 总容量
Production 10+ 节点 K8s · 200+ worker · HIL 集群独立

2. 测试用例格式

2.1 用例定义(YAML)

# tests/fx/eq_boost.test.yaml
id: fx-eq-bass-boost-01
category: integration
tags: [regression, fx, eq]
priority: P1
description: "验证低频增强 EQ  60Hz  +3dB"

input:
  audio: "golden/input_pink_noise.wav"
  sample_rate: 48000
  channels: 2

pipeline:
  - algorithm: xialgo.fx.eq
    params:
      band1: { freq: 60, gain: 3, Q: 0.707 }

expected:
  audio: "golden/output_pink_noise_60hz_plus3db.wav"
  metrics:
    freq_response_at_60hz: { value: 3.0, tolerance: 0.1 }  # dB
    thd_n: { max: 0.005 }  # 百分比
    rms_overall: { tolerance: 0.5 }  # dB

timeout: 30  # 秒
retry: 2

2.2 用例分类

分类 目录 示例
FX(效果器) tests/fx/ EQ / DRC / Delay / Reverb
NR(降噪) tests/nr/ SNS / 风噪 / 路噪
Audio I/O tests/io/ ADC / DAC / 编解码
链路(E2E) tests/e2e/ 完整前装链路 / 后装链路
UI(界面) tests/ui/ XiStudio / XiForge 场景
HIL(硬件) tests/hil/ XiDSP 烧录 + 实时验证

2.3 金标管理

  • 存储位置:golden/ 目录 + MinIO/S3(大文件)
  • 命名规范:<algorithm>_<scenario>_<version>.wav
  • 审批流:
  • 提交新基线 PR(附测量报告 + 评审意见)
  • 算法 lead + QA Review
  • 合并后立即全量回归一次

3. 执行引擎 API

3.1 CLI 命令

# 运行全量套件
xitest run --suite regression --parallel 16

# 运行指定标签
xitest run --tags smoke,fx

# 运行单个用例
xitest run --case fx-eq-bass-boost-01

# HIL 模式
xitest run --hil --target XiDSP-D1 --suite tapeout-full

# 生成报告
xitest report --format html --output report.html

# 列出失败用例
xitest failed --last-run

3.2 REST API

接口 方法 描述
POST /api/v1/runs POST 创建测试运行
GET /api/v1/runs/{id} GET 查询运行状态
GET /api/v1/runs/{id}/report GET 获取 HTML 报告
GET /api/v1/runs/{id}/failed GET 失败用例列表
POST /api/v1/cases/{id}/baseline POST 更新金标(需审批令牌)

3.3 gRPC(节点间内部通信)

service TestOrchestrator {
  rpc ScheduleRun(RunRequest) returns (RunResponse);
  rpc StreamLogs(RunID) returns (stream LogLine);
  rpc GetStatus(RunID) returns (RunStatus);
  rpc CancelRun(RunID) returns (CancelResult);
}

4. HIL 子系统

4.1 HIL 节点架构

graph LR
    Worker[HIL Worker<br/>Python]
    Worker --> JTAG[JTAG 烧录]
    Worker --> AudioOut[专业声卡<br/>输出]
    Worker --> AudioIn[专业声卡<br/>输入]
    Worker --> EVB[XiDSP EVB]

    JTAG --> EVB
    AudioOut --> EVB
    EVB --> AudioIn

    class Worker xyL2
    class JTAG,AudioOut,AudioIn xyL3
    class EVB xyL0

4.2 HIL 测试流程

  1. 烧录:用 XiStudio CLI 烧录算法固件到 EVB
  2. 播放:专业声卡向 EVB 输入金标音频
  3. 采集:同声卡输入通道采集 EVB 输出
  4. 比较:离线计算频响/THD+N/SNR 等指标
  5. 判定:与预期对比 + 容差判定

4.3 故障注入能力

类型 方法
电压波动 可编程电源(±20% 波动)
温度 恒温箱 -40 ~ +85°C
EMC 标准化干扰发生器
时钟抖动 可编程时钟模块

4.4 HIL 资源调度

  • 基于优先级队列(P0 Tapeout > P1 发版 > P2 Nightly)
  • 支持独占模式(独占一台 EVB 48 小时)
  • 支持共享模式(多用例共享一台 EVB,用例级切换)

5. UI 测试子系统

5.1 Playwright 脚本规范

// tests/ui/xistudio-open-project.spec.ts
import { test, expect } from '@playwright/test';

test('打开项目并拖拽 EQ 节点', async ({ page }) => {
  await page.goto('http://localhost:5173');
  await page.click('[data-test="open-project"]');
  await page.fill('[data-test="project-name"]', 'demo-eq');

  // 拖拽算法节点
  await page.dragAndDrop(
    '[data-test="algo-lib-eq"]',
    '[data-test="flow-canvas"]'
  );

  // 视觉回归
  await expect(page).toHaveScreenshot('flow-with-eq.png', {
    maxDiffPixelRatio: 0.005
  });
});

5.2 视觉回归

  • 基准图存储tests/ui/__screenshots__/
  • 对比工具:pixelmatch(默认阈值 0.5%)
  • 分辨率:1920×1080(主)· 2K/4K 可选
  • 差异处理:差异 > 阈值 → 失败 · 生成 diff.png

5.3 跨浏览器支持

  • Chromium(主)· WebKit(macOS)· Firefox(辅)

6. 报告规范

6.1 HTML 报告结构

  • 总览:通过/失败/跳过 数量 + 耗时
  • 分层统计:Unit/Integration/Regression/UI
  • 失败详情:用例 + 错误 + WAV 对比波形 + 堆栈
  • 趋势:最近 10 次运行通过率折线图
  • 性能:每用例耗时 TopN
  • 覆盖率:算法代码覆盖率(LCOV 集成)

6.2 JUnit XML(CI 集成)

<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="XiTest v1.0" tests="1024" failures="2" time="5423.5">
  <testsuite name="fx" tests="128" failures="1">
    <testcase classname="fx.eq" name="fx-eq-bass-boost-01" time="5.2">
      <failure message="freq_response_at_60hz: 3.35 dB (expected 3.0 ±0.1)"/>
    </testcase>
    ...
  </testsuite>
</testsuites>

6.3 通知模板

❌ XiTest Regression Failed
Branch: feature/new-eq
Commit: abc123
Failures: 1 / 1024
  - fx-eq-bass-boost-01 (freq_response_at_60hz out of tolerance)
Report: https://xitest.xisound.com/runs/20260505-001

7. CI 集成规范

7.1 GitHub Actions 示例

# .github/workflows/xitest.yml
name: XiTest
on: [push, pull_request]
jobs:
  test:
    uses: xisound/xitest-actions/.github/workflows/reusable.yml@v1
    with:
      suite: ${{ github.event_name == 'pull_request' && 'integration' || 'smoke' }}
      parallel: 16
    secrets:
      XITEST_TOKEN: ${{ secrets.XITEST_TOKEN }}

7.2 GitLab CI 示例

include:
  - project: xisound/xitest-ci
    ref: v1
    file: /gitlab-ci/xitest.yml

xitest:
  extends: .xitest-base
  variables:
    XITEST_SUITE: smoke

7.3 PR 集成

  • 失败自动评论 PR
  • Status Check 必须通过才能合并
  • 可配置:新增测试必须有对应用例

8. 非功能规格

8.1 性能

指标 规格
Unit 平均耗时 ≤ 100 ms
Integration 平均耗时 ≤ 30 s
全量 Regression(1000 用例 / 16 worker) ≤ 2 h
HIL 单用例 ≤ 5 min
报告生成 ≤ 30 s
并发支持 100+ Worker(集群)

8.2 可靠性

  • 平台可用性 ≥ 99.5%
  • 测试结果可重复性 ≥ 99%
  • 假失败率 ≤ 0.5%
  • 自动重试:失败用例 ≤ 3 次

8.3 安全

  • 用例仓库:企业私有 Git
  • 金标 WAV:加密存储 + 访问审计
  • CI Token:短时令牌 + 最小权限
  • 报告访问:SSO + RBAC

9. 与其他产品的接口

产品 接口方式 说明
XiAlgo Git 仓库 + C/C++ 接口 被测对象
XiDSP JTAG + 声卡 HIL 实时硬件验证
XiStudio CLI + Playwright 烧录 + UI 回归
XiForge Playwright UI 回归
XiMind REST API(v1.1+) AI 用例生成
XiTune 数据源 调音结果可导入为测试用例

10. 已知限制与路线

10.1 v1.0 已知限制

  • 不支持:分布式 HIL 跨集群调度(v1.1 启用)
  • 不支持:AI 用例编排(v1.1 启用)
  • 不支持:Enterprise SaaS 对外(v2.0 启用)
  • UI 跨分辨率:v1.0 仅 1080p,2K/4K 需配置

10.2 路线图

  • v1.1(2028 Q2):XiMind AI 编排 + 分布式 HIL
  • v1.2(2028 Q4):D2 完整支持 + 故障注入扩展
  • v2.0(2029):Enterprise SaaS 对外版

11. 附录

11.1 关联文档

11.2 标准与开源组件

  • Google Test / Catch2(BSD / BSL)
  • Playwright(Apache 2.0)
  • pixelmatch(ISC)
  • Prometheus + Grafana(Apache 2.0)
  • OpenTelemetry(Apache 2.0)
  • JUnit XML 规范

11.3 版本历史

版本 日期 要点
v1.0 2026-05-05 首版 · v1.0 GA 完整技术规格

spec.md · D2-P7-SPEC-001 · v1.0 · 2026-05-05 · Xisound 研发中心 · 测试与工具团队