Agent Skills
› NeverSight/learn-skills.dev
› testing-strategies
testing-strategies
GitHub提供高级测试策略与方法论,涵盖测试金字塔、各类测试类型(单元、集成、E2E等)、最佳实践及命名规范。适用于设计测试方案、提升覆盖率及确保软件质量。
Trigger Scenarios
design tests
test coverage
property-based testing
mutation testing
contract testing
chaos engineering
test pyramid
testing strategy
behavior-driven development
acceptance testing
Install
npx skills add NeverSight/learn-skills.dev --skill testing-strategies -g -y
SKILL.md
Frontmatter
{
"name": "testing-strategies",
"description": "Advanced testing strategies and methodologies. Use when user asks to \"design tests\", \"test coverage\", \"property-based testing\", \"mutation testing\", \"contract testing\", \"chaos engineering\", \"test pyramid\", \"testing strategy\", \"behavior-driven development\", \"acceptance testing\", or mentions comprehensive testing approaches."
}
Testing Strategies & Methodologies
Comprehensive testing strategies for building reliable, high-quality software systems.
Test Pyramid
UI/E2E Tests
/ \
/ \
Integration Tests
/ \
/ \
Unit Tests
- Unit Tests: Fast, isolated, low-level (60%)
- Integration Tests: Component interactions (30%)
- E2E Tests: Full system workflows (10%)
Testing Types
Unit Testing
- Test individual functions/methods
- Mocking dependencies
- Fast execution
- Examples: Jest, Pytest, Mocha
Integration Testing
- Test component interactions
- With real databases/services
- Slower than unit tests
- Examples: Postman, Supertest
End-to-End Testing
- Complete user workflows
- Browser automation
- Slowest but most realistic
- Examples: Cypress, Selenium, Playwright
Property-Based Testing
- Generate random inputs
- Verify invariants hold
- Find edge cases
- Examples: Hypothesis, QuickCheck
Contract Testing
- Verify API contracts between services
- Consumer and provider sides
- Microservices testing
- Examples: Pact, Spring Cloud Contract
Chaos Engineering
- Inject failures intentionally
- Test system resilience
- Find weak points
- Tools: Chaos Toolkit, Gremlin
Best Practices
- Test Behavior, Not Implementation - Focus on what, not how
- Keep Tests Fast - Run frequently
- Isolate Dependencies - Mock external systems
- Clear Test Names - Describe what's being tested
- DRY Tests - Eliminate duplication
- Test Edge Cases - Boundaries, nulls, errors
- Use Test Fixtures - Consistent setup
- Automate Testing - CI/CD integration
Test Naming Convention
test_[function]_[scenario]_[expected_outcome]
Example:
test_calculateDiscount_withValidCode_returnsDiscountedPrice
test_loginUser_withInvalidPassword_throwsAuthenticationError
Example Test Patterns
AAA Pattern (Arrange-Act-Assert)
test('calculateTotal with items', () => {
// Arrange
const cart = new Cart();
cart.addItem({ price: 10 }, 2);
// Act
const total = cart.getTotal();
// Assert
expect(total).toBe(20);
});
BDD (Behavior-Driven Development)
Feature: User Authentication
Scenario: Login with valid credentials
Given a user with email "test@example.com"
When the user logs in with correct password
Then they should see the dashboard
Metrics
- Code Coverage: % of code executed by tests (aim for 80%+)
- Test Pass Rate: % of tests passing
- Test Execution Time: How long tests take to run
- Mutation Score: % of introduced bugs caught
Common Pitfalls to Avoid
- Over-testing trivial code
- Not testing error paths
- Flaky tests (non-deterministic)
- Testing implementation details
- Ignoring performance in tests
- Not testing concurrency
References
- Test Driven Development (Kent Beck)
- Growing Object-Oriented Software, Guided by Tests
- Working Effectively with Legacy Code (Michael Feathers)
- Testing Strategies for Microservices
- Chaos Engineering (whitepaper)
Version History
- e0220ca Current 2026-07-05 20:45


