已关闭
[Requirement|需求建议]: 增加最小功能测试 CI 能力与统一测试清单 #33
zhangzijie创建于  3月19日关闭于  3月19日
zhangzijie成员
3月19日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

一、背景信息 (必填)

当前 cann-samples 仓库已有 .ci/build.sh 用于看护构建流程,能够完成 configure / build / install / package,但缺少统一的功能测试 CI 入口。

现状问题主要有:

  1. 仓库缺少“测什么”的统一测试清单,新增 sample 后无法低成本接入功能回归。
  2. 缺少“怎么执行”的统一 runner,样例运行方式和校验方式分散在 README、脚本和二进制内部。
  3. 缺少最小可维护的测试资产组织方式,CI 扩展容易演变为命令堆砌。
  4. 部分样例(如 hif8)安装目录结构与源码/README/测试脚本假设不完全一致,影响自动化执行。

本需求希望在不引入过度抽象的前提下,为仓库增加一套最小可落地的功能测试 CI 原型,用于支撑后续样例的逐步接入和回归执行。

二、价值/作用 (必填)

该需求的价值主要体现在以下几个方面:

  1. 将仓库从“仅看护编译不失败”推进到“具备最小功能回归能力”。
  2. 为后续新增 sample 提供统一接入方式,降低测试维护成本。
  3. 将测试资产与 CI 执行入口解耦,提升可读性和扩展性。
  4. 为后续扩展性能测试 CI、nightly 回归、更多 sample 接入打下基础。
  5. 使样例 README、安装目录、测试脚本和 CI 清单之间建立明确映射关系,降低误用和假绿风险。

适用场景包括:

  • 新 sample 合入前的最小功能回归
  • 典型样例的 PR 冒烟验证
  • 后续 nighty / main 分支的功能回归扩展

三、设计方案 (必填)

3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)

本需求不引入新的算子框架能力,主要面向仓库级测试基础设施。

使能方式如下:

  • 通过 .ci/build.sh 完成仓库统一构建、安装、打包
  • 通过 .ci/run_ci_functional.sh 调用功能测试执行入口
  • 通过 .ci/run_ci_functional.py 读取测试清单并执行对应 sample
  • 通过 tests/ci_functional_test.yaml 定义当前纳入功能测试的样例、命令与通过规则

当前纳入功能测试的样例包括:

  • vector_add
  • matmul_basic
  • hif8_quantize
3.2 总体设计
3.2.1 算子支持的数据类型

本需求本身不新增算子数据类型支持。

功能测试覆盖的数据类型由各 sample 自身决定:

  • vector_addfloat32
  • matmul:由 sample 当前实现支持的数据类型决定
  • hif8_quantize:覆盖 HiFloat8 相关路径
3.2.2 host侧设计

host 侧设计聚焦仓库级测试调度,而非算子 host 逻辑本身。

总体结构如下:

  1. .ci/build.sh
    • 统一执行 configure / build / install / package
  2. .ci/run_ci_functional.sh
    • 复用 .ci/build.sh
    • 调用 Python runner
  3. .ci/run_ci_functional.py
    • 读取 tests/ci_functional_test.yaml
    • 依次执行 setup / steps
    • 根据 pass_criteria 做机器判定
    • 输出 summary.json、stdout、stderr、exit code 等产物
  4. tests/README.md
    • 只描述测试清单契约和维护规则
  5. .ci/README.md
    • 只描述 CI 执行入口和使用方式

伪代码示意:

manifest = load_yaml("tests/ci_functional_test.yaml")
for sample in manifest["samples"]:
    run(sample["setup"])
    run(sample["steps"])
    assert pass_criteria(sample)
write_summary()

###### 3.2.3 kernel侧设计

本需求不改动 kernel 计算逻辑。

仅涉及一个与自动化测试相关的样例结构修正:

- hif8 安装时保留 scripts/ 子目录,使安装树结构与源码、README、测试脚本一致

##### 3.3 支持硬件

本需求依赖当前仓库已有样例所支持的硬件和运行环境,不额外扩大硬件支持范围。

当前测试执行依赖:

- 已安装可用的 CANN 工具链
- 目标机器具备对应 NPU 运行环境
- 样例自身所需 Python 依赖已安装
likedislike
Zzhangzijie成员
3月19日 添加了label:requirement
zhangzijie成员
3月19日 评论:

/assign

likedislike
CANN-robotCANN-robot成员
3月19日 将 zhangzijie 设为负责人
Zzhangzijie成员
3月19日 关联了pull request:test: add minimal functional CI runner and manifest
CANN-robotCANN-robot成员
3月19日 关闭了 issue
CANN-robotCANN-robot成员
3月20日 添加了label:resolved