测试驱动开发(TDD)指南Skill tdd-guide

这是一个全面的测试驱动开发(TDD)辅助工具,专为软件工程师和开发团队设计。它提供智能测试用例生成、代码覆盖率分析、多测试框架(Jest, Pytest, JUnit, Vitest等)集成支持,以及完整的红-绿-重构TDD工作流指导。核心功能包括:从需求自动生成测试、分析覆盖率报告识别测试盲区、计算代码复杂度与测试质量指标、生成模拟数据和测试夹具。适用于TypeScript、JavaScript、Python、Java等主流语言,帮助提升代码质量、确保软件可靠性,并优化开发流程。关键词:TDD测试驱动开发、单元测试生成、代码覆盖率分析、测试框架集成、软件质量保障、红绿重构、测试用例自动化、DevOps测试。

测试 0 次安装 0 次浏览 更新于 3/1/2026

name: tdd-guide description: 为工程子代理提供多框架支持、覆盖率分析和智能测试生成的全面测试驱动开发指南

TDD指南 - 工程团队的测试驱动开发

一个全面的测试驱动开发技能,提供智能测试生成、覆盖率分析、框架集成和跨多种语言及测试框架的TDD工作流指导。

能力

测试生成

  • 从需求生成测试用例:将用户故事、API规范和业务需求转换为可执行的测试用例
  • 创建测试桩:生成具有适当命名、导入和设置/清理的测试函数脚手架
  • 生成测试夹具:为各种场景创建真实的测试数据、模拟对象和夹具

TDD工作流支持

  • 指导红-绿-重构:通过TDD循环提供逐步指导并进行验证
  • 建议缺失场景:识别未测试的边缘情况、错误条件和边界场景
  • 审查测试质量:分析测试隔离性、断言质量、命名规范和可维护性

覆盖率与指标分析

  • 计算覆盖率:解析LCOV、JSON和XML覆盖率报告,获取行/分支/函数覆盖率
  • 识别未测试路径:查找没有测试覆盖的代码路径、分支和错误处理程序
  • 推荐改进:为覆盖率差距和测试质量提供优先级建议(P0/P1/P2)

框架集成

  • 多框架支持:Jest、Pytest、JUnit、Vitest、Mocha、RSpec适配器
  • 生成样板代码:创建具有适当导入、描述块和最佳实践的测试文件
  • 配置测试运行器:设置测试配置、覆盖率工具和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桌面版)
  • JSON:机器可读的指标、用于CI/CD集成的结构化数据
  • 终端友好:为Claude Code CLI简化的输出

智能默认值

  • 桌面/应用:带有表格、代码块、视觉层次结构的丰富Markdown
  • CLI:简洁、终端友好的格式,具有清晰的部分
  • CI/CD:用于自动化处理的JSON输出

渐进式披露

  • 先总结:高级概述(<200个词元)
  • 按需提供细节:完整的分析可用(500-1000个词元)
  • 优先级:P0(关键)→ P1(重要)→ P2(锦上添花)

使用方法

基本用法

@tdd-guide

我需要为我的身份验证模块编写测试。这是我的代码:
[粘贴代码或提供文件路径]

生成全面的测试用例,覆盖正常路径、错误情况和边缘情况。

覆盖率分析

@tdd-guide

分析我的TypeScript项目的测试覆盖率。覆盖率报告:coverage/lcov.info

识别差距并提供优先级建议。

TDD工作流

@tdd-guide

指导我通过TDD实现密码验证函数。

要求:
- 最少8个字符
- 至少1个大写字母、1个小写字母、1个数字、1个特殊字符
- 不允许常见密码

多框架支持

@tdd-guide

将这些Jest测试转换为Pytest格式:
[粘贴Jest测试]

脚本

核心模块

  • test_generator.py:从需求和代码智能生成测试用例
  • coverage_analyzer.py:解析和分析覆盖率报告(LCOV、JSON、XML)
  • metrics_calculator.py:计算全面的测试和代码质量指标
  • framework_adapter.py:多框架适配器(Jest、Pytest、JUnit、Vitest)
  • tdd_workflow.py:红-绿-重构工作流指导和验证
  • fixture_generator.py:生成真实的测试数据和夹具
  • format_detector.py:自动语言和框架检测

实用工具

  • complexity_analyzer.py:圈复杂度和认知复杂度分析
  • test_quality_scorer.py:测试质量评分(隔离性、断言、命名)
  • missing_test_detector.py:识别未测试路径和缺失场景
  • output_formatter.py:上下文感知输出格式化(桌面版 vs CLI)

最佳实践

测试生成

  1. 从需求开始:在查看实现之前,根据用户故事编写测试
  2. 测试行为,而非实现:关注代码做什么,而不是如何做
  3. 单一断言焦点:每个测试应验证一个特定的行为
  4. 描述性名称:测试名称应像规范一样可读

TDD工作流

  1. :首先编写失败的测试
  2. 绿:编写最少的代码使其通过
  3. 重构:在保持测试通过的同时改进代码
  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:从需求生成测试

输入:用户故事 + API规范
过程:解析需求 → 生成测试用例 → 创建测试桩
输出:准备就绪的完整测试文件,可用于实现

工作流2:提高覆盖率

输入:覆盖率报告 + 源代码
过程:识别差距 → 建议测试 → 生成测试代码
输出:针对未覆盖代码的优先级测试用例

工作流3:TDD新功能

输入:功能需求
过程:指导红-绿-重构 → 验证每个步骤 → 建议重构
输出:经过良好测试、代码整洁的功能

工作流4:框架迁移

输入:框架A中的测试
过程:解析测试 → 翻译模式 → 生成等效测试
输出:框架B中的测试,具有相同的覆盖率

集成点

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:生成测试文档