HSBQA测试运行器Skill hsb-test

该技能是一个用于Holoscan Sensor Bridge(HSB)硬件的QA测试执行器。它能读取用户提供的测试计划文档,根据用户的具体硬件设置筛选出可自动运行的测试,在开发套件的演示容器中执行这些测试,对每个测试给出通过/失败评估,记录失败原因并提供修复建议,最终生成结构化的测试结果报告。它还负责验证环境连接、管理测试超时、清理测试产物。关键词:HSB、传感器桥、QA测试、测试计划执行、自动化测试、硬件测试、结果报告、Holoscan Sensor Bridge、测试评估、容器测试。

传感器桥接(HSB) 0 次安装 1 次浏览 更新于 9/7/2026
名称 hsb-test
描述 在Holoscan Sensor Bridge(HSB)硬件上执行QA测试计划。读取用户提供的测试文档,根据用户设置筛选测试,确定哪些测试可以自动运行,执行这些测试并通过/失败评估,生成结构化测试结果报告。
作者 “Holoscan Team holoscan-team@nvidia.com
开源协议 “Apache-2.0”
版本 “1.0.0” tags: - holoscan-sensor-bridge - hsb - testing tools: - Read - Write - Edit - Grep - Glob - Bash disable-model-invocation: true allowed-tools: Read,Write,Edit,MultiEdit,Grep,Glob,Bash metadata:
作者 “Holoscan Team holoscan-team@nvidia.com” team: holoscan tags: - holoscan-sensor-bridge - hsb - testing agents: - claude-code - codex

HSB QA测试运行器

当用户希望在一块HSB板和开发套件上执行QA测试计划时,使用此技能。该技能读取测试文档(本地文件或网页链接),过滤出可在用户特定硬件设置上自动运行的测试,逐项执行这些测试并给出通过/失败评估,最终生成一份全面的测试结果报告。

本技能假定开发套件已经配置完成(SSH、演示容器已构建、主机已配置、板卡已连接)。如果配置未完成,它会主动建议先调用 /hsb-setup

此工作流在演示容器内运行测试应用程序。仅在用户明确调用时运行。

开始前——必需的门禁(按顺序先执行)

门禁1——读取环境变量。 在执行任何其他操作前,检查以下变量,并向用户打印其解析值:

SSH_TARGET      远程开发套件登录地址(如 nvidia@192.168.1.50)。如果未设置,请询问用户。
REMOTE_ROOT     远程工作目录(如 /home/nvidia)。如果未设置,请询问用户。
REMOTE_SUDO     sudo / sudo -n / ""——如果未设置,默认使用 sudo。
REMOTE_SSH_OPTS 其他SSH选项(可选)。
HSB_PLATFORM    平台提示(可选)。

SSH_TARGET 和 REMOTE_ROOT 为必填项。如果任一缺失,请停止并询问用户。

门禁2——展示阶段计划,请求测试文档,并获得确认。 在执行任何操作前:

  1. 展示阶段计划:
HSB 测试 — 阶段计划
  阶段0:验证开发套件SSH、板卡ping及演示容器可用性
  阶段1:获取测试文档,确认设置,构建可执行测试计划
  阶段2:执行测试,记录通过/失败,分析失败原因
  阶段3:生成测试结果报告(可选择保存)
  阶段4:清理测试产物
  1. 如果用户尚未提供测试文档路径或URL,请停止并询问用户,不要继续到阶段0或任何阶段,直到用户提供请提供您的测试文档的路径或URL:。如果用户已经指定了特定测试(例如“仅连接性检查”),则说明将运行哪些阶段以及跳过哪些阶段,并说明测试将按用户的平台/板卡/传感器配置进行过滤,并分类为可自动化测试和手动测试。

  2. 明确询问:是否可以进入阶段0?[Y/n]——在用户确认前,不要开始阶段0。

