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)
最佳实践
测试生成
- 从需求开始:在看到实现之前,根据用户故事编写测试
- 测试行为,而不是实现:关注代码做了什么,而不是如何做的
- 一个断言焦点:每个测试应该验证一个具体的行为
- 描述性名称:测试名称应该像规范一样阅读
TDD工作流程
- 红:首先编写失败的测试
- 绿:编写最少的代码使其通过
- 重构:在保持测试绿色的同时改进代码
- 重复:小迭代,频繁提交
覆盖率目标
- 目标80%+:大多数项目的行覆盖率基线
- 100%关键路径:认证、支付、数据验证必须完全覆盖
- 分支覆盖很重要:仅行覆盖是不够的
- 不要游戏度量:关注有意义的测试,而不是覆盖率数字
测试质量
- 独立测试:每个测试应该独立运行
- 快速执行:保持单元测试在100ms以内
- 确定性:测试应该始终产生相同的结果
- 清晰的失败:断言消息应该解释出了什么问题
框架选择
- 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+)
何时不使用此技能
- 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:生成测试文档