소스 정보
- 저장소
- Evinalian/hnoa_testcase_skill
- 최근 소스 활동
- 2026년 6월 1일 06:51
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/Evinalian/hnoa_testcase_skill --skill hnoa-testcase-gen명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | hnoa-testcase-gen |
| description | HNOA 智能驾驶测试用例生成。AI 驱动的测试用例生成工具,支持信号枚举覆盖、状态机全覆盖、多条件组合(2^N)、参数边界泛化(9+ 点)。 |
| metadata | {"requires":{"bins":["lark-cli"]},"version":"6.1.0"} |
HNOA 智能驾驶测试用例生成工具。AI 驱动 + 代码辅助,确保测试覆盖完整性。
当用户请求涉及以下意图时触发:
关键词:HNOA、测试用例、生成、覆盖、FDes
用户通过自然语言与 AI 对话即可完成所有操作,无需记忆命令。
| 用户想做的事 | 自然语言示例 |
|---|---|
| 生成测试用例 | "帮我生成 FDes-39-02 的测试用例" |
| 分析需求覆盖 | "分析 FDes-05-01 的覆盖情况" |
| 查看全局统计 | "看看 HNOA 测试用例覆盖统计" |
| 同步飞书数据 | "同步最新的 HNOA 需求数据" |
| 导入外部文档 | "从飞书链接导入需求文档 https://..." |
AI 内部通过以下 CLI 命令驱动,用户无需关心:
| 命令 | 说明 |
|---|---|
python scripts/main.py generate <id> | 提取需求描述,交给 AI 生成用例 |
python scripts/main.py analyze <id> | 分析指定需求的信号、条件模式 |
python scripts/main.py coverage | 全局覆盖统计 |
python scripts/main.py sync | 从飞书同步数据到本地缓存 |
用户: 生成 FDes-39-02 的测试用例
AI:
1. 执行命令获取需求描述
2. 解析需求:提取信号、状态、条件、参数
3. 生成测试用例(Markdown 格式)
4. 输出检查清单确认覆盖完整性
5. 询问用户保存目录并导出文件(Markdown/JSON/CSV 三种格式)
重要:生成测试用例后,必须询问用户保存目录:
.md(文档)、.json(程序导入)、.csv(Excel)每个信号枚举值至少 1 条用例
信号 IVI_VoiceTimegapReq 有枚举:
- TAUGAP_1, TAUGAP_2, TAUGAP_3, TAUGAP_4, TAUGAP_5
→ 生成 5 条用例,每个枚举值 1 条
覆盖所有系统状态
NOA 状态:
- OFF, Passive, Standby, Active, Exit, TOR, Error
→ 状态跳转需求需覆盖所有状态组合
AND 条件:穷举所有组合
条件 A AND 条件 B
→ 4 种组合:
1. A=True, B=True (正向, P0)
2. A=True, B=False (反向, P2)
3. A=False, B=True (反向, P2)
4. A=False, B=False (反向, P2)
OR 条件:独立用例
条件 A OR 条件 B
→ 2 条用例:
1. 满足 A (B 不满足), P1
2. 满足 B (A 不满足), P1
每个数值参数至少 9 个测试点:
| 类型 | 值 | 预期 |
|---|---|---|
| 下限-1 | min-1 | invalid |
| 下限 | min | valid |
| 下限+1 | min+1 | valid |
| 典型值1 | low | valid |
| 典型值2 | mid | valid |
| 典型值3 | high | valid |
| 上限-1 | max-1 | valid |
| 上限 | max | valid |
| 上限+1 | max+1 | invalid |
示例:速度参数 0~120 kph
测试点:
-1, 0, 1, 30, 60, 90, 119, 120, 121 kph
| 等级 | 场景 |
|---|---|
| P0 | 安全相关、核心路径、故障诊断 |
| P1 | 标准功能、HMI 显示 |
| P2 | 边界条件、不合理组合 |
## [测试用例 ID]
| 属性 | 内容 |
|------|------|
| 测试用例 ID | TC-SSTS-HNOA-xxx-001 |
| 用例等级 | P0 |
### 测试描述
自车:xxx
环境:xxx
### 测试步骤
1. 初始状态:{信号名=值}
2. 触发条件:xxx
3. 验证:{信号名=值}
### 通过标准
- 信号值正确:{信号名=值}
- 系统状态正确:xxx
---
## 检查清单
- [ ] 所有信号枚举值已覆盖
- [ ] 所有系统状态已覆盖
- [ ] AND/OR 条件已正确组合
- [ ] 数值参数已 9+ 点覆盖
- [ ] 用例等级设置正确
scripts/
├── main.py # CLI 入口 (<200 行)
├── engine.py # 边界测试点生成 (<200 行)
├── data_loader.py # 飞书数据加载
├── analyzer.py # 信号提取
└── output_formatter.py # 格式化输出
cache/ 目录,包含需求和测试用例的 JSON 快照当用户请求生成测试用例时,AI 必须严格按以下步骤执行:
python scripts/main.py generate <id> 提取需求描述生成完成后,AI 必须逐项自检并输出审查报告:
━━━ AI 审查报告 ━━━
1. 信号枚举覆盖
☑ 已覆盖信号:IVI_VoiceTimegapReq、ADS_NOAFunctionStatus ...
☑ 每个枚举值至少 1 条用例
☐ 缺失枚举值:[如有则列出]
2. 状态覆盖
☑ 覆盖状态:OFF / Passive / Standby / Active / Exit / TOR / Error
☐ 未覆盖状态:[如有则列出]
3. 多条件组合(AND/OR)
☑ AND 条件已 2^N 展开(N=3 → 8 条)
☑ OR 条件已独立覆盖
☐ 遗漏组合:[如有则列出]
4. 参数边界泛化(9+ 点)
☑ 速度参数 0~130:-1/0/1/32/65/97/129/130/131 已覆盖
☑ 时距参数 1~5:0/1/2/3/4/5/6 已覆盖
☐ 未覆盖参数:[如有则列出]
5. 用例等级分布
P0: 5 条 | P1: 12 条 | P2: 8 条
☑ P0 均为安全/核心路径
☑ P2 均为边界/异常场景
━━━ 审查结论 ━━━
通过项:5/5
☑ 全部通过,可以保存
如果审查报告存在 ☐ 未通过项,AI 必须:
审查通过后:
审查通过!请选择保存目录:
1. 桌面
2. Downloads
3. 自定义路径
OutputFormatter.save_all(cases, demand_id, output_dir) 保存