Ранее я уже писал статью про это, но настало время ее структурировать и актуализировать.
В IT все стремительно меняется и в тестировании (в частности) тоже. Появляются новые инструменты, активно используются AI агенты, но основа остается той же.
Если вы хотите начать карьеру в IT или "актуализировать" свои знания под современный стек - эта статья для вас.
Тестирование — это не «поиск багов», а системная работа с рисками: понять, что может сломаться, где ущерб максимальный, как обнаружить проблему раньше и дешевле, и как дать команде уверенность в релизе.
1) Основа: роль тестирования и качество как процесс
1.1. Зачем нужно тестирование
- снижать риски для бизнеса и пользователей;
- давать прозрачность: что проверено, что не проверено и почему;
- помогать команде улучшать процесс разработки (раньше находить дефекты, повышать тестируемость, закрывать «дыры» мониторингом/алертами).
1.2. Уровни тестирования (важно не путать с “видами”)
- Unit — быстрые проверки логики на уровне функций/классов.
- Component / Service — проверка сервиса в изоляции (часто с моками зависимостей).
- Integration — проверка взаимодействий между компонентами/сервисами/БД/очередями.
- E2E — сквозные сценарии от UI/клиента до бэкенда.
Практика: чем выше уровень — тем тест дороже и более “хрупкий”, поэтому стратегию обычно строят вокруг пирамиды тестов (не делать E2E единственным типом автотестов).
1.3. Принципы и базовые понятия
- тестирование показывает наличие дефектов, а не их отсутствие;
- исчерпывающее тестирование невозможно → нужны приоритизация и риск‑подход;
- дефекты часто “кластеризуются” (в одних и тех же модулях);
- фиксация дефекта повышает качество, но может создать новый дефект → регресс обязателен.
2) Работа с требованиями и тестируемостью (shift-left)
2.1. Анализ требований (до разработки)
Проверяй требования на:
- полноту (все сценарии? ошибки? пограничные условия?);
- однозначность (нет “быстро”, “удобно”, “по возможности” без метрик);
- тестируемость (как проверить? где увидеть результат? что в логах/метриках?).
Полезная практика: составлять “вопросы к требованиям” и примерять тест‑сценарии ещё до кода.
2.2. Testability: что просить у команды, чтобы тестировать проще
- корреляционный id в логах (request-id/trace-id);
- понятные коды/форматы ошибок;
- feature flags (включение/выключение фичи без отката релиза);
- тестовые хуки/эндпоинты для диагностики (только в безопасном контуре);
- возможность сидировать тестовые данные повторяемо.
Сидирование тестовых данных - процесс предварительного заполнения базы данных или системы базовыми, фейковыми или заранее предопределенными данными перед запуском тестов.
3) Виды тестирования (что проверяем)
Подробнее можно почитать тут.
3.1. Функциональное
- соответствие требованиям/ожидаемому поведению;
- обработки ошибок и альтернативные сценарии;
- негативные и пограничные проверки.
3.2. Нефункциональное
- производительность и стабильность (latency, throughput, ресурсы);
- безопасность (уязвимости, конфигурации, зависимости);
- доступность (a11y), юзабилити (UX), совместимость.
3.3. Регрессионное
- проверка, что изменения не сломали существующее;
- критично: выделять smoke/sanity и критический регресс.
3.4. Приёмочное
- подтверждение ценности для бизнеса и конечных пользователей;
- чаще это совместная работа QA + PO/аналитик + поддержка/операции.
4) Тест-дизайн и документация (как думать и как фиксировать)
4.1. Техники тест-дизайна
- эквивалентные классы, граничные значения;
- таблицы решений;
- переходы состояний;
- pairwise (попарное тестирование);
- проверка инвариантов.
4.2. Артефакты (что реально нужно)
- тест‑стратегия (что/где/зачем, уровни тестов, quality gates);
- чек‑листы для быстрых прогонов и исследований;
- тест‑кейсы — там, где нужна повторяемость/аудит/обучение;
- тест‑наборы (smoke/regression/release) и критерии входа/выхода (exit criteria).
5) Инструменты (актуально на 2026) — по категориям
5.1. Управление тестами и отчётность
- TestRail, Zephyr / Xray (Jira), Azure DevOps Test Plans
- отчёты прогонов: Allure Report, ReportPortal
5.2. UI‑автоматизация (web)
- Playwright (часто основной выбор)
- Cypress (широко используется во фронтенд‑командах)
- Selenium (часто legacy/enterprise, но встречается)
5.3. Mobile
- Appium
- нативно: XCUITest (iOS), Espresso (Android)
- для React Native часто используют Detox
5.4. API / Integration
- клиенты: Postman, Insomnia
- тест‑фреймворки: pytest (Python), JUnit/TestNG (Java), NUnit (C#)
- API‑фреймворки: Karate, RestAssured (Java)
- gRPC: grpcurl (для ручных проверок)
5.5. Контрактное тестирование (очень полезно в микросервисах)
- Pact (consumer‑driven contracts)
5.6. Производительность
- k6 (удобен для CI/CD)
- JMeter (классика)
- Gatling, Locust
- LoadRunner (enterprise/коммерческий)
5.7. Безопасность (разделяй подходы)
- DAST: OWASP ZAP, Burp Suite
- SAST: Semgrep, SonarQube
- SCA (зависимости): Snyk, OWASP Dependency-Check
- контейнеры/образы: Trivy
5.8. CI/CD
- GitLab CI, Jenkins, GitHub Actions
- важные практики: quality gates, параллелизация, кэширование, карантин flaky‑тестов
5.9. Observability (чтобы проверять качество в реальности)
- OpenTelemetry
- метрики/дашборды: Prometheus + Grafana
- логи: Loki/ELK‑стек
- трейсы: Jaeger/Tempo
- ошибки приложений: Sentry
5.10. Контейнеры и окружения
- Docker, базово понимать контейнеризацию
- часто встречается: Kubernetes, Helm (на уровне “как посмотреть логи/поднять стенд/проверить конфиг”)
5.11 Тестирование данных (data testing) — отдельный must-have раздел (подробнее будет ниже (блок 7))
Инструменты/подходы:
- Great Expectations, Soda, Deequ
- dbt tests (если dbt используется)
- SQL‑проверки + автоматические алерты на аномалии.
6) Техники тестирования (что и как делать)
6.1. Ручное и исследовательское
- регресс по чек‑листам/кейсам;
- exploratory testing: исследование продукта по гипотезам, поиск неожиданных связок;
- фиксация наблюдений: шаги, окружение, данные, логи/скринкасты.
6.2. Автоматизация: что важно кроме “написать тест”
- изоляция тестовых данных и повторяемость;
- стабильность (борьба с flaky): корректные ожидания, детерминизм окружений, минимизация зависимости от UI;
- разделение по уровням (не строить весь автоконтур только на E2E).
6.3. Тестирование API
- контракты (схемы, обязательные поля, ошибки);
- идемпотентность, пагинация, сортировки, версии API;
- обратная совместимость.
6.4. Доступность (a11y) — минимум, который стоит знать
- навигация с клавиатуры, фокус, aria‑атрибуты;
- контраст, размеры кликабельных элементов;
- базовая проверка WCAG‑критериев.
7. Тестирование данных (SQL, DWH/BI, витрины и кубы)
Если продукт зависит от аналитики, отчётности, биллинга, рекомендаций или любых агрегатов, QA часто отвечает не только за UI/API, но и за корректность данных на всём пути: от источника до отчёта.
7.1. Что именно тестируем
1) Источники и загрузки (ingestion)
- данные приходят полностью (нет пропусков, задержек, дублей);
- корректные типы и форматы (даты, валюты, идентификаторы);
- обработка ошибок и “плохих” записей (dead-letter/карантин).
2) Преобразования (ETL/ELT)
- бизнес‑правила (фильтры, маппинги, расчёты);
- идемпотентность прогонов (повторный запуск не портит результат);
- корректность инкрементальных загрузок (watermark, late events).
3) Хранилище / витрины / агрегации
- согласованность между слоями (raw → staging → mart);
- инварианты (например, суммы, балансы, соответствие справочникам);
- контроль “расхождений” после изменений логики.
4) Кубы/OLAP и отчёты
- корректность мер и измерений (measures/dimensions);
- фильтры/срезы, гранулярность, правила агрегации;
- сверка с эталоном: “цифры в отчёте = цифры в витрине”.
7.2. Типовые проверки (чек‑лист)
- Полнота: все ожидаемые записи/партиции присутствуют (особенно по датам).
- Уникальность: ключи уникальны, нет дублей.
- Согласованность: FK/справочники, допустимые значения.
- Точность расчётов: формулы, округления, валюты, таймзоны.
- Аномалии: резкие скачки метрик (volume/GMV/MAU) и причины.
- Историчность: SCD‑логика (Type 1/2), пересчёты, backfill.
- Миграции: сверка до/после (row count, checksum, инварианты).
- Безопасность данных: PII/маскирование/доступы.
7.3. Техники и подходы
- Data quality rules (правила качества) как код: “expectations/tests”.
- Recon tests: сверка источника и приёмника (с допусками/окнами).
- Snapshot testing витрин: фиксируем “эталон” для контрольного набора.
- Метаморфические проверки: если вход X изменился так-то, выход должен измениться так-то.
- Алерты по аномалиям: не только тесты в CI, но и мониторинг данных.
7.4. Инструменты (практика 2026)
- Data quality: Great Expectations, Soda, Amazon Deequ
- Если в стеке dbt: dbt tests (schema + custom tests)
- Оркестрация: Airflow/Prefect (как контекст, где запускать проверки)
- Наблюдаемость данных: “data observability” класс (Monte Carlo/Bigeye и т.п. — если уместно упомянуть как категорию)
- База: SQL (JOIN, агрегации, оконные функции), понимание партиций/индексов/колонночных БД (если ClickHouse и аналоги)
8) Методологии и процессы разработки
8.1. Agile/Scrum
Важно понимать не “церемонии”, а то, как QA встроен в поток:
- участие в refinement/planning;
- согласование критериев приёмки (acceptance criteria);
- влияние на Definition of Done.
8.2. DevOps и релизы
- CI/CD как основной канал качества;
- quality gates (проверки, без которых релиз не проходит);
- canary/blue‑green, feature flags, быстрый rollback.
9) Техническая база тестировщика
- один основной язык: Python / Java / C# / JavaScript
- Git (ветки, PR, rebase/merge, разрешение конфликтов)
- HTTP, REST, базово OAuth/JWT
- SQL (SELECT, JOIN, агрегации) + понимание транзакций и индексов на уровне “почему запрос может быть медленным”
- Linux/CLI: логи, процессы, сеть (curl, grep, tail, netstat/ss)
10) Софт-скиллы (без них качество не взлетает)
- коммуникация без “виноватых”: описывать факты, влияние, приоритет;
- умение договариваться о качестве: критерии приёмки, риски релиза;
- ясные баг‑репорты: шаги, expected/actual, окружение, логи, видео/скрин.
11) AI‑агенты и LLM‑инструменты для тестировщика (автотесты и аналитика)
AI‑инструменты помогают ускорять рутину, но не заменяют инженерную проверку. Их лучше использовать как “вторую голову”: для генерации черновиков, поиска кейсов, рефакторинга, анализа падений.
11.1. Где AI реально полезен
Для автотестов
- генерация каркаса тестов (Playwright/pytest/JUnit) по спецификации/примеру API;
- генерация данных и фикстур (валидные/невалидные наборы);
- рефакторинг тестов (устранение дублей, вынос page objects/клиентов);
- помощь с flaky: подсказки по ожиданиям, синхронизации, изоляции.
Для тест-дизайна
- расширение набора сценариев (негативные/пограничные/комбинаторика);
- составление таблиц решений, матриц совместимости, чек‑листов.
Для анализа результатов
- группировка падений, кластеризация ошибок по логам/трейсам;
- быстрые гипотезы по root cause (с обязательной ручной валидацией).
11.2. Ограничения и правила безопасности
- AI может “додумывать” API/селекторы/структуру проекта → всё нужно прогонять и ревьюить.
- нельзя скармливать секреты, токены, персональные данные, закрытые дампы.
- “сгенерировано AI” = черновик, пока не: 1) прошло линтеры/типизацию, 2) запустилось локально/в CI, 3) получило code review.
11.3. Практический процесс (как внедрять)
1) Сформулируй контракт: что тестируем, уровень (API/интеграция/e2e), критерии.
2) Дай AI контекст проекта: структура папок, примеры 1–2 тестов “как принято”.
3) Попроси минимальный рабочий тест + список допущений.
4) Запусти, собери ошибки, снова отдай AI только нужные фрагменты (без чувствительных данных).
5) Доведите до стандарта: стабильность, данные, отчёты, ретраи по правилам.
11.4. Примеры запросов (промптов) для автотестов
- “Сгенерируй Playwright test для сценария X в стиле существующих тестов, используя page object Y. Не используй sleep, только ожидания по состоянию.”
- “Сгенерируй набор негативных кейсов для endpoint /v1/orders с акцентом на валидацию и авторизацию, в формате таблицы: input → expected.”
- “Рефакторни этот pytest тест: убери дубли, вынеси клиент в фикстуру, добавь понятные ассёрты и логирование запроса/ответа.”
Если хочешь, можно добавить “инструменты” как категории:
- IDE‑ассистенты, CLI‑агенты, PR‑боты, генерация тестов по контракту (OpenAPI) — но без привязки к конкретным вендорам.
Вместо заключения
Как видите, в 2026 году фраза - "тестирование - легкий вход в IT" все сильнее теряет свою актуальность. Сейчас это вполне себе полноценная профессиональная область. Не менее сложная чем аналитика и разработка, но и так же хорошо оплачиваемая.
Вход в эту сферу сейчас не так прост как 5 лет назад, но если есть желание и упорство, то в итоге стать тестировщиком все же реально, а работа одна из самых интересных и разнообразных в сфере IT.
С этой статьи я открываю новый раздел — уроки по тестированию. Он подойдёт тем, кто учится на QA с нуля, и тем, кто уже работает, но хочет систематизировать знания: тест-дизайн, API, автотесты, SQL/данные, CI/CD и практики командной разработки.