Roadmap QA-инженера: от ручного тестирования к автоматизации
Практика3 минРедакция Innovialabs
Коротко
Начните с ручного тестирования: теория, тест-кейсы, баг-репорты, DevTools, API и SQL; затем освойте один язык программирования, фреймворк для автотестов и запуск тестов в CI, собирая портфолио на каждом этапе.
Короткий маршрут
Путь QA-инженера удобно делить на две большие части:
- Ручное тестирование — понимание, что и как проверять.
- Автоматизация — умение превращать проверки в код, который запускается сам.
Пропускать первую часть ради «сразу в автоматизацию» — частая ошибка. Автотест полезен, только если вы знаете, какой сценарий стоит автоматизировать и что считать ошибкой.
Часть 1. Ручное тестирование
Теория
- Цель тестирования и разница между verification и validation.
- Виды тестирования: функциональное, регрессионное, smoke, UI, юзабилити.
- Техники тест-дизайна: классы эквивалентности, граничные значения, таблицы решений, переходы состояний.
- Жизненный цикл бага: от создания до закрытия.
Документация
- Чек-листы для быстрых проверок.
- Тест-кейсы: шаги, ожидаемый результат, предусловия.
- Баг-репорты: заголовок, шаги воспроизведения, фактический и ожидаемый результат, окружение, скриншот или видео.
Хороший баг-репорт можно воспроизвести без вопросов к автору.
Технические навыки
- DevTools: консоль, вкладка Network, просмотр запросов и ответов.
- Тестирование API с помощью Postman или аналогов: методы, статус-коды, проверка тела ответа.
- SQL на базовом уровне: проверить, что данные действительно сохранились.
- Основы мобильного тестирования: разные экраны, ориентация, прерывания.
Чекпоинт: вы берете любое публичное веб-приложение, составляете для него чек-лист и находите реальные дефекты с понятными баг-репортами.
Часть 2. Путь к автоматизации
Шаг 1. Основы программирования
Выберите язык, на котором пишут автотесты в интересных вам компаниях: часто это Python, JavaScript/TypeScript или Java. Освойте переменные, условия, циклы, функции, классы, работу с исключениями и Git.
Шаг 2. Фреймворк для тестов
- Тест-раннер вашего языка (например, pytest, Jest или JUnit).
- UI-автоматизация: Playwright, Cypress или Selenium.
- API-автотесты: HTTP-клиент плюс проверки ответов.
- Паттерн Page Object и переиспользуемые фикстуры.
def test_login_shows_error_for_wrong_password(page):
page.goto("https://example.com/login")
page.fill("#email", "user@example.com")
page.fill("#password", "wrong")
page.click("button[type=submit]")
assert page.locator(".error").is_visible()
Шаг 3. CI
- Запуск автотестов на каждый pull request.
- Отчеты о прохождении тестов.
- Борьба с нестабильными тестами: явные ожидания вместо пауз, независимые тестовые данные.
Чекпоинт: тесты запускаются в CI без вашего участия, а их падение указывает на реальную проблему.
Что автоматизировать в первую очередь
| Хороший кандидат | Плохой кандидат |
|---|---|
| Регулярная регрессия | Функция, которая меняется каждую неделю |
| Критичные сценарии: вход, оплата, заказ | Разовая проверка |
| Проверки API с большим числом комбинаций | Оценка удобства и внешнего вида |
План портфолио
- Ручной проект: чек-лист, 10-15 тест-кейсов и несколько баг-репортов для открытого веб-приложения.
- API-проект: коллекция запросов к публичному API с проверками ответов.
- Проект автоматизации: UI- и API-тесты в репозитории на GitHub с README, как их запустить.
- CI: настроенный запуск этих тестов при каждом push.
Тестируйте учебные стенды и открытые демо-приложения, созданные для практики, а не чужие рабочие сервисы без разрешения.
К каждому проекту добавьте короткое описание: что тестировали, какие техники применили и какие дефекты нашли. Для работодателя ход ваших мыслей так же важен, как сам код.