Skip to content
Back to skills

Testing Strategy

ASecurity

Стратегия тестирования — пирамида unit/integration/e2e, что мокать (границы I/O) а что нет (домен, своя БД в integration), осмысленные пороги покрытия, AAA/given-when-then, критерии хорошего теста, причины flaky → фиксы. Use при проектировании/ревью тестов, выборе уровня и лечении нестабильных.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 11, 2026
testingnodetestingapi

Works with

  • api

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add Vitammiin/agent-vorcl-flow --skill testing-strategy --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Testing Strategy?

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

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

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-strategy
description: Стратегия тестирования — пирамида unit/integration/e2e, что мокать (границы I/O) а что нет (домен, своя БД в integration), осмысленные пороги покрытия, AAA/given-when-then, критерии хорошего теста, причины flaky → фиксы. Use при проектировании/ревью тестов, выборе уровня и лечении нестабильных.
---

# Навык: Стратегия тестирования

**Зелёный прогон — единственное доказательство.** Новый тест сначала покажи красным: никогда не падавший тест ничего не проверяет.

## Пирамида
- **Unit** (Vitest/Jest/node:test): чистая логика, ветвления, границы, ошибки — основная масса.
- **Integration** (Supertest/`app.inject()`, testcontainers): связка роут → сервис → БД, контракты API.
- **E2E** (Playwright): только критический путь пользователя.
Проверяй на самом низком уровне, где ошибка воспроизводима. Раннер определяй по `package.json` — не навязывай свой.

## Мокать / не мокать
Мокать: границы I/O — сеть (MSW/nock), сторонние API, время (fake timers), random (сид), env. НЕ мокать: свою доменную логику; свою БД в integration (testcontainers/тест-БД, никогда dev/prod); внутренние модули «для скорости». Перемокал — тест проверяет моки, а не код.

## Покрытие — осмысленно
Деньги/авторизация/безопасность/запись данных → ~100% branch; домен → 80–90%; UI-обвязка/конфиг/генерируемое → ниже или исключить. «80% везде» — антипаттерн (рождает тесты геттеров); **branch важнее line**.

## Структура и качество
AAA (Arrange → Act → Assert) или given-when-then; имя — спецификация «что делает при каком условии»; один логический assert. Хороший тест: падает по одной причине; не зависит от порядка (сам создаёт и убирает данные); детерминирован (время/random/сеть под контролем); проверяет поведение, не реализацию.

## Flaky → фиксы
sleep → событийное ожидание (`waitFor`/web-first assertions); shared state → изоляция данных на тест (rollback/truncate); время → fake timers; random → сид; race в async → найти (часто баг прод-кода — чини код); утечки ресурсов → `afterEach`/`finally`. Flaky — баг, не повод для retry. Доказательство лечения: 10 зелёных прогонов подряд, включая перемешанный порядок (`--sequence.shuffle`/`--randomize`).

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…