Автоматизатор тестирования — это не «ручной QA, который прошёл курс Selenium». Нанимают человека, который умеет выбрать, что автоматизировать, встроить прогон в поставку и не превратить пайплайн в красную стену из флаков. Курс с десятком UI-сценариев на демо-сайте этого не доказывает. Доказывает репозиторий, где тесты гоняются в CI, падения разбираются, а зона покрытия названа честно.
Ниже — путь из manual QA (и редкий вход без ручного контура): какой язык и стек выбрать, какой один проект закрывает сомнение, когда резюме уже можно подписывать automation, как не прыгать в SDET-вакансии с тремя месяцами практики. Два рабочих плана: 90 дней из ручного тестирования и вход для разработчика, который уходит в тест. Вакансии смотрите в каталоге automation QA, не в общей куче «тестировщик».
Коротко:
- Сначала ручной контур и тестовый дизайн, потом код. Иначе вы пишете хрупкие клики без понимания риска.
- Один язык (часто Python или Java/JavaScript под стек команды) плюс API-тесты важнее пяти фреймворков в резюме.
- Артефакт: репозиторий с CI, отчётом, README «что покрыто / что нет / как гонять».
- Не называйте себя SDET, пока нет поставки тестов в чужой пайплайн и разбора стабильности.
- Резюме под эту роль собирайте отдельно: резюме автоматизатора QA.
Чем automation отличается от «написал UI-тесты»
Ручной QA отвечает на вопрос «сломалось ли». Автоматизатор — на вопрос «какой риск мы можем ловить на каждом коммите без человека». Это про приоритеты: критический путь, API контракта, регресс, который уже надоел. Это про инженерию: селекторы, данные, ожидания, изоляция, артефакты прогона. Это про продукт поставки: ночной прогон бесполезен, если красный билд все игнорируют.
Вакансии путают названия: QA Automation, AQA, SDET, Test Engineer. SDET чаще ближе к разработке тестовой платформы и коду на уровне продукта. Junior automation чаще = API + узкий UI-критический путь + CI. Читайте задачи, не титул. Вход в ручной QA, если его ещё нет: как стать QA-инженером. Карта навыков без культа инструментов: что должен знать QA.
Какой стек выбрать, чтобы не распылиться
Смотрите 15 живых вакансий под ваш рынок (СНГ remote / ваш город) в automation QA и соседнем QA. Выпишите языки и уровни: UI, API, мобилка, нагрузка. Выберите один основной язык так:
- Команда на Java — Java + REST-assured / аналог, JUnit, пайплайн.
- Команда на Python / много API — Python + pytest + requests/httpx, не обязательно сразу Playwright.
- Фронт на JS/TS — TypeScript + Playwright часто стыкуется с разработкой.
- Мобилка — отдельная ветка, не мешайте в первый квартал с вебом, если нет оффера под мобилку.
SQL почти всегда нужен: проверить данные после API, не только «статус 200». Postman как клики в GUI — не навык автоматизации; коллекции с тестами и выгрузкой в CI — уже ближе. Docker на уровне «поднять зависимости для прогона» полезен, Kubernetes на junior automation — редко обязателен. Roadmap языка, если берёте Python: Python roadmap. Контейнеры как гигиена: Docker roadmap.
Что собрать за 90 дней: один контур, не десять курсов
Цель квартала — не сертификат. Цель — пайплайн, который гоняет набор тестов на каждый пуш или по расписанию, с понятным отчётом.
- Недели 1–3. Язык до уровня: функции, коллекции, исключения, чтение чужого теста. Параллельно: повторить тест-дизайн на одном учебном сервисе (регистрация, заказ, оплата). Без этого UI-автотесты будут случайными.
- Недели 4–6. API-тесты критического пути: создание сущности, негатив, идемпотентность если уместно, проверка поля в ответе и, если есть доступ, строки в БД. Это сильнее десяти UI-кликов.
- Недели 7–9. Узкий UI-слой: 3–7 сценариев на тот же сервис, Page Object или аналог, стабильные селекторы, без «sleep(5)» как архитектуры. CI: GitHub Actions / GitLab CI, артефакт отчёта, README.
- Недели 10–12. Стабильность: выкинуть флаки, пометить known issue, написать, чего нет (нагрузка, мобилка, визуальные регрессии). Короткое демо 5 минут: как упал тест, как вы это увидели в CI.
Если вы уже manual QA в штате — не копируйте учебный интернет-магазин. Автоматизируйте свой критический путь: кусок регресса, который гоняете руками каждую неделю. Даже 5 стабильных тестов в боевом CI весят больше пет-проекта. Согласуйте с командой, что можно положить в портфолио (часто — только обезличенный форк или описание без кода под NDA).
Когда резюме уже automation — и когда ещё нет
Ещё нет, если: курс без репозитория; тесты только локально на ноутбуке; «писал автотесты» = записывал клики в IDE; нет ни одного падения, которое вы разбирали.
Уже можно, если: есть CI; есть API или узкий UI; вы можете рассказать, почему не автоматизировали остальное; есть цифра или факт стабильности («прогон 8 минут, флаки вычищены, падения разбираем в тикете»). Формулировки — в материале про резюме автоматизатора, не копируйте «осуществил внедрение фреймворка с нуля», если вы прикрутили 6 тестов к готовому шаблону курса.
Вакансии с 5 годами SDET, нагрузочным тестированием и своим тест-фреймворком — не ваш первый слот. Ищите junior/middle automation, «manual + готовность писать тесты», «API automation». Чтение описания: что скрыто в вакансии.
Пример 1. 90 дней из manual QA
Светлана, 2 года ручного QA веб-сервиса заказов. Цель: не уволиться в никуда, а вырасти в текущей команде или уйти на automation junior.
План. Месяц 1: Python + pytest, три API-теста на наш стейджинг (согласовано с лидом): создание заказа, повтор оплаты, отмена. Месяц 2: эти тесты в CI ночного прогона, отчёт в канал. Месяц 3: два UI-сценария на критический путь оплаты, без попытки покрыть весь регресс.
В резюме потом: «API-регресс оплаты в CI, прогон N минут, зона: happy path + один негатив. UI — только оплата. Нагрузку не делала». Не: «разработала фреймворк автоматизации с нуля».
Разговор с руководителем на неделе 2: «Хочу забрать кусок регресса в пайплайн. Нужен доступ к стейджу и 20% времени. Вот три сценария, которые мы гоняем руками каждую пятницу».
Почему это работает: автоматизация привязана к боли команды, есть разрешение, есть граница. Если лид против — остаётся пет-проект с тем же стеком, но в резюме честно «учебный контур», плюс ручной опыт как база. Внутренний переход часто быстрее рынка.