Skill-Details
testing-best-practices
Broad unit, integration, TDD, and test-quality guidance.
Vor Nutzung prüfen
Die automatische Prüfung bewertet Relevanz, nicht Sicherheit oder Empfehlung. Lies vor der Nutzung die Quellanweisungen.
SKILL.md
Dieser Auszug wurde bei der Prüfung gespeichert. Die externe Quelle enthält die vollständige und aktuelle Version.
---
name: testing-best-practices
description: Unit testing, integration testing, and test-driven development principles. Use when writing tests, reviewing test code, improving test coverage, or setting up testing strategy. Triggers on "write tests", "review tests", "testing best practices", or "TDD".
license: MIT
metadata:
author: agent-skills
version: "2.0.0"
---
# Testing Best Practices
Unit testing, integration testing, and TDD principles for reliable, maintainable test suites. Contains 34 rules across 7 categories using TypeScript with Jest/Vitest.
## Metadata
- **Version:** 2.0.0
- **Rule Count:** 34 rules across 7 categories
- **License:** MIT
## When to Apply
Reference these guidelines when:
- Writing unit or integration tests
- Reviewing test code quality
- Improving test coverage strategy
- Setting up testing infrastructure
- Debugging flaky or slow tests
## Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Test Structure | CRITICAL | `struct-` |
| 2 | Test Isolation | CRITICAL | `iso-` |
| 3 | Assertions | HIGH | `assert-` |
| 4 | Test Data | HIGH | `data-` |
| 5 | Mocking | MEDIUM | `mock-` |
| 6 | Coverage | MEDIUM | `cov-` |
| 7 | Performance | LOW | `perf-` |
## Quick Reference
### 1. Test Structure (CRITICAL)
- `struct-aaa-pattern` - Arrange, Act, Assert pattern
- `struct-descriptive-names` - Descriptive test names
- `struct-one-assertion` - One logical assertion per test
- `struct-describe-it` - Organized test suites with describe/it
- `struct-given-when-then` - BDD style when appropriate
- `struct-setup-teardown` - Proper setup and teardown
### 2. Test Isolation (CRITICAL)
- `iso-independent-tests` - Tests run independently
- `iso-no-shared-state` - No shared mutable state
- `iso-deterministic` - Same result every run
- `iso-no-order-dependency` - Run in any order
- `iso-cleanup` - Clean up after tests
- `iso-test-doubles` - Strategic use of test doubles
### 3. Assertions (HIGH)
- `assert-specific` - Use specific assertions
- `assert-meaningful-messages` - Helpful failure messages
- `assert-expected-actual` - Expected value first
- `assert-no-magic-numbers` - Use named constants
- `assert-custom-matchers` - Custom matchers for domain logic
### 4. Test Data (HIGH)
- `data-factories` - Use factories for test data
- `data-builders` - Builder pattern for complex objects
- `data-faker` - Generate realistic fake data
- `data-minimal` - Minimal test data
- `data-realistic` - Realistic edge cases
- `data-fixtures` - Manage test fixtures
### 5. Mocking (MEDIUM)
- `mock-boundaries` - Mock only at boundaries
- `mock-verify-interactions` - Verify important mock calls
- `mock-minimal` - Don't over-mock
- `mock-realistic` - Realistic mock behavior with MSW
### 6. Coverage (MEDIUM)
- `cov-meaningful` - Focus on meaningful coverage
- `cov-edge-cases` - Cover edge cases and boundary values
- `cov-unhappy-paths` - Test error scenarios
- `cov-not-100-percent` - 100% coverage isn't the goal
### 7. Performance (LOW)
- `perf-fast-unit` - Keep unit tests fast (<50ms each)
- `perf-parallel` - Run tests in parallel
- `perf-test-organization` - Organize tests for fast feedback
## Essential Guidelines
### AAA Pattern (Arrange, Act, Assert)
```typescript
it('calculates total with discount', () => {
// Arrange
const cart = new ShoppingCart();
cart.addItem({ name: 'Book', price: 20 });
cart.applyDiscount(0.1);
// Act
const total = cart.getTotal();
// Assert
expect(total).toBe(18);
});
```
### Descriptive Test Names
```typescript
// ✅ Describes behavior and scenario
describe('UserService.register', () => {
it('creates user with hashed password', () => {});
it('throws ValidationError when email is invalid', () => {});
it('sends welcome email after successful registration', () => {});
});
```
### Test Isolation
```typescript
// ✅ Each test sets up its own data
beforeEach(() => {
mockRepository = { save: vi.fn(), findVollständige Quelle auf GitHub lesen (öffnet externe Seite)