Виталий Бруновский — ментор по Security Testing и SDET

1. Рынок тестирования в 2026: почему стандартной автоматизации уже мало для Senior и Lead

Если вы читаете это как SDET или QA Automation инженер, вы уже знаете базовую правду рынка: уметь писать тесты — это не уникальность. Это входной билет.

В 2026 году компании покупают не «количество сценариев в Allure», а снижение риска и ускорение поставки без инцидентов. И тут внезапно оказывается, что самый дорогой класс дефектов — не «кнопка не нажалась», а нарушение границ доверия: доступ к чужим данным, обход бизнес-правил, небезопасные зависимости, слабая аутентификация, «умные» инъекции в API.

Если хочется посмотреть, как это выглядит на практике (не теория, а уязвимости, сценарии и код), начните с гайда про автоматизацию Security Testing для GraphQL с Playwright.

Рынок QA Automation вырос вширь: библиотеки, шаблоны Page Object, генераторы отчётов, «лучшие практики» стали общим достоянием. Конкуренция на middle-уровне высокая, а у работодателя растёт ожидание, что инженер по автоматизации понимает не только «как нажать», но и где система может соврать про доверие. Инциденты безопасности стоят дороже большинства функциональных регрессий: они тянут за собой расследования, коммуникации с клиентами, иногда юридические последствия и обязательный рефакторинг доступа.

Отсюда простая карьерная механика: если ваш вклад измеряется в «покрытии UI», вы конкурируете с десятками тысяч специалистов с похожим резюме. Если ваш вклад измеряется в предотвращённых классах уязвимостей и в том, что вы умеете это закрепить тестами и пайплайном, вы выходите в зону более узкого рынка и более высоких ставок. Это не «мода на AppSec» — это ответ на то, как устроены современные продукты: микросервисы, API-first, сложные границы между tenant и ролями.

Для позиции Senior SDET / Lead SDET от вас ждут не только стабильный UI и контрактные API-тесты. Ждут человека, который:

  • понимает модель угроз продукта и может перевести её в проверяемые сценарии;
  • умеет ловить регрессии безопасности так же рутинно, как регрессии функционала;
  • говорит с разработкой на языке риска и доказательств, а не «у меня тест красный».

Именно поэтому Security Testing для QA стал одним из самых сильных рычагов для роста компенсации: это редкий навык, который напрямую бьёт в P&L (инциденты, простои, регуляторика, репутация).

Если вы ищете SDET обучение или курсы SDET 2026, честный критерий выбора прост: даёт ли программа вам автоматизацию тестирования безопасности в вашем стеке и доводит ли до артефактов, которые переживут интервью (репозиторий, CI, отчёты, воспроизводимые PoC).

А если вы стартуете из QA и хотите «карту местности», чтобы не теряться в терминах и направлениях, вот полезный ориентир: roadmap по кибербезопасности и OSINT (с упором на то, какие артефакты собирать).

На собеседованиях всё чаще звучат вопросы не «как вы ждёте элемент», а «как вы проверите, что пользователь не читает чужие сущности», «как вы ловите регрессию в правах», «как вы отделяете негативный сценарий от флейка». Если у вас нет готовых ответов и примеров из практики, вы остаётесь в корзине «хороший автоматизатор», а не «кандидат на Lead». Security Testing для QA — это как раз тот слой, который превращает автоматизацию из «сервиса для команды» в инженерный контур управления риском.

2. Security-Aware SDET: когда код тестов начинает искать уязвимости, а не только статусы

Security-Aware SDET — это не «SDET + сертификат». Это роль, где вы проектируете тесты так, чтобы они отражали политику доступа и инварианты данных, а не только ожидаемый JSON.

Shift Left Security в исполнении SDET выглядит приземлённо:

  1. вы фиксируете «кто что может» (роли, тенанты, ownership объектов);
  2. переносите это в автотесты как контракт безопасности;
  3. подключаете прогон в CI так, чтобы падение было сигналом «мы почти отгрузили уязвимость», а не «флейк».

Ключевой сдвиг мышления: успешный HTTP 200 может быть провалом безопасности. Ваш тест должен уметь это доказать — иначе вы остаётесь в зоне «функциональная автоматизация», где конкуренция высокая, а ставки низкие.