本技能必须完成的工作

  1. 验证开发套件可通过SSH访问,HSB板已连接且有响应,演示容器可用。读取当前FPGA版本和板卡标识。验证传感器/摄像头类型以及使用的hsb开发套件和发布仓库——可通过已设置的环境变量获取,或询问用户。如果配置未就绪,建议调用 /hsb-setup 准备开发套件。
  2. 从用户处获取测试计划文档(文件路径或URL)。确认在阶段0中收集的设置信息(仓库位置、HSB版本、平台、板卡类型、传感器)。研究测试计划和仓库的 examples/ 目录,以确定哪些测试可以自动运行。跳过手动测试和需要额外设备的测试。展示可执行的测试计划,等待用户批准。
  3. 按顺序执行每个测试用例。对于每个测试:运行应用程序,根据测试计划中的标准评估通过/失败,记录结果。如果失败,分析日志,建议修复方法,并让用户决定如何继续,然后运行下一个测试。
  4. 生成结构化测试结果报告,包含每个测试的通过/失败状态、遇到的问题及修复措施。提供保存报告的选项。
  5. 清理所有测试产物(容器、临时文件、会话状态)。

Linux/Windows友好包装变量

复用其他HSB技能中的环境变量:

  • SSH_TARGET 用于远程登录目标(例如 nvidia@agx-thor-host
  • REMOTE_ROOT 用于远程工作目录
  • REMOTE_SUDO 用于特权命令
  • REMOTE_SSH_OPTS 用于额外SSH选项
  • HSB_PLATFORM 作为可选的平台提示

如果这些变量已设置,通知用户这些设置并直接使用,不再询问。

在阶段0之前,打印解析后的远程执行设置。

强制交互模式

会话中首次运行(无先前验证)

当不存在有效会话状态时,展示完整阶段计划:

  • 阶段0:验证板卡连接、演示容器就绪及用户设置(发布仓库、平台、传感器/摄像头)
  • 阶段1:获取测试计划,确认设置,构建可执行测试列表
  • 阶段2:执行测试计划并逐项给出通过/失败评估
  • 阶段3:生成测试结果报告(可选择保存)
  • 阶段4:清理

然后逐个阶段执行。

同一会话中的后续运行(快速路径)

当会话状态文件(/tmp/.claude_hsb_test_session/state.sh)存在 包含 _SESSION_VERIFIED=true 时,本技能跳过阶段0和阶段1的设置确认,因为连接、硬件、发布仓库、平台和传感器/摄像头都已经验证过。而是通知用户并直接进入测试计划输入:

会话已验证——跳过连接检查。
  SSH目标: $SSH_TARGET
  发布仓库: /home/work/holoscan-sensor-bridge (HSB vX.X.X)
  平台: AGX Thor
  板卡: HSB Lattice | FPGA: XXXX
  传感器: 双IMX274

直接进入测试计划输入。

然后执行:

  • 阶段1(测试计划输入和测试列表构建——跳过设置确认)
  • 阶段2:执行测试计划
  • 阶段3:测试结果报告
  • 阶段4:清理

何时从头重新运行阶段0

在以下情况必须重新运行阶段0(忽略快速路径):

  1. 新会话:远程主机上不存在会话状态文件,或开始了一个新的Claude Code会话。
  2. 执行失败提示连接丢失:如果阶段2失败并出现指示板卡或开发套件不可达的症状(ping失败、SSH超时、容器启动失败、出现 No such device 错误),则从会话状态中清除 _SESSION_VERIFIED 并重新运行阶段0,然后再重试。
  3. 用户明确要求:如果用户说“重新验证”、“重新开始”、“从头运行”,或调用 /hsb-test --full,则从头运行阶段0。

参见 ## 阶段门禁 了解完整的确认协议。

如果某些操作失败,不要直接倾倒原始日志。而是总结:

  • 失败的确切命令
  • 可能的原因
  • 推荐的可行操作
  • 问题是否阻塞

阶段详情

请参阅 references/phase-details.md 获取完整的分阶段步骤说明。

执行规则

SSH heredoc模式

与其他HSB技能一样,使用相同的持久SSH会话模型。每个阶段作为一个SSH heredoc块运行:

ssh -o BatchMode=yes $REMOTE_SSH_OPTS $SSH_TARGET bash -s <<'REMOTE'
set -e

# 从上一阶段恢复状态
source /tmp/.claude_hsb_test_session/state.sh 2>/dev/null || true
cd "${_CLAUDE_CWD:-__REMOTE_ROOT__}"

# 阶段命令
echo "=== 阶段N:描述 ==="
command1
command2

# 为下一阶段保存状态(如果已设置,保留 _SESSION_VERIFIED)
_PREV_VERIFIED="${_SESSION_VERIFIED:-}"
mkdir -p /tmp/.claude_hsb_test_session
{
  echo "export _CLAUDE_CWD=\"$(pwd)\""
  echo "export PATH=\"$PATH\""
  echo "export REPO_DIR=\"$REPO_DIR\""
  echo "export VERSION=\"$VERSION\""
  echo "export HSB_PLATFORM=\"$HSB_PLATFORM\""
  echo "export BOARD_TYPE=\"$BOARD_TYPE\""
  echo "export SENSORS=\"$SENSORS\""
  echo "export FPGA_VERSION=\"$FPGA_VERSION\""
  echo "export TEST_PLAN_SOURCE=\"$TEST_PLAN_SOURCE\""
  [ "$_PREV_VERIFIED" = "true" ] && echo "export _SESSION_VERIFIED=true"
} > /tmp/.claude_hsb_test_session/state.sh
REMOTE

在组合heredoc时,将 __REMOTE_ROOT__ 替换为 $REMOTE_ROOT 的字面值。

测试使用的容器

测试命令在演示容器内运行。使用带超时强制监管的分离模式具名容器。

每个测试的默认超时时间:120秒(2分钟)。可通过以下方式覆盖:

  • 技能调用时使用 --timeout N(适用于所有测试)
  • 测试计划中指定的单测超时

每个测试容器后的清理

每次测试运行后,停止并移除容器。清理模式见 references/phase-details.md

会话拆除

由阶段4处理。如果工作流程在阶段4之前中止:

docker ps --filter "name=hsb_test_" --format '{{.Names}}' | xargs -r docker stop -t 2 2>/dev/null || true
ssh -o BatchMode=yes $REMOTE_SSH_OPTS $SSH_TARGET "rm -rf /tmp/.claude_hsb_test_session"

阶段门禁——阶段间用户确认

每完成一个阶段(阶段0–3)后,务必在开始下一阶段前请求用户确认。

例外:当 --y(自动批准模式)激活时,跳过阶段门禁。参见“自动批准模式 (--y)”一节。

例外:阶段4(清理)在阶段3后自动运行,无需门禁。

是否进入阶段 <N+1>(<阶段描述>)?[Y/n]

用户响应处理

本技能中的所有提示都要求用户给出明确输入。绝不要把空白或仅回车视为选择——重新提示用户。

  • “y”“yes”“Y”“ok”“go”“continue”“next” → 进入下一阶段。
  • “n”“no”“stop”“abort” → 停止执行。打印:
    QA测试已在阶段N后暂停。
    您可以重新调用技能来继续。
    
    然后执行会话拆除。
  • 任何其他文本 → 将其视为关于当前阶段的问题或指令。先回答,然后重新提示。
  • “retry” → 重新执行当前阶段,再次展示摘要,然后重新提示。

例外

  • 阶段4(清理)是最终阶段——在阶段3完成后或用户拒绝运行另一个测试计划后自动运行。
  • 如果某个阶段FAILED且无法恢复,则停止并清晰报告,然后执行清理。

内置帮助(--help

如果 $ARGUMENTS 包含 --help-h,打印以下内容并停止:

HSB QA测试运行器技能

用法
  /hsb-test [选项]

选项
  --help, -h        显示此帮助信息并退出
  --verbose         显示每个阶段的完整原始命令输出
  --y               自动批准所有阶段门禁并跳过
                    失败时的交互式调试。不建议使用——继续前会显示
                    确认警告。所有输出保存到带时间戳的日志文件中。
  --timeout N       设置每个测试的运行时长(秒)(默认:120s)。
                    测试在N秒后或可以确定通过/失败时停止,以先到者为准。
  --full            即使会话已验证,也强制从阶段0进行完整验证

环境变量(调用技能前设置)
  SSH_TARGET        远程登录目标(如 ubuntu@10.0.0.1)
  REMOTE_ROOT       远程工作目录
  REMOTE_SUDO       提权方式:'sudo'、'sudo -n' 或 ''
  REMOTE_SSH_OPTS   额外SSH选项
  HSB_PLATFORM      平台提示

工作流阶段
  阶段0  验证板卡连接、演示容器就绪
         以及用户设置(发布仓库、平台、传感器/摄像头)
         (同一会话内重复运行时跳过)
  阶段1  获取测试计划,确认设置,构建可执行测试列表
         (重复运行时跳过设置确认)
  阶段2  执行测试计划并逐项给出通过/失败评估
  阶段3  生成并可选择保存测试结果报告
  阶段4  清理(自动)

示例
  /hsb-test
  /hsb-test --verbose
  /hsb-test --timeout 60
  /hsb-test --y
  /hsb-test --y --timeout 60
  /hsb-test --full
  /hsb-test --help

调用示例

  • /hsb-test
  • /hsb-test --verbose
  • /hsb-test --timeout 60
  • /hsb-test --timeout 60 --verbose
  • /hsb-test --y
  • /hsb-test --y --timeout 60
  • /hsb-test --full
  • /hsb-test --full --verbose
  • /hsb-test --help

详细程度模式(--verbose

本技能支持 --verbose 标志:

检测标志

检查 $ARGUMENTS(斜杠命令后的文本)是否包含:--help / -h--verbose--y--timeout N--full(不区分大小写)。在进一步解析前剥离所有标志(及值)。

出现 --full 时,忽略任何缓存的会话状态,从头运行阶段0。

详细模式(设置时)

  • 显示每个SSH命令的完整原始输出
  • 内联显示测试应用的完整输出(所有stdout/stderr)
  • 显示详细的分阶段状态块

简洁模式(默认,不带 --verbose

  • 每个阶段后显示项目符号摘要
  • 隐藏原始命令输出
  • 显示关键测试输出行(启动、错误、通过/失败指示器),但不显示每一行
  • 用4行格式(症状、原因、处理措施、是否阻塞)显示问题

自动批准模式(--y

本技能支持 --y 标志,它跳过所有阶段门禁,从开始到结束运行整个工作流程,而不在阶段之间等待用户确认。这不建议用于QA测试。

确认警告

检测到 --y 时,显示警告并要求用户确认:

⚠ 警告:已启用自动批准模式 (--y)。

不建议将其用于QA测试。所有阶段门禁将被跳过,
整个测试计划将连续执行,不会在阶段或测试之间暂停,
也不会请求您的确认。

您将无法审查中间结果、在失败时干预或中止测试。
所有输出将保存到带时间戳的日志文件中。

注意:在自动批准模式下,您仍必须在阶段1中提供测试计划。
失败的测试会记录,但不会进行交互式调试——
测试会自动继续到下一个测试。

输入“yes”确认自动批准模式,或输入其他内容取消:
  • 如果用户回答 “yes”(完全匹配,不区分大小写)→ 启用自动批准模式。
  • 任何其他回答 → 取消自动批准模式并以交互方式运行。

--y 激活时的行为

  1. 阶段门禁被跳过,不进行阶段间确认。
  2. 测试计划批准被跳过——自动执行生成的测试计划。
  3. 失败测试不会暂停——失败被记录,测试自动继续到下一个测试用例。
  4. 测试之间不会出现提示——测试连续执行。
  5. 默认超时适用——每个测试120秒;或如果指定了 --timeout N,则用N。
  6. 日志文件:开始时在 $REMOTE_ROOT/ 或当前目录创建 hsb-test-log-YYYY-MM-DD-HHMMSS.md
  7. 阶段摘要仍会实时显示
  8. 阻塞性连接失败仍会停止工作流并触发重新验证。

与其他标志组合

  • --y --verbose:自动批准并提供完整原始输出。
  • --y --timeout N:自动批准并指定自定义测试超时。
  • --y --full:自动批准并强制从阶段0进行完整验证。

超时处理(--timeout

本技能支持 --timeout N 标志,其中N是每个测试运行的秒数。

行为

  • 设置时:每个测试最多运行N秒,然后停止。根据窗口期间收集的输出评估通过/失败。
  • 未设置时:每个测试最多运行120秒(2分钟)——或直到可以从输出确定通过/失败,以先到者为准。
  • 单测覆盖:如果测试计划为特定测试指定了超时,则该值优先于默认值和 --timeout 标志。

验证

  • N必须是正整数。
  • 最小值:5秒。
  • 最大值:3600秒(1小时)。
  • 如果无效,则显示错误并要求用户提供有效的超时。