mcpField
T
testing-ops

testing-ops

github.com/0xdarkmatter测试与质量7845 次安装2 周前更新
代码仓库

关于 testing-ops

testing-ops 是适用于多种语言的软件测试技能,介绍测试类型、隔离策略、测试替身与质量标准,并附带覆盖率检查脚本。

主要功能

  1. 01测试金字塔与测试类型
  2. 02Arrange-Act-Assert 模式
  3. 03选择测试替身
  4. 04隔离数据库与外部服务
  5. 05测试质量检查清单
  6. 06覆盖率阈值检查脚本

适用场景

  1. 01为代码变更选择测试类型
  2. 02隔离依赖数据库的测试
  3. 03测试外部服务边界
  4. 04在工作流中检查测试覆盖率

安装

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

$npx skills add https://github.com/0xdarkmatter/claude-mods --skill testing-ops

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

包含的文件

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

assets/
.gitkeep
references/
ci-testing.md
mocking-strategies.md
tdd-workflow.md
test-data-patterns.md
scripts/
coverage-check.sh
tests/
run.sh

详细介绍

测试模式

适用于各种语言的通用测试策略和模式。

测试金字塔

        /\
       /  \     E2E Tests (few, slow, expensive)
      /    \    - Full system tests
     /------\   - Real browser/API calls
    /        \
   /  Integ   \ Integration Tests (some)
  /   Tests    \ - Service boundaries
 /--------------\ - Database, APIs
/                \
/   Unit Tests    \ Unit Tests (many, fast, cheap)
------------------  - Single function/class
                    - Mocked dependencies

测试类型

单元测试
Scope:      Single function/method/class
Speed:      Milliseconds
Dependencies: All mocked
When:       Every code change
Coverage:   80%+ of codebase
集成测试
Scope:      Multiple components together
Speed:      Seconds
Dependencies: Real databases, mocked external APIs
When:       PR/merge, critical paths
Coverage:   Key integration points
端到端测试
Scope:      Full user journey
Speed:      Minutes
Dependencies: Real system (or staging)
When:       Pre-deploy, nightly
Coverage:   Critical user flows only

测试命名约定

test_<unit>_<scenario>_<expected>

Examples:
- test_calculate_total_with_discount_returns_reduced_price
- test_user_login_with_invalid_password_returns_401
- test_order_submit_when_out_of_stock_raises_error

准备-执行-断言(AAA)

def test_calculate_discount():
    # Arrange - Set up test data and dependencies
    cart = Cart()
    cart.add_item(Item(price=100))
    discount = Discount(percent=10)

    # Act - Execute the code under test
    total = cart.calculate_total(discount)

    # Assert - Verify the results
    assert total == 90

测试替身

类型用途示例
桩返回预设数据stub.get_user.returns(fake_user)
模拟对象验证交互mock.send_email.assert_called_once()
间谍对象记录调用,使用真实实现spy.on(service, 'save')
伪对象可用的简化实现用 FakeDatabase() 代替真实数据库
虚设对象占位,从不使用用于必需参数的 null 对象

测试隔离策略

数据库隔离
Option 1: Transaction rollback (fast)
- Start transaction before test
- Rollback after test

Option 2: Truncate tables (medium)
- Clear all data between tests

Option 3: Separate database (slow)
- Each test gets fresh database
外部服务隔离
Option 1: Mock at boundary
- Replace HTTP client with mock

Option 2: Fake server
- WireMock, MSW, VCR cassettes

Option 3: Contract testing
- Pact, consumer-driven contracts

测试内容

必须测试
  • 业务逻辑和计算
  • 输入验证和错误处理
  • 对安全敏感的代码(身份验证、权限)
  • 边缘情况和边界条件
应当测试
  • 集成点(数据库、API)
  • 状态转换
  • 配置处理
避免测试
  • 框架内部实现
  • 第三方库行为
  • 简单的 getter/setter
  • 私有实现细节

测试质量检查清单

  • 测试彼此独立(不依赖执行顺序)
  • 测试结果确定(没有不稳定的测试)
  • 测试运行快速(单元测试 < 100ms,集成测试 < 5s)
  • 测试名称清晰,能描述行为
  • 测试涵盖正常路径和错误情况
  • 测试不会重复生产逻辑
  • 模拟对象尽量精简(仅用于外部边界)

更多资源

  • ./references/tdd-workflow.md - 测试驱动开发周期
  • ./references/mocking-strategies.md - 何时以及如何使用模拟
  • ./references/test-data-patterns.md - 固定数据、工厂和构建器
  • ./references/ci-testing.md - 在 CI/CD 流水线中测试

脚本

  • ./scripts/coverage-check.sh - 运行覆盖率检查,低于阈值时失败

评论

支持 Markdown