mcpField
T
testing-strategy-builder

testing-strategy-builder

github.com/ariegoldkin测试与质量1244 次安装47 周前更新
代码仓库

关于 testing-strategy-builder

Testing Strategy Builder 是为软件团队提供测试策略规划指导的 skill,适用于新项目制定方案或改进现有测试。它涵盖测试类型、风险优先级、覆盖率、自动化及持续测试,并附带示例、模板和清单。

主要功能

  1. 01规划测试策略与测试计划
  2. 02按风险安排测试优先级
  3. 03涵盖单元、集成与端到端测试
  4. 04提供覆盖率建议与质量门禁
  5. 05附带示例、模板和检查清单

适用场景

  1. 01为新项目设计测试方案
  2. 02提升现有代码库的测试覆盖
  3. 03规划 CI/CD 持续测试流程
  4. 04为关键业务路径制定测试用例

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ariegoldkin/ai-agent-hub --skill testing-strategy-builder

安装后在 Claude Code 中输入/testing-strategy-builder确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

checklists/
test-coverage-checklist.md
references/
code-examples.md
templates/
test-case-template.md
test-plan-template.md

详细介绍

测试策略构建器

概述

此技能为构建有效的测试策略提供全面指导,帮助确保软件的质量、可靠性和可维护性。无论是从头开始,还是改进现有测试覆盖率,此框架都能帮助团队设计稳健的测试方案。

适用场景:

  • 为新项目或新功能规划测试策略
  • 提高现有代码库的测试覆盖率
  • 建立质量门禁和覆盖率目标
  • 设计测试自动化架构
  • 创建测试计划和测试用例
  • 选择合适的测试工具和框架
  • 在 CI/CD 流水线中实施持续测试

附带资源:

  • references/code-examples.md - 详细的测试代码示例
  • templates/test-plan-template.md - 全面的测试计划模板
  • templates/test-case-template.md - 测试用例文档模板
  • checklists/test-coverage-checklist.md - 覆盖率验证清单

必需工具

此技能会提及以下测试工具。并非所有工具都是必需的——此技能会根据你的项目推荐合适的工具。

JavaScript/TypeScript 测试
  • Jest: 最受欢迎的测试框架

    • 安装: npm install --save-dev jest @types/jest
    • 配置: npx jest --init
  • Vitest: Vite 原生测试框架

    • 安装: npm install --save-dev vitest
    • 配置: 添加到 vite.config.ts
  • Playwright: 端到端测试

    • 安装: npm install --save-dev @playwright/test
    • 设置: npx playwright install
  • k6: 性能测试

    • 安装(macOS): brew install k6
    • 安装(Linux): 从 k6.io 下载
    • 命令: k6 run script.js
Python 测试
  • pytest: 标准 Python 测试框架

    • 安装: pip install pytest
    • 命令: pytest
  • pytest-cov: 覆盖率报告

    • 安装: pip install pytest-cov
    • 命令: pytest --cov=.
  • Locust: 性能测试

    • 安装: pip install locust
    • 命令: locust -f locustfile.py
覆盖率工具
  • c8: JavaScript/TypeScript 覆盖率

    • 安装: npm install --save-dev c8
    • 命令: c8 npm test
  • Istanbul/nyc: 另一种 JS 覆盖率工具

    • 安装: npm install --save-dev nyc
    • 命令: nyc npm test
安装验证
# JavaScript/TypeScript
jest --version
vitest --version
playwright --version
k6 version

# Python
pytest --version
locust --version

# Coverage
c8 --version
nyc --version

注意: 此技能会根据你的项目框架(React、Vue、FastAPI、Django 等)和测试需求,引导你选择合适的工具。

测试理念

测试奖杯 🏆

现代测试遵循“测试奖杯”模型(由测试金字塔演进而来):

         🏆
       /    \
      /  E2E  \         ← Few (critical user journeys)
     /----------\
    / Integration\      ← Many (component interactions)
   /--------------\
  /     Unit       \    ← Most (business logic)
 /------------------\
/  Static Analysis   \  ← Foundation (linting, type checking)

原则:

  1. 静态分析:在运行时之前发现语法错误、类型问题和常见缺陷
  2. 单元测试:单独测试各个函数和组件
  3. 集成测试:测试组件如何协同工作
  4. 端到端(E2E)测试:端到端验证关键用户工作流

平衡: 70% 集成测试、20% 单元测试、10% E2E 测试(根据具体情况调整)


测试策略框架

1. 覆盖率目标

建议目标:

  • 整体代码覆盖率:至少 80%
  • 关键路径:95–100%(支付、身份验证、数据变更)
  • 新功能:要求 100% 覆盖率
  • 业务逻辑:90% 以上覆盖率
  • UI 组件:70% 以上覆盖率

