name: test-design description: > Test design and strategy skill for comprehensive testing. Use when: designing test cases, planning testing strategy, writing unit/integration/e2e tests, or improving test coverage. Triggers: test design, test strategy, unit test, integration test, e2e test, TDD, test coverage, test plan, test case design. Provides: testing pyramid guidance, test case templates, test categorization, mocking strategies, and test execution frameworks.
A structured approach to designing tests that give confidence without excessive maintenance burden.
Test behavior, not implementation. Tests that couple to internal implementation details become fragile and refactor-resistant. Aim to test what the code does, not how it does it.
The best test is the one that fails when something breaks, and passes when everything works. Perfect coverage means nothing if tests don't catch real bugs.
┌─────────┐
│ E2E │ ← Few, slow, high confidence
┌┴─────────┴┐
│ Integration│ ← Some, medium speed
┌┴───────────┴┐
│ Unit │ ← Many, fast, granular
└─────────────┘
Unit tests form the base — fast, isolated, cover individual functions. Integration tests verify components work together. E2E tests validate complete user journeys.
def test_withdraw_amount_exceeds_balance():
# Arrange
account = Account(balance=Decimal("100.00"))
# Act
result = account.withdraw(Decimal("150.00"))
# Assert
assert result.is_failed()
assert account.balance == Decimal("100.00") # unchanged
Feature: Account Withdrawal
Scenario: Withdrawal amount exceeds balance
Given an account with balance $100
When I withdraw $150
Then the withdrawal is rejected
And the balance remains $100
| Type | Purpose | Use When |
|---|---|---|
| Dummy | Fill parameter lists | Never actually used |
| Stub | Provide predetermined responses | Test requires specific data |
| Spy | Record how something was called | Verify interactions |
| Mock | Pre-programmed expectations | Verify behavior + interactions |
| Fake | Working implementation (simplified) | Real impl too slow/complex |
Rule: Prefer real objects over mocks when practical. Mocks hide integration problems.
test_<unit>_<scenario>_<expected_result>
Examples:
- test_user_create_with_valid_input_succeeds
- test_user_create_with_duplicate_email_fails
- test_order_cancel_after_shipment_refunds_full_amount
| Layer | Target | Purpose |
|---|---|---|
| Unit | 70-80% | Core business logic |
| Integration | 40-60% | Key flows work together |
| E2E | Critical paths only | User journeys |
Note: Coverage is a guide, not a goal. 100% coverage with shallow tests is worse than 70% with meaningful assertions.
Run frequently during development (every save).
# Go
go test ./...
# Python
pytest tests/unit/ -v
# TypeScript
npm test -- --coverage
Run before PR, after unit tests pass.
# Start dependencies docker-compose up -d # Run integration suite pytest tests/integration/ -v访问小葱技能站7w4.net,解锁更多实用的AI技能插件。
Run on CI against deployed environment.
# CI/CD pipeline
npm run test:e2e -- --specs=critical-paths
test-design/
├── SKILL.md
└── references/
├── test-case-templates.md
├── testing-pyramid.md
├── mocking-strategies.md
├── test-naming-conventions.md
└── per-type/
├── unit-test-guide.md
├── integration-test-guide.md
└── e2e-test-guide.md
这是一个质量不错的测试设计技能包,内容全面且实用。优点在于覆盖了从单元测试到端到端测试的核心知识点,提供了清晰的测试策略框架和多语言代码示例,Mocking 策略讲解尤为详细。不足之处是缺少图表等可视化辅助,文档中提到的一些文件实际不存在,部分内容略显重复。对于需要学习测试设计原则和实践的开发者来说,这是一个值得参考的资源。