npx skills add https://github.com/chyax98/twu --skill testcase-generator根据测试点生成结构化测试用例,覆盖正向、反向、边界场景。
test-case/plan.md、clarified-requirements/index.md、CLAUDE.mdtest-case/{ITEM}/{POINT}.md、test-case/all_cases.md广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
/testcase-gen 命令test-case/plan.md 存在将输入数据划分为若干等价类,从每类中选取代表性数据测试。
应用示例 :
POINT: 用户名密码登录
输入项: 用户名、密码
用户名等价类:
有效: [6-20字符,字母数字下划线] → "test_user123"
无效: [<6] "ab" | [>20] "verylongusername12345" | [特殊字符] "user@name" | [空] ""
密码等价类:
有效: [8-20字符,含大小写+数字] → "Test1234"
无效: [<8] "Test12" | [缺大写] "test1234" | [空] ""
生成原则: 一次测试一个等价类,其他保持有效
边界是最容易出错的地方。
边界三点法 : 离点(min-1) | 上点(min) | 内点(中间值) | 上点(max) | 离点(max+1)
应用示例 :
用户名长度 6-20 字符:
- 离点-下: 5字符 "abcde" → 失败
- 上点-下: 6字符 "abcdef" → 成功
- 内点: 13字符 "test_user_123" → 成功
- 上点-上: 20字符 "test_user_1234567890" → 成功
- 离点-上: 21字符 "test_user_12345678901" → 失败
不强制数量,根据场景复杂度自适应调整。
判断标准 :
每个测试点生成一个 .md 文件,格式如下:
## [P1] 用例标题
[测试类型] 功能
[前置条件] 前置条件描述
[测试步骤] 1. 步骤1。2. 步骤2
[预期结果] 1. 预期1。2. 预期2
## [P3][反向] 用例标题
[测试类型] 功能
[前置条件] 前置条件描述
[测试步骤] 1. 步骤1。2. 步骤2
[预期结果] 1. 预期1。2. 预期2
功能
兼容性
易用性
性能
稳定性
安全性
可靠性
效果(AI类、资源类)
效果(硬件器件类)
可维护性
可移植性
埋点
注意 :
推荐格式 : 使用中文句号分隔,编号连续
[测试步骤] 1. 打开登录页面。2. 输入用户名test_user。3. 输入密码Test1234。4. 点击登录按钮
[预期结果] 1. 页面正常显示。2. 用户名输入框显示内容。3. 密码输入框显示密码。4. 登录成功,跳转到首页
重要 : 编号必须从1开始,连续递增;测试步骤和预期结果的编号数量必须一致。
必须具体,不用占位符:
正确示例 :
错误示例 :
必须明确可验证:
正确示例 :
错误示例 :
test-case/
├── plan.md
├── {ITEM}/
│ ├── {POINT1}.md
│ ├── {POINT2}.md
│ └── ...
└── all_cases.md
将所有 {ITEM}/{POINT}.md 合并到 all_cases.md:
# ITEM 名称 和 ## POINT 名称cat test-case/plan.md
cat clarified-requirements/index.md
cat CLAUDE.md
对每个 POINT:
基于以下策略设计:
核心思考框架 :
输入分析
等价类识别
测试价值评估
覆盖判断
用例设计
用例质量标准 :
.claude/skills/testcase-generator/scripts/validate.py## [P1] 验证有效用户名和密码登录成功
[测试类型] 功能
[前置条件] 已注册用户test_user,密码Test1234
[测试步骤] 1. 输入用户名test_user,输入密码Test1234,点击登录。2. 验证跳转到首页并显示用户名
[预期结果] 1. 登录请求成功。2. 跳转到/home页面,顶部显示'欢迎,test_user'
## [P3][反向] 验证用户名为空时登录失败
[测试类型] 功能
[前置条件] 进入登录页
[测试步骤] 1. 不输入用户名,输入密码Test1234,点击登录。2. 验证提示'用户名不能为空'
[预期结果] 1. 登录请求被拒绝。2. 停留在登录页,用户名输入框下方显示红色提示'用户名不能为空'
## [P4] 验证密码长度边界值(8位)
[测试类型] 功能
[前置条件] 已注册用户test_user,密码Test1234
[测试步骤] 1. 输入用户名test_user,输入8位密码Test1234,点击登录。2. 验证登录成功
[预期结果] 1. 登录请求成功。2. 跳转到/home页面
POINT : 广告账户列表-筛选功能
输入项分析 :
生成用例(6个) :
## [P1] 验证单一条件筛选成功
[测试类型] 功能
[前置条件] 广告账户列表页面,有10个账户
[测试步骤] 1. 选择时间"近7天",点击查询。2. 验证返回符合条件的账户
[预期结果] 1. 列表刷新。2. 仅显示近7天有数据的账户
## [P1] 验证多条件组合筛选成功
[测试类型] 功能
[前置条件] 同上
[测试步骤] 1. 选择时间"近7天",输入名称"test",选择状态"正常",点击查询
[预期结果] 1. 列表刷新。2. 仅显示同时满足3个条件的账户
## [P3][反向] 验证时间超过365天筛选失败
[测试类型] 功能
[前置条件] 同上
[测试步骤] 1. 选择自定义时间,开始日期2023-01-01,结束日期2024-01-02,点击查询
[预期结果] 1. 显示提示"时间范围不能超过365天",列表不刷新
## [P3][反向] 验证不存在的账户名筛选返回空
[测试类型] 功能
[前置条件] 同上
[测试步骤] 1. 输入不存在的账户名"nonexistent123",点击查询
[预期结果] 1. 列表刷新。2. 显示"暂无数据"
## [P2] 验证筛选条件清空功能
[测试类型] 功能
[前置条件] 已应用筛选条件
[测试步骤] 1. 点击"重置"按钮。2. 验证所有筛选条件清空,列表恢复默认
[预期结果] 1. 所有筛选项恢复默认值。2. 列表显示全部账户
## [P4][反向] 验证结束时间早于开始时间提示错误
[测试类型] 功能
[前置条件] 同上
[测试步骤] 1. 选择自定义时间,开始日期2024-01-02,结束日期2024-01-01,点击查询
[预期结果] 1. 显示提示"结束时间不能早于开始时间"
说明 :
## [P1] 验证登录成功
[测试类型] 功能
[前置条件] 用户已注册
[测试步骤] 1. 输入用户名{username},输入密码{password},点击登录
[预期结果] 1. 登录成功
为什么错误 :
调用校验脚本检查格式:
uv run .claude/skills/testcase-generator/scripts/validate.py \
--single "test-case/{模块}/{测试点}.md"
脚本会输出日志,指出格式问题(如优先级错误、字段缺失等)。AI 分析日志,决定是否需要修改。
再次调用校验脚本进行整体检查:
uv run .claude/skills/testcase-generator/scripts/validate.py "test-case/" --check-duplicates
脚本会检查重复用例、格式一致性等。脚本只提供日志,不直接修改文件。AI 分析日志,决定是否需要调整。
test-case/plan.mdclarified-requirements/index.mdCLAUDE.md 业务背景# 单文件校验
uv run .claude/skills/testcase-generator/scripts/validate.py \
--single "test-case/{模块}/{测试点}.md"
# 全局校验
uv run .claude/skills/testcase-generator/scripts/validate.py "test-case/"
# 全局校验 + 重复检测
uv run .claude/skills/testcase-generator/scripts/validate.py "test-case/" --check-duplicates
# 仅重复检测
uv run .claude/skills/testcase-generator/scripts/validate.py "test-case/" --duplicates-only
校验项 :
--check-equivalence)--check-boundary)--check-duplicates)# 从目录导出
uv run .claude/skills/testcase-generator/scripts/to_excel.py "test-case/" -o "test-case/export.xlsx"
# 从单个文件导出
uv run .claude/skills/testcase-generator/scripts/to_excel.py "test-case/{模块}/{测试点}.md" -o "output.xlsx"
| 错误 | 处理方式 |
|---|---|
| 单文件校验失败 | 重试3次,仍失败则跳过并记录 |
| 用例数过多(>15) | 提示检查是否有冗余等价类 |
| 缺少边界用例 | 警告并建议补充 |
| 缺少无效等价类 | 警告并建议补充异常场景 |
| 步骤编号不连续 | 报错并要求修正 |
| 测试类型不在枚举 | 报错并要求修正 |
| 步骤与预期数量不一致 | 报错并要求修正 |
| 导出失败 | 检查openpyxl依赖 |
✅ 用例生成完成
产物 :
test-case/{ITEM}/{POINT}.md - 各测试点的用例文件test-case/all_cases.md - 所有用例汇总质量保证 :
统计示例 :
📊 生成统计:
- 测试项: 8个
- 测试点: 20个
- 测试用例: 75个
覆盖率:
- 有效等价类: 100% (每POINT至少1个)
- 无效等价类: 80% (主要异常全覆盖)
- 边界值: 90% (所有范围型输入)
用例分布:
- P1(核心正向): 20个(27%)
- P2(基本正向): 15个(20%)
- P3(核心异常): 25个(33%)
- P4(边界条件): 12个(16%)
- P5(低频场景): 3个(4%)
下一步 :
Weekly Installs
35
Repository
GitHub Stars
5
First Seen
12 days ago
Security Audits
Installed on
codex35
gemini-cli34
github-copilot34
amp34
kimi-cli34
opencode34
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
46,600 周安装
散文风格诊断技能:识别小说句子写作问题,提升写作质量与故事表现力
150 周安装
GitHub Copilot CLI 委托技能:非交互式命令、模型选择与安全权限指南
153 周安装
Claude Code 多智能体编排系统 - 基于 Git 的轻量级任务追踪与工作流管理
150 周安装
Next.js useSearchParams Suspense 模式详解:解决URL参数读取与服务器端渲染问题
151 周安装
财报交易分析器 - 五因子评分系统,精准识别财报后动量交易机会
157 周安装
Vercel AI SDK v6 完整指南:实现聊天、工具调用、结构化输出与智能体
150 周安装