覆盖率类型:

  • 行覆盖率:已执行代码行的百分比
  • 分支覆盖率:已执行决策分支的百分比
  • 函数覆盖率:已调用函数的百分比
  • 语句覆盖率:已执行语句的百分比

重要提示: 覆盖率是一项指标,而非目标。100% 覆盖率 ≠ 没有缺陷的代码。

2. 测试分类
静态分析

用途:在运行时之前发现错误 工具:ESLint、Prettier、TypeScript、Pylint、mypy、Ruff 运行时机: 提交前钩子、CI 流水线

单元测试

目的:测试独立的业务逻辑 工具:Jest、Vitest、pytest、JUnit 特点:

  • 执行速度快(每项测试 < 100ms)
  • 不依赖外部组件(数据库、API、文件系统)
  • 结果确定(相同输入 = 相同输出)
  • 测试单一职责

**覆盖率目标:**业务逻辑达到 90% 以上

详细的单元测试示例请参阅 references/code-examples.md。

集成测试

目的:测试组件之间的交互 **工具:**Testing Library、Supertest、配合 fixtures 使用的 pytest 特点:

  • 测试多个单元协同工作
  • 可使用测试数据库或模拟的外部服务
  • 执行时间适中(每项测试 < 1s)
  • 关注接口和契约

**覆盖率目标:**API 端点和组件交互达到 70% 以上

API 集成测试示例请参阅 references/code-examples.md。

端到端(E2E)测试

目的:验证关键用户流程 **工具:**Playwright、Cypress、Selenium 特点:

  • 测试完整的应用流程(前端 + 后端 + 数据库)
  • 执行速度慢(每项测试 5-30s)
  • 在接近生产环境的环境中运行
  • 关注业务关键路径

**覆盖率目标:**覆盖 5-10 个关键用户流程

完整的 E2E 测试示例请参阅 references/code-examples.md。

性能测试

目的:验证系统在负载下的性能 **工具:**k6、Artillery、JMeter、Locust 类型:

  • 负载测试:系统在预期负载下的行为
  • 压力测试:确定系统崩溃点
  • 峰值测试:应对突发流量激增
  • 耐久测试:随时间持续承受负载(内存泄漏)

**覆盖率目标:**测试所有性能关键端点

k6 负载测试示例请参阅 references/code-examples.md。


测试规划

1. 基于风险的测试

根据风险评估确定测试优先级:

高风险(要求 100% 覆盖率):

  • 支付处理
  • 身份验证和授权
  • 数据变更(创建、更新、删除)
  • 安全关键操作
  • 合规相关功能

中风险(80% 覆盖率):

  • 业务逻辑
  • 数据转换
  • API 集成
  • 电子邮件/通知系统

低风险(50% 覆盖率):

  • UI 样式
  • 静态内容
  • 只读操作
  • 非关键功能
2. 测试用例设计

Given-When-Then 模式:

Given [initial context]
When [action occurs]
Then [expected outcome]

此模式有助于让测试清晰且重点突出。实现示例请参阅 references/code-examples.md。

3. 测试数据管理

策略:

  • Fixtures:存放在 JSON/YAML 文件中的预定义测试数据
  • Factories:以编程方式生成测试数据
  • Seeders:使用已知数据填充测试数据库
  • Faker 库:生成逼真的随机数据

测试工厂和 fixture 示例请参阅 references/code-examples.md。


测试模式与最佳实践

1. AAA 模式(Arrange-Act-Assert)

将测试分为三个清晰的阶段:

  • Arrange:准备测试数据和上下文
  • Act:执行要测试的操作
  • Assert:验证预期结果

AAA 模式的详细示例请参阅 references/code-examples.md。

2. 测试隔离

每项测试都应相互独立:

  • 每项测试都使用全新的测试数据库
  • 每项测试结束后清理资源
  • 测试不依赖执行顺序

测试隔离模式请参阅 references/code-examples.md。

3. 模拟与真实依赖项

适合使用模拟的情况:

  • 外部 API(支付网关、第三方服务)
  • 耗时操作(文件 I/O、网络调用)
  • 非确定性行为(当前时间、随机值)
  • 难以测试的场景(错误情况、边缘情况)

适合使用真实依赖项的情况:

  • 快速且结果确定的操作
  • 关键业务逻辑
  • 数据库操作(使用测试数据库)
  • 内部服务交互

模拟示例请参阅 references/code-examples.md。

4. 快照测试

适用于: UI 组件、API 响应、生成的代码

警告: 快照可能变得脆弱。请用于稳定的组件,而非快速变化的 UI。

5. 参数化测试

使用数据表,基于相同逻辑测试多个场景。

参数化测试模式请参阅 references/code-examples.md。


持续测试

1. CI/CD 集成

流水线阶段:

# Example: GitHub Actions
name: Test Pipeline

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install dependencies
        run: npm ci
      - name: Lint
        run: npm run lint
      - name: Type check
        run: npm run typecheck
      - name: Unit & Integration Tests
        run: npm test -- --coverage
      - name: Upload coverage
        uses: codecov/codecov-action@v3
      - name: E2E Tests
        run: npm run test:e2e
      - name: Performance Tests (on main branch)
        if: github.ref == 'refs/heads/main'
        run: npm run test:performance
2. 质量门禁

出现以下情况时阻止合并/部署:

  • 代码覆盖率低于阈值(例如,80%)
  • 任何测试失败
  • 存在 Lint 错误
  • 检测到性能回归(慢了 > 10%)
  • 发现安全漏洞
3. 测试执行策略

每次提交时:

  • 静态分析(Lint、类型检查)
  • 单元测试
  • 快速集成测试(总计 < 5 分钟)

拉取请求时:

  • 所有测试(单元测试 + 集成测试 + E2E)
  • 覆盖率报告
  • 性能基准测试

部署到预发布环境时:

  • 完整的 E2E 测试套件
  • 负载测试
  • 安全扫描

部署到生产环境时:

  • 冒烟测试(仅关键路径)
  • 健康检查
  • 启用监控的金丝雀部署

测试工具推荐

JavaScript/TypeScript
类别工具用途
单元测试/集成测试Vitest快速、原生支持 Vite、现代化
单元测试/集成测试Jest成熟、生态系统丰富
E2EPlaywright跨浏览器、可靠、快速
E2ECypress对开发者友好、可视化调试
组件测试Testing Library以用户为中心、与框架无关
API 测试SupertestHTTP 断言、与 Express 集成
性能测试k6负载测试、可编写脚本
Python
类别工具用途
单元测试/集成测试pytest功能强大、可扩展、支持 fixtures
API 测试httpx + pytest支持异步、现代化
E2EPlaywright (Python)浏览器自动化
性能测试Locust负载测试、基于 Python
模拟unittest.mock标准库、可靠

常见测试反模式

❌ 测试实现细节

// Bad: Testing internal state
expect(component.state.isLoading).toBe(false);

// Good: Testing user-visible behavior
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();

❌ 测试与代码耦合过紧

// Bad: Test breaks when implementation changes
expect(userService.save).toHaveBeenCalledTimes(1);

// Good: Test behavior, not implementation
const user = await db.users.findOne({ email: '[email protected]' });
expect(user).toBeTruthy();

❌ 不稳定的测试

// Bad: Non-deterministic timeout
await waitFor(() => {
  expect(screen.getByText('Success')).toBeInTheDocument();
}, { timeout: 1000 }); // Might fail on slow CI

// Good: Use explicit waits with longer timeout
await screen.findByText('Success', {}, { timeout: 5000 });

❌ 庞大的测试用例

// Bad: One test does too much
test('user workflow', async () => {
  // 100 lines testing signup, login, profile update, logout...
});

// Good: Focused tests
test('user can sign up', async () => { /* ... */ });
test('user can login', async () => { /* ... */ });
test('user can update profile', async () => { /* ... */ });

与 Agent 的集成

代码质量审查员
  • 审查测试覆盖率报告
  • 建议补充缺失的测试用例
  • 验证测试质量和结构
  • 确保测试遵循此技能中的模式
后端系统架构师
  • 设计服务时使用测试策略模板
  • 确保 API 易于测试(依赖注入、清晰的接口)
  • 规划集成测试架构
前端 UI 开发者
  • 应用组件测试模式
  • 遵循 Testing Library 最佳实践
  • 为用户流程编写 E2E 测试
AI/ML 工程师
  • 针对 ML 模型调整测试模式(数据验证、模型性能测试)
  • 对推理端点使用性能测试

快速入门检查清单

开始新项目或新功能时:

  • 定义覆盖率目标(整体、关键路径、新代码)
  • 选择测试框架(Jest/Vitest、Playwright 等)
  • 搭建测试基础设施(测试数据库、fixtures、工厂)
  • 创建测试计划(参见 templates/test-plan-template.md)
  • 实施静态分析(ESLint、TypeScript)
  • 为业务逻辑编写单元测试(覆盖率 80%+)
  • 为 API 端点编写集成测试(覆盖率 70%+)
  • 为关键用户旅程编写 E2E 测试(5-10 个流程)
  • 配置带质量门禁的 CI/CD 流水线
  • 设置覆盖率报告(Codecov、Coveralls)
  • 在项目 README 中记录测试规范

详细代码示例:请参阅 references/code-examples.md


技能版本:1.0.0 最后更新:2025-10-31 维护者:AI Agent Hub 团队

评论

支持 Markdown