Security-Aware SDET не заменяет инженера AppSec (Application Security) и не обязан «ломать прод» вручную каждую пятницу. Его задача — сделать так, чтобы типовые ошибки доступа и контракта доверия не проходили в main без шума и драмы. Это и есть практический смысл Shift Left: не лекции про угрозы, а конкретные проверки, которые повторяются на каждом PR и понятны разработчику как обычный failing test.

Хороший признак зрелости — когда ваши тесты начинают описывать политику: «роль X не видит поле Y», «tenant A не пересекает данные tenant B», «гость не может вызвать админский эндпоинт даже с валидным токеном другого пользователя». Это уже язык безопасности, но он остаётся в привычной для SDET форме — код, ассерты, отчёт, трассировка.

3. Пять прикладных областей Security, которые SDET должен автоматизировать прямо сейчас

Ниже — не абстрактный список «про безопасность», а практические зоны, где автоматизация тестирования безопасности чаще всего окупается быстрее всего.

3.1. BOLA / IDOR на API

Самый частый класс багов в реальных продуктах: «пользователь авторизован», но объект не его. Для SDET это идеальная задача автоматизации: два контекста, таблица объектов, негативные ожидания, стабильные фикстуры.

OWASP API Security Top 10 называет это Broken Object Level Authorization. На практике это выглядит скучно и страшно одновременно: сменили один идентификатор в URL — и система отдала чужой заказ, документ, медицинскую запись, финансовую операцию. Автотест здесь должен отвечать на вопрос «может ли легальный пользователь сделать нелегальное действие в рамках выданных ему кредов». Именно поэтому BOLA — первый кандидат на автоматизацию тестирования безопасности: проверка структурируется, хорошо масштабируется по эндпоинтам и даёт измеримый эффект для команды.

3.2. Инъекции и «второй уровень» валидации

Инъекции — не только SQL. В API чаще всплывают неочевидные места: сортировки, фильтры, поиск, генерация отчётов, шаблоны. SDET должен уметь строить наборы вводов и проверять не только 4xx/5xx, но и семантику утечки (различимость ошибок, побочные эффекты, побочные поля).

Важно не превращать это в «стреляем sqlmap по стенду», а встроить в ваш стиль тест-дизайна: параметризация, граничные значения, контроль того, что ответ не раскрывает внутреннюю структуру ошибки для атакующего. Security Testing для QA здесь пересекается с качеством API: один и тот же дефект может быть и багом UX/логики, и дырой для дальнейшей эксплуатации.

3.3. Аутентификация, сессии, токены

Обновление токенов, границы сессий, «переезд» контекста между сервисами, неправильные audience/scope, устаревшие refresh-потоки. Это зона, где удобен Playwright: можно комбинировать browser context и request API в одном стиле.

SDET выигрывает, когда умеет проверять не «логин работает», а инварианты: нельзя подменить subject, нельзя переиспользовать чужой refresh в своей сессии, нельзя остаться авторизованным после logout на другом клиенте, если продукт это обещает. Эти сценарии часто ломаются регрессиями при рефакторинге identity-слоя — значит, они идеальны для автоматического контроля.

3.4. Безопасность зависимостей и supply chain

SDET в 2026 обязан понимать, что CI — это тоже поверхность атаки: lockfile, SBOM-подходы, политика версий, сканирование уязвимостей, кэши. Не обязательно быть security-инженером полного цикла, но «не ломать безопасность пайплайна» — часть зрелости.

На уровне Lead от вас ждут дисциплины: где хранятся секреты, кто может триггерить деплой, что попадает в артефакты, не утекает ли токен в логи тестов. Это не «красивые слова DevSecOps», а ежедневная гигиена, без которой любая красивая автоматизация превращается в источник инцидентов.

3.5. Бизнес-логика API и злоупотребления

Иногда уязвимость — это не CVE, а комбинация легальных вызовов: race conditions, повторные списания, обход лимитов, «дробление» операций. Здесь SDET побеждает тем, что умеет моделировать потоки и строить доказуемые сценарии злоупотребления.

