TDD指南 tdd-guide

TDD指南是一个全面的测试驱动开发技能,提供智能测试生成、覆盖率分析、框架集成和跨多种语言及测试框架的TDD工作流程指导,旨在提升工程团队的代码质量和测试效率。

测试 0 次安装 0 次浏览 更新于 3/5/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 Desktop)
  • 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:上下文感知输出格式化(桌面与CLI)

最佳实践

测试生成

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

TDD工作流程

  1. :首先编写失败的测试
  2. 绿:编写最少的代码使其通过
  3. 重构:在保持测试绿色的同时改进代码
  4. 重复:小迭代,频繁提交

覆盖率目标

  1. 目标80%+:大多数项目的行覆盖率基线
  2. 100%关键路径:认证、支付、数据验证必须完全覆盖
  3. 分支覆盖很重要:仅行覆盖是不够的
  4. 不要游戏度量:关注有意义的测试,而不是覆盖率数字

测试质量

  1. 独立测试:每个测试应该独立运行
  2. 快速执行:保持单元测试在100ms以内
  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+)

何时不使用此技能

  • E2E测试:使用专门的E2E工具(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:生成测试文档