Skip to content
Back to skills

Testing

ASecurity

Testing patterns for AAA structure, naming, mocks versus real dependencies, coverage targets, TDD flow, parameterized tests, and flake prevention. Use when writing, reviewing, or repairing automated test suites.

  • 21 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 9, 2026
testingtypescriptpythongotestingdatabasefrontendbackend

Works with

  • cli

Security analysis

A100/100

Scanned September 9, 2026

npx -y skills add kid-sid/codex-spellbook --skill testing --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Testing?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Testing
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kid-sid-testing/badge)](https://www.skillsdirectory.com/skills/kid-sid-testing)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: testing
description: Testing patterns for AAA structure, naming, mocks versus real dependencies, coverage targets, TDD flow, parameterized tests, and flake prevention. Use when writing, reviewing, or repairing automated test suites.
---

# Testing

Write tests that isolate behavior, document intent, and fail for one reason at a time.

## When to Activate

- Add tests for new behavior
- Refactor a flaky or slow test suite
- Decide whether a collaborator should be mocked
- Raise or enforce coverage expectations
- Convert duplicated tests into parameterized cases
- Review a PR for missing test coverage
- Drive a change with TDD

## Test Structure

| Phase | Purpose | Rule |
| --- | --- | --- |
| Arrange | Build inputs and collaborators | Keep setup minimal and explicit |
| Act | Execute one behavior | One action per test |
| Assert | Verify outcome | Assert observable effects, not internals |

## Naming and Coverage

| Style | Example |
| --- | --- |
| Python | `test_create_user_rejects_duplicate_email` |
| TypeScript | `it("rejects duplicate email on createUser")` |
| Go | `func TestCreateUser_RejectsDuplicateEmail(t *testing.T)` |

| Codebase Type | Target |
| --- | --- |
| Shared library | `>= 90%` line coverage |
| Backend service | `>= 80%` line coverage with integration coverage on critical flows |
| Frontend app | `>= 70%` on logic-heavy modules, plus E2E coverage on core journeys |

## Mock vs Real

| Dependency | Default | Reason |
| --- | --- | --- |
| Database adapter in unit tests | Mock or in-memory fake | Keep units fast |
| Pure domain services | Real | No need to mock deterministic logic |
| HTTP clients | Mock at network boundary | Avoid external flake |
| Serialization and validation | Real | Contract drift matters |

## TDD and Parameterization

| Step | Goal |
| --- | --- |
| Red | Prove the behavior is missing |
| Green | Implement the smallest passing change |
| Refactor | Improve structure without changing behavior |

Python

```python
@pytest.mark.parametrize(("input", "expected"), [("A", "a"), ("B", "b")])
def test_normalize_code(input: str, expected: str) -> None:
    assert normalize_code(input) == expected
```

TypeScript

```ts
it.each([
  ["A", "a"],
  ["B", "b"],
])("normalizes %s", (input, expected) => {
  expect(normalizeCode(input)).toBe(expected);
});
```

## Flakiness Prevention

| Risk | Prevention |
| --- | --- |
| Time dependence | Freeze time or inject clock |
| Randomness | Seed generators |
| Order dependence | Isolate global state and DB fixtures |
| Network | Stub external calls |

BAD

```python
def test_user_flow():
    # creates user, sends email, checks DB, checks cache
    ...
```

GOOD

```python
def test_create_user_persists_record() -> None:
    ...

def test_create_user_enqueues_welcome_email() -> None:
    ...
```

## Checklist

- [ ] Each test follows Arrange, Act, Assert
- [ ] Test names describe behavior and scenario
- [ ] Mocks are used only at unstable boundaries
- [ ] Critical paths have integration coverage
- [ ] Time, randomness, and network are controlled
- [ ] Parameterized tests replace duplicated assertion logic where useful
- [ ] Coverage targets match the codebase type

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…