Такие баги плохо ловятся статическими сканерами: нужен сценарий, состояние, порядок вызовов. Именно поэтому компании ищут людей, которые умеют думать как тестировщик и как злоумышленник в рамках продукта — без мифологии и без нарушения закона, на тестовых средах и с согласованными правилами игры.

4. Практика (Playwright): автотест, который ищет BOLA, а не «200 OK»

Ниже — учебный скелет теста: пользователь A пытается прочитать профиль пользователя B. Ожидаем 403/401/404 (что именно — зависит от вашей политики), но не 200 с чужими полями.

TypeScript + Playwright: проверка BOLA на REST API (чужой userId)
import { test, expect } from '@playwright/test';

type Profile = { id: string; email?: string };

async function getProfile(request: import('@playwright/test').APIRequestContext, userId: string) {
  return request.get(`/api/v1/users/${userId}/profile`);
}

test('BOLA: user A must not read user B profile', async ({ playwright }) => {
  const userA = await playwright.request.newContext({
    baseURL: process.env.API_BASE_URL,
    extraHTTPHeaders: { Authorization: `Bearer ${process.env.TOKEN_USER_A}` },
  });

  const victimId = process.env.USER_B_ID;
  if (!victimId) test.skip();

  const res = await getProfile(userA, victimId);
  expect(res.status(), 'BOLA: cross-user profile read should be denied').not.toBe(200);

  if (res.status() === 200) {
    const body = (await res.json()) as Profile;
    expect.soft(body.id, 'If 200 happens, at least it must not be victim id').not.toBe(victimId);
  }

  await userA.dispose();
});

Что здесь важно методологически: тест не «празднует 200», а проверяет смысл ответа относительно ownership. В реальном репозитории вы добавите стабильные фикстуры, маркеры tenant, негативные кейсы на «частичные утечки» и отчёт в CI с артефактами.

Расширения, которые обычно делают первыми: матрица «роль × ресурс», проверка массового перебора идентификаторов (аккуратно, на тестовых данных), валидация, что ошибка доступа не раскрывает существование объекта, если продукт это требует, и снимок заголовков, чтобы не пропустить случайный cache-control для чувствительных ответов.

Если тест падает, ценность для команды в том, что вы приносите не абстрактное «у нас небезопасно», а воспроизводимый сценарий: какой пользователь, какой объект, какой запрос, какой фактический статус и тело ответа. Это сокращает время фикса и повышает доверие к QA со стороны разработки — а значит, ускоряет карьеру SDET, который умеет так коммуницировать.

5. Индивидуальное менторство: самый быстрый путь внедрить Security Testing в ежедневную работу

Статьи и «списки уязвимостей» не повышают зарплату сами по себе. Повышает зарплату то, что вы делаете на работе: ловите реальные баги, закрываете классы рисков, встраиваете проверки в CI и умеете это защитить на ревью.

Разница между «я проходил курс» и «я внедрил» — в деталях: как оформить тестовые данные, как не сломать стенд, как писать ассерты, которые не шумят, как объяснить баг так, чтобы его приоритизировали, как не нарушить политику компании при проверках. Индивидуальный формат ускоряет именно этот перевод знаний в привычку работы.

Индивидуальное SDET обучение у ментора экономит время, потому что вы не блуждаете по учебным лабораториям, а:

  • переносите задачи на ваш стек (REST/GraphQL, Playwright, GitHub Actions/GitLab CI);
  • учитесь доказывать риск так, чтобы это принимали разработчики и лиды;
  • собираете портфолио из реальных отчётов и тестов, а не «сертификат ради галочки»;
  • тренируете навык нахождения реальных багов: от гипотезы до минимального воспроизведения и до теста, который не даст регрессии вернуться.

Формат здесь — не абстрактные лекции, а разбор ваших кейсов с ментором, который работает на пересечении автоматизации и Application Security. Это важно для инженеров, которым нужен результат в KPI, а не «ещё один курс в закладках».

