关于 tdd-guide
面向工程团队的测试驱动开发技能,可从需求和代码生成测试,并分析覆盖率与测试质量。它支持多种语言和测试框架,并按 Red-Green-Refactor 流程提供指导。
主要功能
- 01从需求生成测试用例与样板
- 02生成测试夹具和模拟对象
- 03指导 Red-Green-Refactor 流程
- 04解析覆盖率报告并定位缺口
- 05评估测试质量与代码复杂度
- 06支持多种测试框架
适用场景
- 01为用户故事或 API 规范编写测试
- 02查找未覆盖代码路径并规划补测
- 03逐步开展新功能的 TDD
- 04将 Jest 测试转换为 Pytest
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alirezarezvani/ claude-code-skill-factory --skill tdd-guide安装后在 Claude Code 中输入/tdd-guide确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
coverage_analyzer.pyexpected_output.jsonfixture_generator.pyformat_detector.pyframework_adapter.pyHOW_TO_USE.mdmetrics_calculator.pyoutput_formatter.pyREADME.mdsample_coverage_report.lcovsample_input_python.jsonsample_input_typescript.jsontdd_workflow.pytest_generator.py详细介绍
TDD 指南 - 面向工程团队的测试驱动开发
一项全面的测试驱动开发技能,提供智能测试生成、覆盖率分析、框架集成和 TDD 工作流指导,支持多种语言和测试框架。
功能
测试生成
- 根据需求生成测试用例:将用户故事、API 规范和业务需求转换为可执行的测试用例
- 创建测试桩:生成测试函数框架,并包含恰当的命名、导入和设置/清理代码
- 生成测试固定装置:针对各种场景创建真实的测试数据、模拟对象和固定装置
TDD 工作流支持
- 引导 Red-Green-Refactor:通过验证,逐步指导 TDD 循环
- 建议缺失的场景:识别未经测试的边界情况、错误条件和边界场景
- 审查测试质量:分析测试隔离性、断言质量、命名约定和可维护性
覆盖率与指标分析
- 计算覆盖率:解析 LCOV、JSON 和 XML 覆盖率报告,计算行、分支和函数覆盖率
- 识别未测试路径:找出没有测试覆盖的代码路径、分支和错误处理程序
- 建议改进措施:针对覆盖率缺口和测试质量提供按优先级排序的建议(P0/P1/P2)
框架集成
- 支持多种框架:Jest、Pytest、JUnit、Vitest、Mocha、RSpec 适配器
- 生成样板代码:创建测试文件,并包含恰当的导入、describe 代码块和最佳实践
- 配置测试运行器:设置测试配置、覆盖率工具和 CI 集成
全面指标
- 测试覆盖率:行、分支和函数覆盖率及缺口分析
- 代码复杂度:圈复杂度、认知复杂度、可测试性评分
- 测试质量:每个测试的断言数量、隔离性评分、命名质量、测试异味检测
- 测试数据:边界值分析、边界情况识别、模拟数据生成
- 测试执行:耗时分析、慢速测试检测、不稳定性检测
- 缺失测试:未覆盖的边界情况、错误处理缺口、缺失的集成场景
输入要求
该技能支持自动格式检测,可灵活处理输入:
源代码
- 语言:TypeScript、JavaScript、Python、Java
- 格式:直接提供文件路径或粘贴代码块
- 检测:根据语法和导入语句自动检测语言和框架
测试制品
- 覆盖率报告:LCOV(.lcov)、JSON(coverage-final.json)、XML(cobertura.xml)
- 测试结果:JUnit XML、Jest JSON、Pytest JSON、TAP 格式
- 格式:文件路径或原始覆盖率数据
需求(可选)
- 用户故事:功能的文本描述
- API 规范:OpenAPI/Swagger、REST 端点、GraphQL 架构
- 业务需求:验收标准、业务规则
输入方式
- 选项 A:提供文件路径(技能将读取文件)
- 选项 B:直接粘贴代码/数据
- 选项 C:混合使用两种方式(自动检测)
输出格式
该技能会根据上下文提供适合你环境的输出:
代码文件
- 测试文件:生成结构规范的测试(Jest/Pytest/JUnit/Vitest)
- 固定装置:测试数据文件、模拟对象、工厂函数
- 模拟对象:模拟实现、桩函数、测试替身
报告
- Markdown:详尽的覆盖率报告、建议和质量分析(Claude Desktop)
- JSON:机器可读的指标、用于 CI/CD 集成的结构化数据
- 终端友好格式:适用于 Claude Code CLI 的简化输出
智能默认设置
- 桌面应用/应用:包含表格、代码块和清晰层级的丰富 Markdown
- 命令行界面:简洁、适合终端的格式,包含清晰的分节
- CI/CD:用于自动化处理的 JSON 输出
渐进式披露
- 先展示摘要:高层概览(<200 个词元)
- 按需查看详情:可获取完整分析(500-1000 个词元)
- 按优先级排序:P0(关键)→ P1(重要)→ P2(锦上添花)
使用方法
基本用法
@tdd-guide
I need tests for my authentication module. Here's the code:
[paste code or provide file path]
Generate comprehensive test cases covering happy path, error cases, and edge cases.
覆盖率分析
@tdd-guide
Analyze test coverage for my TypeScript project. Coverage report: coverage/lcov.info
Identify gaps and provide prioritized recommendations.
TDD 工作流
@tdd-guide
Guide me through TDD for implementing a password validation function.
Requirements:
- Min 8 characters
- At least 1 uppercase, 1 lowercase, 1 number, 1 special char
- No common passwords
多框架支持
@tdd-guide
Convert these Jest tests to Pytest format:
[paste Jest tests]
脚本
核心模块
- test_generator.py:根据需求和代码智能生成测试用例
- coverage_analyzer.py:解析并分析覆盖率报告(LCOV、JSON、XML)
- metrics_calculator.py:计算全面的测试和代码质量指标
- framework_adapter.py:多框架适配器(Jest、Pytest、JUnit、Vitest)
- tdd_workflow.py:提供 Red-Green-Refactor 工作流指导与验证
- fixture_generator.py:生成真实的测试数据和 fixture
- format_detector.py:自动检测语言和框架
实用工具
- complexity_analyzer.py:分析圈复杂度和认知复杂度
- test_quality_scorer.py:评估测试质量(隔离性、断言、命名)
- missing_test_detector.py:识别未经测试的路径和缺失的场景
- output_formatter.py:根据上下文格式化输出(桌面端与 CLI)
最佳实践
测试生成
- 从需求入手:在查看实现之前,根据用户故事编写测试
- 测试行为,而非实现:关注代码的功能,而不是实现方式
- 聚焦单个断言:每项测试都应验证一种特定行为
- 使用描述性名称:测试名称应像规格说明一样清晰
TDD 工作流
- Red(红):先编写失败的测试
- Green(绿):编写最少量的代码使测试通过
- Refactor(重构):在保持测试通过的同时改进代码
- 重复:小步迭代,频繁提交
覆盖率目标
- 目标为 80% 以上:对大多数项目而言,以行覆盖率作为基准
- 关键路径达到 100%:身份验证、支付和数据验证必须实现全面覆盖
- 分支覆盖率很重要:仅有行覆盖率并不足够
- 不要钻指标空子:专注于有意义的测试,而不是覆盖率数字
测试质量
- 测试相互独立:每项测试都应能独立运行
- 快速执行:每项单元测试应控制在 100 毫秒以内
- 结果确定:测试应始终产生相同的结果
- 失败信息清晰:断言消息应说明出错原因
框架选择
- Jest:适用于 JavaScript/TypeScript 项目(React、Node.js)
- Pytest:适用于 Python 项目(Django、Flask、FastAPI)
- JUnit:适用于 Java 项目(Spring、Android)
- Vitest:适用于基于 Vite 的现代项目
多语言支持
TypeScript/JavaScript
- 框架:Jest、Vitest、Mocha、Jasmine
- 运行器:Node.js、Karma、Playwright
- 覆盖率工具:Istanbul/nyc、c8
Python
- 框架:Pytest、unittest、nose2
- 运行器:pytest、tox、nox
- 覆盖率工具:coverage.py、pytest-cov
Java
- 框架:JUnit 5、TestNG、Mockito
- 运行器:Maven Surefire、Gradle Test
- 覆盖率工具:JaCoCo、Cobertura
局限性
范围
- 侧重单元测试:主要针对单元测试进行优化(集成测试需要采用不同模式)
- 仅限静态分析:无法执行测试或衡量代码的实际行为
- 语言支持:对 TypeScript、JavaScript、Python、Java 的支持最佳(对其他语言的支持有限)
覆盖率分析
- 依赖报告:需要已有的覆盖率报告(无法从零生成覆盖率数据)
- 格式支持:仅支持 LCOV、JSON、XML(其他格式需先转换)
- 解读需结合上下文:判断覆盖率数字是否有意义,需要人工评估
测试生成
- 基础质量:生成的测试提供基础框架,仍需人工审查和完善
- 复杂逻辑:高级业务逻辑和集成场景需要手动设计测试
- 模拟策略:模拟对象和桩的策略应与项目模式保持一致
框架集成
- 需要配置:测试运行器需要正确设置(此技能不会修改 package.json 或 pom.xml)
- 版本兼容性:生成的代码适用于较新的稳定版本(Jest 29+、Pytest 7+、JUnit 5+)
不适用此技能的场景
- 端到端测试:请使用专用的端到端工具(Playwright、Cypress、Selenium)
- 性能测试:请使用 JMeter、k6 或 Locust
- 安全测试:请使用 OWASP ZAP、Burp Suite 或专注于安全测试的工具
- 手动测试:某些场景需要人工探索性测试
示例工作流
工作流 1:根据需求生成测试
Input: User story + API specification
Process: Parse requirements → Generate test cases → Create test stubs
Output: Complete test files ready for implementation
工作流 2:提升覆盖率
Input: Coverage report + source code
Process: Identify gaps → Suggest tests → Generate test code
Output: Prioritized test cases for uncovered code
工作流 3:通过 TDD 开发新功能
Input: Feature requirements
Process: Guide red-green-refactor → Validate each step → Suggest refactorings
Output: Well-tested feature with clean code
工作流 4:迁移框架
Input: Tests in Framework A
Process: Parse tests → Translate patterns → Generate equivalent tests
Output: Tests in Framework B with same coverage
集成点
CI/CD 集成
- 解析 CI 工件中的覆盖率报告
- 生成覆盖率徽章和报告
- 在覆盖率未达到阈值时使构建失败
- 跟踪覆盖率随时间的变化趋势
IDE 集成
- 为选定代码生成测试
- 在保存时运行覆盖率分析
- 标出未经测试的代码路径
- 针对测试缺口提供快速修复建议
代码审查
- 在 PR 中验证测试覆盖率
- 检查测试质量标准
- 找出缺失的测试场景
- 在合并前提出改进建议
版本支持
- Node.js:16+(Jest 29+、Vitest 0.34+)
- Python:3.8+(Pytest 7+)
- Java:11+(JUnit 5.9+)
- TypeScript:4.5+
相关技能
此技能可与以下技能配合使用:
- code-review:在审查期间验证测试质量
- refactoring-assistant:在重构期间维护测试
- ci-cd-helper:在流水线中集成覆盖率
- documentation-generator:生成测试文档
评论
支持 Markdown