mcpField
T
tdd-guide

tdd-guide

github.com/alirezarezvani测试与质量89758 次安装50 周前更新
代码仓库

关于 tdd-guide

面向工程团队的测试驱动开发技能,可从需求和代码生成测试,并分析覆盖率与测试质量。它支持多种语言和测试框架,并按 Red-Green-Refactor 流程提供指导。

主要功能

  1. 01从需求生成测试用例与样板
  2. 02生成测试夹具和模拟对象
  3. 03指导 Red-Green-Refactor 流程
  4. 04解析覆盖率报告并定位缺口
  5. 05评估测试质量与代码复杂度
  6. 06支持多种测试框架

适用场景

  1. 01为用户故事或 API 规范编写测试
  2. 02查找未覆盖代码路径并规划补测
  3. 03逐步开展新功能的 TDD
  4. 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.py
expected_output.json
fixture_generator.py
format_detector.py
framework_adapter.py
HOW_TO_USE.md
metrics_calculator.py
output_formatter.py
README.md
sample_coverage_report.lcov
sample_input_python.json
sample_input_typescript.json
tdd_workflow.py
test_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)

最佳实践

测试生成
  1. 从需求入手:在查看实现之前,根据用户故事编写测试
  2. 测试行为,而非实现:关注代码的功能,而不是实现方式
  3. 聚焦单个断言:每项测试都应验证一种特定行为
  4. 使用描述性名称:测试名称应像规格说明一样清晰
TDD 工作流
  1. Red(红):先编写失败的测试
  2. Green(绿):编写最少量的代码使测试通过
  3. Refactor(重构):在保持测试通过的同时改进代码
  4. 重复:小步迭代,频繁提交
覆盖率目标
  1. 目标为 80% 以上:对大多数项目而言,以行覆盖率作为基准
  2. 关键路径达到 100%:身份验证、支付和数据验证必须实现全面覆盖
  3. 分支覆盖率很重要:仅有行覆盖率并不足够
  4. 不要钻指标空子:专注于有意义的测试,而不是覆盖率数字
测试质量
  1. 测试相互独立:每项测试都应能独立运行
  2. 快速执行:每项单元测试应控制在 100 毫秒以内
  3. 结果确定:测试应始终产生相同的结果
  4. 失败信息清晰:断言消息应说明出错原因
框架选择
  1. Jest:适用于 JavaScript/TypeScript 项目(React、Node.js)
  2. Pytest:适用于 Python 项目(Django、Flask、FastAPI)
  3. JUnit:适用于 Java 项目(Spring、Android)
  4. 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