Если вам нужен ментор по кибербезопасности и по практическому внедрению Security Testing в автоматизацию, логичный следующий шаг — разговор про ваш текущий уровень и цели. Параллельно имеет смысл посмотреть программу на странице курсов SDET 2026 и материалы по Application Security Engineer — но фокус этой статьи именно в «security как hard skill» для SDET.

6. FAQ: 10 вопросов о переходе из чистого QA в Security Testing

6.1. Обязательно ли быть пентестером?

Нет. SDET-уровень — это безопасность в контексте продукта и CI, а не CTF ради CTF. Вам не нужно уметь всё, что умеет red team; нужно уметь системно проверять границы доверия в приложении, которое вы уже тестируете, и автоматизировать эти проверки так, чтобы они жили рядом с функциональными тестами.

6.2. С чего начать, если я много лет писал только UI?

С REST API и ownership: BOLA/IDOR + негативные сценарии + стабильные токены/роли. UI останется полезным для части сценариев (куки, редиректы, OAuth-потоки), но «центр тяжести» security в современных продуктах чаще в API и политике доступа. Перенесите навык структурирования сценариев в контрактные проверки и негативные матрицы.

6.3. Нужен ли мне OWASP Top 10 «наизусть»?

Нет. Нужно уметь маппить классы рисков на ваши эндпоинты и автоматизировать проверки. Top 10 — хороший словарь, но карьерно важнее умение связать конкретный риск с конкретным набором тестов и метрикой «мы это больше не ломаем молча».

6.4. Playwright или чистый REST-клиент?

Playwright удобен тем, что объединяет browser + request и хорошо живёт в CI. Но инструмент вторичен — первична модель угроз. Если команда стандартизировала другой HTTP-клиент, это не блокер: принципы BOLA и негативного тестирования переносятся один в один.

6.5. Как не утонуть во флейках security-тестов?

Изоляция данных, детерминированные пользователи/tenant, явные ожидания и запрет «магических sleep». Отдельно: не смешивайте «проверку безопасности» и «зависимость от внешнего rate limit» без моков; не стреляйте по продакшену; заранее договоритесь о тестовых учётках и политике очистки данных.

6.6. Что сказывается на зарплате сильнее: скорость тестов или security?

На Senior/Lead важнее эффект на риск. Быстрые тесты, которые не ловят уязвимости, рынок ценит слабее. Идеал — быстрые и содержательные проверки; если приходится выбирать, на повышение ставок чаще работает второй фактор, но долгосрочно побеждает инженер, который умеет оптимизировать и то и другое.

6.7. Нужен ли DevSecOps, если я SDET?

Нужен минимум: секреты, права в пайплайне, политика артефактов, уязвимости зависимостей — иначе вы автоматизируете «в песочнице», которая не похожа на прод. Не обязательно стать экспертом по Kubernetes, но понимание того, как ваши тесты получают доступ к средам и секретам, — часть профессионального профиля Lead.

6.8. Как выглядит «доказательство» на интервью?

PR с тестами, короткий RFC на threat model, отчёт в CI, пример найденного риска и как его закрыли. Хорошо заходит история «мы поймали BOLA до релиза» с цифрами: сколько эндпоинтов покрыто матрицей, как устроены фикстуры, как вы защитились от ложных срабатываний.

6.9. Сколько времени занимает переключение мышления?

Обычно 4–8 недель на первый «осязаемый» набор проверок — если есть практика и обратная связь. Без практики теория растягивается на месяцы, потому что security не запоминается списками; оно прилипает через повторяемые шаблоны поиска и разбор реальных падений тестов.

6.10. Почему индивидуальное менторство часто быстрее курса?

Потому что вы не тратите недели на чужой учебный проект: вы переносите задачи на ваш реальный сервис и получаете разбор ваших артефактов. Курс даёт каркас, менторство ускоряет адаптацию каркаса к вашим ограничениям: стек, процессы, зрелость CI, политика безопасности компании.

Запишись на бесплатный разбор твоего Roadmap в Telegram

Пришли коротко: стек, роль, цель (Senior/Lead), что уже автоматизируешь. Разберём, куда встроить Security Testing, чтобы это выглядело как сильный профиль на рынке 2026.

Записаться на бесплатный разбор Roadmap

Читайте также