<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:yandex="http://news.yandex.ru" xmlns:turbo="http://turbo.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Блог</title>
    <link>https://yakorqa.ru</link>
    <description/>
    <language>ru</language>
    <lastBuildDate>Tue, 10 Mar 2026 15:14:27 +0300</lastBuildDate>
    <item turbo="true">
      <title>Баг-репорты и тест-кейсы: примеры и шаблоны для QA</title>
      <link>https://yakorqa.ru/tpost/bug-report-i-test-case</link>
      <amplink>https://yakorqa.ru/tpost/bug-report-i-test-case?amp=true</amplink>
      <pubDate>Tue, 28 Oct 2025 13:54:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild6136-3335-4532-b138-656661313735/1000051841.jpg" type="image/jpeg"/>
      <description>Учимся писать баг-репорты и тест-кейсы: структура, приоритеты, шаблоны. Готовые примеры для портфолио начинающего тестировщика.</description>
      <turbo:content><![CDATA[<header><h1>Баг-репорты и тест-кейсы: примеры и шаблоны для QA</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6136-3335-4532-b138-656661313735/1000051841.jpg"/></figure><h2  class="t-redactor__h2">Баг-репорты и тест-кейсы для портфолио: примеры и шаблоны</h2><div class="t-redactor__text">Хочешь стать тестировщиком? Тогда научись писать баг-репорты и тест-кейсы. Без них на работу не возьмут.</div><div class="t-redactor__text">Я покажу, как оформить документы для портфолио. Дам шаблоны. Разберу примеры. После статьи сможешь сделать свои первые документы и показать их на собесе.</div><h2  class="t-redactor__h2">Что такое баг-репорт</h2><div class="t-redactor__text">Баг-репорт — документ с описанием ошибки. Нужен, чтобы разработчик понял проблему и исправил.</div><div class="t-redactor__text">Плохой пример:</div><div class="t-redactor__text"> ❌ "Кнопка не работает"</div><div class="t-redactor__text">Хороший пример:</div><div class="t-redactor__text"> ✅ "Кнопка 'Купить' не реагирует на клик. Товар не добавляется в корзину. Проверял в Chrome, Windows 10."</div><div class="t-redactor__text">Чувствуешь разницу? Во втором случае понятно где баг, как повторить, на каком устройстве.</div><h2  class="t-redactor__h2">Из чего состоит баг-репорт</h2><h3  class="t-redactor__h3">ID и заголовок</h3><div class="t-redactor__text">ID — номер бага. Генерируется системой автоматически.</div><div class="t-redactor__text">Заголовок — краткое описание. Формула: "Где + Что случилось".</div><div class="t-redactor__text">Примеры:</div><div class="t-redactor__text"> ✅ "Корзина: товар исчезает после перезагрузки"</div><div class="t-redactor__text"> ✅ "Регистрация: нет ошибки при пустом email"</div><h3  class="t-redactor__h3">Шаги воспроизведения</h3><div class="t-redactor__text">Самая важная часть. Пиши по шагам:</div><div class="t-redactor__text"><ol><li data-list="ordered">Открыть сайт example.com</li><li data-list="ordered">Нажать "Войти"</li><li data-list="ordered">Ввести email: test@mail.ru</li><li data-list="ordered">Ввести пароль: 123456</li><li data-list="ordered">Нажать "Отправить"</li></ol></div><div class="t-redactor__text">Каждый шаг с новой строки. Нумеруй.</div><h3  class="t-redactor__h3">Ожидаемый и фактический результат</h3><div class="t-redactor__text">Ожидаемый — как должно работать.</div><div class="t-redactor__text"> Фактический — что происходит.</div><div class="t-redactor__text">Пример:</div><div class="t-redactor__text"><ul><li data-list="bullet">Ожидал: попаду в личный кабинет</li><li data-list="bullet">Получил: ошибка 500</li></ul></div><h3  class="t-redactor__h3">Окружение</h3><div class="t-redactor__text">Где баг появился:</div><div class="t-redactor__text"><ul><li data-list="bullet">ОС: Windows 10 / macOS 13</li><li data-list="bullet">Браузер: Chrome 118 / Safari 16</li><li data-list="bullet">Версия приложения: v2.3.1</li></ul></div><div class="t-redactor__text">Добавь скриншоты. Желательно видео. И логи консоли.</div><h2  class="t-redactor__h2">Priority и Severity — разные вещи</h2><div class="t-redactor__text">Многие путают. Объясняю:</div><div class="t-redactor__text">Severity — насколько серьёзен баг для системы.</div><div class="t-redactor__text"> Priority — насколько срочно исправлять.</div><img src="https://static.tildacdn.com/tild3565-3035-4639-b635-623234363739/__2025-10-28__135519.png"><div class="t-redactor__text">Priority:</div><div class="t-redactor__text"><ul><li data-list="bullet">High — исправить сейчас</li><li data-list="bullet">Medium — можно отложить</li><li data-list="bullet">Low — когда будет время</li></ul></div><div class="t-redactor__text">Пример: опечатка на главной странице = Severity: Trivial, но Priority: High. Потому что главную видят все.</div><h2  class="t-redactor__h2">Жизненный цикл бага</h2><div class="t-redactor__text">Баг проходит статусы:</div><div class="t-redactor__text">New → создан, не назначен</div><div class="t-redactor__text"> Open → назначен разработчику</div><div class="t-redactor__text"> In Progress → разработчик чинит</div><div class="t-redactor__text"> Resolved → исправлено, отдано на проверку</div><div class="t-redactor__text"> Closed → проверил, всё ок</div><div class="t-redactor__text"> Reopened → не исправлено, вернул обратно</div><h2  class="t-redactor__h2">Пример готового баг-репорта</h2><div class="t-redactor__text">ID: BUG-245</div><div class="t-redactor__text">Заголовок: Корзина: кнопка "Оформить" не работает при 10+ товарах</div><div class="t-redactor__text">Severity: Major</div><div class="t-redactor__text">Priority: High</div><div class="t-redactor__text">Status: New</div><div class="t-redactor__text">Окружение: Windows 10, Chrome 118, 1920x1080</div><div class="t-redactor__text">Шаги:</div><div class="t-redactor__text">1. Открыть https://example.com</div><div class="t-redactor__text">2. Добавить 10 товаров в корзину</div><div class="t-redactor__text">3. Перейти в корзину</div><div class="t-redactor__text">4. Нажать "Оформить заказ"</div><div class="t-redactor__text">Ожидал:</div><div class="t-redactor__text">Открылась страница оформления</div><div class="t-redactor__text">Получил:</div><div class="t-redactor__text">Кнопка серая, не кликается.</div><div class="t-redactor__text">Повторяется 10 из 10 раз.</div><div class="t-redactor__text">Вложения:</div><div class="t-redactor__text">- screenshot.png</div><div class="t-redactor__text">- video.mp4</div><div class="t-redactor__text">- console.log</div><h2  class="t-redactor__h2">Что такое тест-кейс</h2><div class="t-redactor__text">Тест-кейс — инструкция для проверки функции. В отличие от баг-репорта (описывает ошибку), тест-кейс описывает как проверять.</div><div class="t-redactor__text">Когда нужен:</div><div class="t-redactor__text"> ✅ Регрессия — проверяешь каждый раз одинаково</div><div class="t-redactor__text"> ✅ Передача знаний — новичок может взять и выполнить</div><div class="t-redactor__text"> ✅ Автоматизация — тест-кейсы переводят в автотесты</div><div class="t-redactor__text">Когда не нужен:</div><div class="t-redactor__text"> ❌ Исследовательское тестирование</div><div class="t-redactor__text"> ❌ Разовые проверки</div><h2  class="t-redactor__h2">Из чего состоит тест-кейс</h2><div class="t-redactor__text">1. ID — номер (TC-001, TC-002)</div><div class="t-redactor__text"> 2. Название — что проверяем</div><div class="t-redactor__text"> 3. Предусловия — что сделать до теста</div><div class="t-redactor__text"> 4. Шаги — пошаговая инструкция</div><div class="t-redactor__text"> 5. Входные данные — какие данные вводить</div><div class="t-redactor__text"> 6. Ожидаемый результат — что должно случиться</div><div class="t-redactor__text"> 7. Фактический результат — заполнишь после проверки</div><div class="t-redactor__text"> 8. Статус — Passed/Failed</div><h2  class="t-redactor__h2">Чек-лист vs тест-кейс</h2><img src="https://static.tildacdn.com/tild6265-3739-4639-b933-653638313233/__2025-10-28__135735.png"><div class="t-redactor__text">Правило: чек-лист — для скорости, тест-кейс — для точности.</div><h2  class="t-redactor__h2">Виды тест-кейсов</h2><div class="t-redactor__text">Позитивные — проверяют правильную работу:</div><div class="t-redactor__text"> ✅ Ввёл корректный email → зарегался</div><div class="t-redactor__text">Негативные — проверяют обработку ошибок:</div><div class="t-redactor__text"> ✅ Ввёл пустой email → показало ошибку</div><h2  class="t-redactor__h2">Примеры готовых тест-кейсов</h2><h3  class="t-redactor__h3">Пример 1: Авторизация</h3><div class="t-redactor__text">ID: TC-001</div><div class="t-redactor__text">Название: Проверка входа с правильными данными</div><div class="t-redactor__text">Приоритет: High</div><div class="t-redactor__text">Предусловия: Пользователь зарегистрирован</div><div class="t-redactor__text">Шаги:</div><div class="t-redactor__text">1. Открыть https://example.com/login</div><div class="t-redactor__text">2. Ввести email: test@mail.ru</div><div class="t-redactor__text">3. Ввести пароль: Qwerty123</div><div class="t-redactor__text">4. Нажать "Войти"</div><div class="t-redactor__text">Ожидаю:</div><div class="t-redactor__text">- Перешёл на /dashboard</div><div class="t-redactor__text">- Вижу "Добро пожаловать, Test User!"</div><div class="t-redactor__text">- Аватар в правом верхнем углу</div><div class="t-redactor__text">Результат: [заполню после проверки]</div><div class="t-redactor__text">Статус: [Passed/Failed]</div><h3  class="t-redactor__h3">Пример 2: Корзина</h3><div class="t-redactor__text">ID: TC-015</div><div class="t-redactor__text">Название: Добавление товара в корзину</div><div class="t-redactor__text">Приоритет: High</div><div class="t-redactor__text">Шаги:</div><div class="t-redactor__text">1. Открыть главную</div><div class="t-redactor__text">2. Найти "Смартфон XYZ"</div><div class="t-redactor__text">3. Нажать "В корзину"</div><div class="t-redactor__text">4. Нажать иконку корзины</div><div class="t-redactor__text">Ожидаю:</div><div class="t-redactor__text">- "Смартфон XYZ" в корзине</div><div class="t-redactor__text">- Количество: 1</div><div class="t-redactor__text">- Цена совпадает с карточкой</div><h2  class="t-redactor__h2">Ошибки в баг-репортах</h2><div class="t-redactor__text">1. Непонятные шаги</div><div class="t-redactor__text"> ❌ "Нажал кнопку, не работает"</div><div class="t-redactor__text"> ✅ "Нажал 'Добавить' → ошибка 500"</div><div class="t-redactor__text">2. Нет скриншотов</div><div class="t-redactor__text"> Всегда прикладывай картинку.</div><div class="t-redactor__text">3. Эмоции</div><div class="t-redactor__text"> ❌ "Ужасная кнопка!"</div><div class="t-redactor__text"> ✅ "Кнопка не работает при заполненной форме"</div><div class="t-redactor__text">4. Размытый заголовок</div><div class="t-redactor__text"> ❌ "Проблема с формой"</div><div class="t-redactor__text"> ✅ "Форма регистрации: не проверяет телефон"</div><div class="t-redactor__text">5. Забыли окружение</div><div class="t-redactor__text"> Разработчик не поймёт где искать баг.</div><h3  class="t-redactor__h3">Инструменты</h3><div class="t-redactor__text">Для работы:</div><div class="t-redactor__text"><ul><li data-list="bullet">Jira — самый популярный</li><li data-list="bullet">TestRail — для тестов</li><li data-list="bullet">Qase — удобный</li><li data-list="bullet">TestIT — российский</li></ul></div><div class="t-redactor__text">Для портфолио:</div><div class="t-redactor__text"> Хватит Excel или Google Sheets. На работе освоишь Jira.</div><h2  class="t-redactor__h2">Как оформить портфолио</h2><div class="t-redactor__text">Нужно 5-10 примеров:</div><div class="t-redactor__text">Баг-репорты (3-5 штук):</div><div class="t-redactor__text"><ul><li data-list="bullet">Разной серьёзности: Blocker, Major, Minor</li><li data-list="bullet">С разных проверок: UI, API</li><li data-list="bullet">Со скриншотами</li></ul></div><div class="t-redactor__text">Тест-кейсы (5-10 штук):</div><div class="t-redactor__text"><ul><li data-list="bullet">Позитивные и негативные</li><li data-list="bullet">На разные функции: логин, корзина, поиск</li><li data-list="bullet">В едином стиле</li></ul></div><div class="t-redactor__text">Где взять проекты:</div><div class="t-redactor__text"> ✅ Тестируй сайты (магазины, банки)</div><div class="t-redactor__text"> ✅ Краудтестинг (Testbirds, uTest)</div><div class="t-redactor__text"> ✅ Учебные проекты</div><h2  class="t-redactor__h2">Вопросы</h2><div class="t-redactor__text"><strong><em>Сколько нужно тест-кейсов?</em></strong></div><div class="t-redactor__text"> 5-10 хороших. Лучше меньше, но качественных.</div><div class="t-redactor__text"><strong><em>В какой программе делать?</em></strong></div><div class="t-redactor__text"> Google Sheets хватит. Потом изучишь Jira.</div><div class="t-redactor__text"><strong><em>Можно тестировать чужие сайты?</em></strong></div><div class="t-redactor__text"> Да. Только не публикуй баги открыто, только в портфолио.</div><div class="t-redactor__text"><strong><em>Как описать баг без причины?</em></strong></div><div class="t-redactor__text"> Опиши симптомы: что делал, что случилось. Причину найдёт разработчик.</div><div class="t-redactor__text"><strong><em>Severity vs Priority?</em></strong></div><div class="t-redactor__text"> Severity — насколько серьёзно. Priority — насколько срочно.</div><div class="t-redactor__text"><strong><em>Нужны ли тест-кейсы для всего?</em></strong></div><div class="t-redactor__text"> Нет. Для разовых проверок хватит чек-листа.</div><h2  class="t-redactor__h2">Что делать дальше</h2><div class="t-redactor__text">Теперь знаешь как писать баг-репорты и тест-кейсы. Это база профессии.</div><div class="t-redactor__text">План действий:</div><div class="t-redactor__text"><ol><li data-list="ordered">Подготовь шаблоны</li><li data-list="ordered">Протестируй 3-5 сайтов</li><li data-list="ordered">Оформи найденные баги</li><li data-list="ordered">Составь 10 тест-кейсов</li><li data-list="ordered">Собери в Google Drive</li></ol></div><div class="t-redactor__text">Хочешь учиться на реальных проектах?</div><div class="t-redactor__text">На моём<a href="https://www.perplexity.ai/manual"> курсе</a> ты:</div><div class="t-redactor__text"> ✓ Напишешь 50+ тест-кейсов с ментором</div><div class="t-redactor__text"> ✓ Оформишь 20+ баг-репортов</div><div class="t-redactor__text"> ✓ Получишь портфолио для резюме</div><div class="t-redactor__text"> ✓ Подготовишься к собесам</div><div class="t-redactor__text">Еще больше полезных материалов в моем телеграм-канале <a href="https://t.me/yanaoqa" target="_blank" rel="noreferrer noopener">https://t.me/yanaoqa</a></div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Виды тестирования: полный список с примерами</title>
      <link>https://yakorqa.ru/tpost/vidy-testirovaniya-polnyy-spisok</link>
      <amplink>https://yakorqa.ru/tpost/vidy-testirovaniya-polnyy-spisok?amp=true</amplink>
      <pubDate>Sat, 08 Nov 2025 15:38:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild3839-6239-4264-b430-343737626363/5262598418650496194.jpg" type="image/jpeg"/>
      <description>Разбираем все виды тестирования: функциональное и нефункциональное, ручное и автоматизированное. Примеры и когда применять каждый тип.</description>
      <turbo:content><![CDATA[<header><h1>Виды тестирования: полный список с примерами</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild3839-6239-4264-b430-343737626363/5262598418650496194.jpg"/></figure><h2  class="t-redactor__h2">Виды тестирования: полный список с примерами</h2><div class="t-redactor__text">Начал учить тестирование? Запутался в терминах: smoke, sanity, regression, функциональное, нефункциональное?</div><div class="t-redactor__text">Я дам полный список видов тестирования. С примерами. Просто. Без заумностей.</div><div class="t-redactor__text">После статьи поймёшь какой вид когда применять. И не спутаешь на собесе.</div><h3  class="t-redactor__h3">Краткий ответ: основные виды тестирования</h3><div class="t-redactor__text">Вот 5 главных, которые нужно знать:</div><div class="t-redactor__text"><ol><li data-list="ordered">Функциональное — проверяет функции приложения</li><li data-list="ordered">Нефункциональное — производительность, безопасность, юзабилити</li><li data-list="ordered">Модульное — тестирует отдельные компоненты кода</li><li data-list="ordered">Интеграционное — проверяет взаимодействие модулей</li><li data-list="ordered">Системное — тестирует всю систему целиком</li></ol></div><div class="t-redactor__text">А теперь подробно про каждый.</div><h3  class="t-redactor__h3">По каким критериям делят виды</h3><div class="t-redactor__text">Тестирование классифицируют по разным параметрам:</div><div class="t-redactor__text"><strong>По целям:</strong> что проверяем (функции или качества)</div><div class="t-redactor__text"><strong>По уровню:</strong> на каком этапе разработки</div><div class="t-redactor__text"><strong>По доступу к коду:</strong> видим код или нет</div><div class="t-redactor__text"><strong>По времени:</strong> когда проводим</div><div class="t-redactor__text"><strong>По сценарию: </strong>позитивный или негативный</div><div class="t-redactor__text"><strong>По автоматизации: </strong>руками или скриптами</div><div class="t-redactor__text">Дальше разберём каждый.</div><h2  class="t-redactor__h2">Функциональное и нефункциональное</h2><h3  class="t-redactor__h3">Функциональное тестирование</h3><div class="t-redactor__text">Что проверяет: работают ли функции приложения.</div><div class="t-redactor__text">Примеры:</div><div class="t-redactor__text">✅ Кнопка "Войти" открывает личный кабинет?</div><div class="t-redactor__text">✅ Добавление товара в корзину работает?</div><div class="t-redactor__text">✅ Поиск находит нужные товары?</div><div class="t-redactor__text">Проверяешь ЧТО делает система.</div><h3  class="t-redactor__h3">Нефункциональное тестирование</h3><div class="t-redactor__text">Что проверяет: качества системы — скорость, безопасность, удобство.</div><div class="t-redactor__text"><strong>Виды нефункционального:</strong></div><div class="t-redactor__text"><strong>Performance (производительность):</strong></div><div class="t-redactor__text">Сайт открывается за 3 секунды или зависает?</div><div class="t-redactor__text"><strong>Security (безопасность):</strong></div><div class="t-redactor__text">Можно ли взломать или утечь данные?</div><div class="t-redactor__text"><strong>Usability (юзабилити):</strong></div><div class="t-redactor__text">Удобно ли пользоваться? Понятен ли интерфейс?</div><div class="t-redactor__text"><strong>Compatibility (совместимость):</strong></div><div class="t-redactor__text">Работает в Chrome? А в Safari?</div><div class="t-redactor__text">Проверяешь КАК работает система.</div><h3  class="t-redactor__h3">По уровню детализации</h3><h4  class="t-redactor__h4">Модульное (Unit Testing)</h4><div class="t-redactor__text"><strong>Что</strong>: проверка отдельных функций кода.</div><div class="t-redactor__text">Кто делает: разработчики.</div><div class="t-redactor__text"><strong>Пример</strong>:</div><div class="t-redactor__text">Функция calculatePrice(item, discount) считает цену правильно?</div><h4  class="t-redactor__h4">Интеграционное (Integration Testing)</h4><div class="t-redactor__text"><strong>Что</strong>: проверка как модули работают вместе.</div><div class="t-redactor__text"><strong>Пример</strong>:</div><div class="t-redactor__text">Корзина правильно передаёт данные на страницу оплаты?</div><h4  class="t-redactor__h4">Системное (System Testing)</h4><div class="t-redactor__text"><strong>Что</strong>: проверка всей системы целиком.</div><div class="t-redactor__text"><strong>Пример:</strong></div><div class="t-redactor__text">Весь процесс покупки: от выбора товара до оплаты и подтверждения.</div><h4  class="t-redactor__h4">Приёмочное (Acceptance Testing)</h4><div class="t-redactor__text"><strong>Что:</strong> проверка соответствия требованиям заказчика.</div><div class="t-redactor__text"><strong>Пример:</strong></div><div class="t-redactor__text">Заказчик проверяет: "Да, это то что я хотел".</div><h4  class="t-redactor__h4">По доступу к коду</h4><div class="t-redactor__text"><strong>Чёрный ящик (Black Box):</strong></div><div class="t-redactor__text">Не видишь код. Проверяешь как пользователь.</div><div class="t-redactor__text">Пример: тестирую сайт, не зная как он устроен изнутри.</div><div class="t-redactor__text"><strong>Белый ящик (White Box):</strong></div><div class="t-redactor__text">Видишь код. Проверяешь логику.</div><div class="t-redactor__text">Пример: разработчик смотрит покрытие кода тестами.</div><div class="t-redactor__text"><strong>Серый ящик (Grey Box):</strong></div><div class="t-redactor__text">Частичный доступ к коду.</div><div class="t-redactor__text">Пример: знаешь структуру базы данных, проверяешь запросы.</div><h3  class="t-redactor__h3">По времени проведения</h3><h4  class="t-redactor__h4">Smoke Testing (дымовое)</h4><div class="t-redactor__text"><strong>Что: </strong>проверка базовых функций после сборки.</div><div class="t-redactor__text"><strong>Когда:</strong> получил новую версию — проверь что не сломалось критичное.</div><div class="t-redactor__text"><strong>Пример:</strong></div><div class="t-redactor__text">Приложение запускается? Логин работает? Основные кнопки кликаются?</div><div class="t-redactor__text">Если smoke не прошёл — не тестируй дальше. Верни разработчикам.</div><h4  class="t-redactor__h4">Sanity Testing (проверка здравомыслия)</h4><div class="t-redactor__text"><strong>Что:</strong> быстрая проверка конкретного исправления.</div><div class="t-redactor__text"><strong>Когда: </strong>разработчик исправил баг — проверь что починил.</div><div class="t-redactor__text"><strong>Пример:</strong></div><div class="t-redactor__text">Баг: кнопка "Купить" не работала.</div><div class="t-redactor__text">Sanity: проверяешь только эту кнопку.</div><h4  class="t-redactor__h4">Regression Testing (регрессионное)</h4><div class="t-redactor__text"><strong>Что:</strong> проверка что новые изменения не сломали старое.</div><div class="t-redactor__text"><strong>Когда:</strong> перед релизом, после больших изменений.</div><div class="t-redactor__text"><strong>Пример:</strong></div><div class="t-redactor__text">Добавили новую функцию оплаты. Проверяешь что старая оплата картой всё ещё работает.</div><h4  class="t-redactor__h4">Позитивное и негативное</h4><div class="t-redactor__text"><strong>Позитивное</strong>:</div><div class="t-redactor__text">Проверяешь правильные сценарии.</div><div class="t-redactor__text"><strong>Пример</strong>: ввёл корректный email → зарегистрировался.</div><div class="t-redactor__text"><strong>Негативное</strong>:</div><div class="t-redactor__text">Проверяешь неправильные сценарии.</div><div class="t-redactor__text"><strong>Примеры</strong>:</div><div class="t-redactor__text">❌ Пустой email → показало ошибку?</div><div class="t-redactor__text">❌ Неверный пароль → не пустило?</div><div class="t-redactor__text">❌ SQL-инъекция → защита сработала?</div><div class="t-redactor__text">Новички часто забывают про негативное. А это важно.</div><h4  class="t-redactor__h4">Ручное и автоматизированное</h4><div class="t-redactor__text"><strong>Ручное</strong>:</div><div class="t-redactor__text">Проверяешь руками. Кликаешь, вводишь, смотришь.</div><div class="t-redactor__text"><strong>Плюсы</strong>: гибкость, находишь неочевидные баги.</div><div class="t-redactor__text"><strong>Минусы</strong>: долго, скучно повторять.</div><div class="t-redactor__text"><strong>Автоматизированное</strong>:</div><div class="t-redactor__text">Пишешь скрипт — он проверяет за тебя.</div><div class="t-redactor__text"><strong>Плюсы</strong>: быстро, можно повторять.</div><div class="t-redactor__text"><strong>Минусы</strong>: дорого в разработке, не найдёт неочевидное.</div><div class="t-redactor__text"><strong>Правило</strong>: регресс автоматизируй, исследовательское — руками.</div><div class="t-redactor__text">Подробнее про переход в автоматизацию<a href="https://yakorqa.ru/#studying"> "Программа обучения по автоматизации"</a>.</div><h4  class="t-redactor__h4">По этапу разработки</h4><div class="t-redactor__text"><strong>Альфа-тестирование:</strong></div><div class="t-redactor__text">Проверка внутри команды разработки. Ранние версии.</div><div class="t-redactor__text"><strong>Бета-тестирование:</strong></div><div class="t-redactor__text">Даём продукт реальным пользователям. Собираем фидбек.</div><div class="t-redactor__text"><strong>Pre-production:</strong></div><div class="t-redactor__text">Финальная проверка перед выкаткой на боевой сервер.</div><h3  class="t-redactor__h3">Специализированные виды</h3><div class="t-redactor__text"><strong>Security Testing (безопасность):</strong></div><div class="t-redactor__text">Проверка уязвимостей, SQL-инъекций, XSS-атак.</div><div class="t-redactor__text">Инструмент: OWASP ZAP.</div><div class="t-redactor__text"><strong>Performance Testing (производительность):</strong></div><div class="t-redactor__text">Нагрузочное, стресс-тестирование.</div><div class="t-redactor__text">Инструмент: JMeter, Gatling.</div><div class="t-redactor__text"><strong>Usability Testing (юзабилити):</strong></div><div class="t-redactor__text">Удобство интерфейса. Понятность для пользователя.</div><div class="t-redactor__text"><strong>Compatibility Testing (совместимость):</strong></div><div class="t-redactor__text">Работа на разных браузерах, ОС, устройствах.</div><div class="t-redactor__text"><strong>Localization Testing (локализация):</strong></div><div class="t-redactor__text">Проверка переводов, форматов дат, валют.</div><div class="t-redactor__text"><strong>API Testing:</strong></div><div class="t-redactor__text">Проверка взаимодействия между сервисами.</div><div class="t-redactor__text">Инструмент: Postman, REST Assured.</div><h3  class="t-redactor__h3">Таблица: когда применять</h3><img src="https://static.tildacdn.com/tild3366-6465-4163-b162-383935373631/__2025-11-08__154946.png"><h3  class="t-redactor__h3">Инструменты для разных видов</h3><div class="t-redactor__text"><strong>Ручное тестирование:</strong></div><div class="t-redactor__text">Jira, TestRail, Qase — управление тестами и багами.</div><div class="t-redactor__text"><strong>Автоматизация UI:</strong></div><div class="t-redactor__text">Selenium, Playwright, Cypress — для веб.</div><div class="t-redactor__text">Appium — для мобильных.</div><div class="t-redactor__text"><strong>API тестирование:</strong></div><div class="t-redactor__text">Postman, REST Assured, SoapUI.</div><div class="t-redactor__text"><strong>Performance</strong>:</div><div class="t-redactor__text">JMeter, Gatling, Locust — нагрузка.</div><div class="t-redactor__text"><strong>Security</strong>:</div><div class="t-redactor__text">OWASP ZAP, Burp Suite — поиск уязвимостей.</div><div class="t-redactor__text"><strong>Мобильное</strong>:</div><div class="t-redactor__text">BrowserStack, Sauce Labs — кросс-браузерное и мобильное.</div><div class="t-redactor__text">Хочешь научиться работать с этими инструментами? В статье про<a href="https://yakorqa.ru/tpost/bug-report-i-test-case"> баг-репорты и тест-кейсы</a> я показываю как документировать результаты проверок.</div><h3  class="t-redactor__h3">Ошибки начинающих</h3><div class="t-redactor__text">1. Путают smoke и sanity</div><div class="t-redactor__text">Smoke — всё базовое. Sanity — конкретное исправление.</div><div class="t-redactor__text">2. Забывают про негативное тестирование</div><div class="t-redactor__text">Проверяют только правильные сценарии. А багов больше в неправильных.</div><div class="t-redactor__text">3. Не делают regression</div><div class="t-redactor__text">"Исправили одно — сломали другое". Регресс обязателен перед релизом.</div><div class="t-redactor__text">4. Пытаются автоматизировать всё</div><div class="t-redactor__text">Не всё нужно. Исследовательское — только руками.</div><div class="t-redactor__text">5. Не понимают зачем разные уровни</div><div class="t-redactor__text">Модульное → интеграционное → системное. Последовательность важна.</div><h3  class="t-redactor__h3">Чек-лист: с чего начинать новичку</h3><div class="t-redactor__text">Если ты Junior QA, начни с этих видов:</div><div class="t-redactor__text">☐ Smoke — научись быстро проверять базовые функции</div><div class="t-redactor__text">☐ Функциональное — основа работы тестировщика</div><div class="t-redactor__text">☐ Позитивное и негативное — научись думать об ошибках</div><div class="t-redactor__text">☐ Regression — как проверять что ничего не сломалось</div><div class="t-redactor__text">☐ API тестирование (Postman) — базовый навык для Junior</div><div class="t-redactor__text">☐ Кросс-браузерное — проверка в Chrome, Firefox, Safari</div><div class="t-redactor__text">Освоил эти — переходи к автоматизации.</div><blockquote class="t-redactor__quote">💡 Лайфхак: Заведи таблицу в Excel. По каждому виду запиши 2-3 примера проверок. Это будет твоя шпаргалка к собесу.</blockquote><h3  class="t-redactor__h3">Как выбрать вид для задачи</h3><div class="t-redactor__text">Шаг 1: Что нужно проверить?</div><div class="t-redactor__text"><ul><li data-list="bullet">Функцию → функциональное</li><li data-list="bullet">Скорость → performance</li><li data-list="bullet">Безопасность → security</li></ul></div><div class="t-redactor__text">Шаг 2: На каком этапе?</div><div class="t-redactor__text"><ul><li data-list="bullet">Новая фича → smoke → функциональное</li><li data-list="bullet">Исправление → sanity</li><li data-list="bullet">Перед релизом → regression</li></ul></div><div class="t-redactor__text">Шаг 3: Есть доступ к коду?</div><div class="t-redactor__text"><ul><li data-list="bullet">Да → белый ящик</li><li data-list="bullet">Нет → чёрный ящик</li></ul></div><div class="t-redactor__text">Шаг 4: Повторяющаяся проверка?</div><div class="t-redactor__text"><ul><li data-list="bullet">Да → автоматизируй</li><li data-list="bullet">Нет → руками</li></ul></div><h3  class="t-redactor__h3">Вопросы и ответы</h3><div class="t-redactor__text"><strong><em>В чём разница smoke и sanity?</em></strong></div><div class="t-redactor__text">Smoke — базовые функции всего приложения. Sanity — конкретное исправление.</div><div class="t-redactor__text"><strong><em>Когда делать regression?</em></strong></div><div class="t-redactor__text">Перед каждым релизом. После больших изменений. Когда есть риск что-то сломать.</div><div class="t-redactor__text"><strong><em>Что важнее: функциональное или нефункциональное?</em></strong></div><div class="t-redactor__text">Оба важны. Сначала функциональное (работает ли). Потом нефункциональное (хорошо ли работает).</div><div class="t-redactor__text"><strong><em>Нужно ли знать все виды тестирования Junior QA?</em></strong></div><div class="t-redactor__text">Не обязательно. Знай основы: функциональное, smoke, regression, API. Остальное освоишь на работе.</div><div class="t-redactor__text"><strong><em>Можно ли автоматизировать все виды?</em></strong></div><div class="t-redactor__text">Нет. Исследовательское, юзабилити, некоторые security-проверки — только руками.</div><div class="t-redactor__text"><strong><em>Что спрашивают на собесе про виды тестирования?</em></strong></div><div class="t-redactor__text">"В чём разница smoke и regression?", "Что такое белый/чёрный ящик?", "Приведи пример функционального тестирования".</div><div class="t-redactor__text">Подробнее про подготовку к собеседованиям есть в моем <a href="https://boosty.to/yakorqa">Boosty</a></div><h3  class="t-redactor__h3">Что дальше</h3><div class="t-redactor__text">Теперь знаешь основные виды тестирования. Не путаешь термины.</div><div class="t-redactor__text">План действий:</div><div class="t-redactor__text"><ol><li data-list="ordered">Сохрани таблицу — используй как шпаргалку</li><li data-list="ordered">Попрактикуйся на реальных проектах</li><li data-list="ordered">Выучи различия между smoke, sanity, regression</li><li data-list="ordered">Подготовься к вопросам на собесе</li></ol></div><h3  class="t-redactor__h3">Как я могу помочь</h3><h4  class="t-redactor__h4">Обучение и поддержка в Boosty</h4><div class="t-redactor__text">У меня есть 3 уровня подписок для разных задач:</div><div class="t-redactor__text">🔹 <strong>Уровень 1. Базовый минимум.</strong></div><div class="t-redactor__text">Пошаговый план обучения, общение и поддержка<br /><br />• Повышение хардов (hard skills)<br /><br />• Видео с разбором тем по тестированию<br /><br />• Задачи (дз) для закрепления умений и навыков<br /><br />• Ответы на вопросы по темам обучения<br /><br />• Созвоны 1-2 раза в месяц на которых решаем вместе рабочие задачи<br /><br />• Ранний доступ к обучающим постам на бусти</div><div class="t-redactor__text">🔹 <strong>Уровень 2. Роскошный максимум.</strong></div><div class="t-redactor__text">Все то, что есть в "Базовом минимуме" + <br /><br />• Общий чат по поиску работы и карьере<br /><br />• Роадмап по трудоустройству: Гайды по резюме, самопрезентации, общению с hr, на hard и soft собеседовании.<br /><br />• Роадмап по повышению ЗП<br /><br />• Разбор твоего резюме<br /><br />• Помощь в поисках работы <br /><br />• Рефералки в IT компании<br /><br />• Обновляемая база вопросов собеседований от топовых компаний</div><div class="t-redactor__text">🔹 <strong>Уровень 3. Далеко пойдешь</strong></div><div class="t-redactor__text">Всё то, что есть в подписках выше +<br /><br />2 часа на разбор твоих вопросов и проработку твоего кейса<br /><br />Доступ к консультации в личном чате, 1to1<br /><br />Если хочешь реально поблагодарить меня за то что я делаю</div><div class="t-redactor__text"><a href="https://boosty.to/yakorqa">[Посмотреть условия подписок на Boosty →]</a></div><h3  class="t-redactor__h3">Полный курс ручного тестирования</h3><div class="t-redactor__text">Хочешь попрактиковаться в разных видах тестирования?</div><div class="t-redactor__text">На<a href="https://yakorqa.ru/#program"> курсе ручного тестирования</a>:</div><div class="t-redactor__text">✓ Научишься применять smoke, sanity, regression на практике</div><div class="t-redactor__text">✓ Попрактикуешься в функциональном и нефункциональном</div><div class="t-redactor__text">✓ Освоишь API тестирование в Postman</div><div class="t-redactor__text">✓ Поймёш когда какой вид применять</div><div class="t-redactor__text">✓ Подготовишься к вопросам на собесе</div><div class="t-redactor__text">Формат: индивидуальное обучение 1:1</div><div class="t-redactor__text">Срок: 2 месяца до оффера</div><div class="t-redactor__text">Оплата: постоплата после трудоустройства</div><div class="t-redactor__text"><a href="https://yakorqa.ru/#program">[Узнать о программе курса →]</a></div><h3  class="t-redactor__h3">Консультации и подготовка к собесам</h3><div class="t-redactor__text">Нужна разовая помощь?</div><div class="t-redactor__text">Мок-собеседование (14К ₽):</div><div class="t-redactor__text"><ul><li data-list="bullet">1.5 часа реального интервью</li><li data-list="bullet">Вопросы про виды тестирования</li><li data-list="bullet">Разбор ошибок</li><li data-list="bullet">Скрипты правильных ответов</li></ul></div><div class="t-redactor__text">Разбор резюме (16К ₽):</div><div class="t-redactor__text"><ul><li data-list="bullet">2 часа консультации</li><li data-list="bullet">Исправим резюме</li><li data-list="bullet">Подготовим самопрезентацию</li><li data-list="bullet">План подготовки к собесам</li></ul></div><div class="t-redactor__text">Бесплатная консультация (30 минут):</div><div class="t-redactor__text"><ul><li data-list="bullet">Оценим твой уровень</li><li data-list="bullet">Составим план обучения</li><li data-list="bullet">Ответим на вопросы</li></ul></div><div class="t-redactor__text"><a href="https://t.me/yakorqa">[Записаться на консультацию →]</a></div><div class="t-redactor__text">Читай также:</div><div class="t-redactor__text"><ul><li data-list="bullet"><a href="https://yakorqa.ru/tpost/kto-takoy-qa-inzhener">Кто такой QA инженер и чем занимается</a> — если ты новичок</li><li data-list="bullet"><a href="https://yakorqa.ru/tpost/bug-report-i-test-case">Баг-репорты и тест-кейсы: примеры и шаблоны</a> — как документировать результаты проверок</li></ul></div><div class="t-redactor__text">Обновлено: 8 ноября 2025</div><div class="t-redactor__text">Еще больше полезных материалов в моем телеграм-канале <a href="https://t.me/yanaoqa" target="_blank" rel="noreferrer noopener">https://t.me/yanaoqa</a></div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Как стать тестировщиком с нуля</title>
      <link>https://yakorqa.ru/tpost/kak-stat-testirovschikom-s-nulya</link>
      <amplink>https://yakorqa.ru/tpost/kak-stat-testirovschikom-s-nulya?amp=true</amplink>
      <pubDate>Wed, 19 Nov 2025 22:26:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild6166-3232-4065-a162-336264386162/6jQMqTMRI2Z5a1x9pAHW.jpg" type="image/jpeg"/>
      <description>Реальный план как стать тестировщиком за 2-3 месяца. Что учить, какие инструменты, сколько стоит, как найти первую работу. Без воды.</description>
      <turbo:content><![CDATA[<header><h1>Как стать тестировщиком с нуля</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6166-3232-4065-a162-336264386162/6jQMqTMRI2Z5a1x9pAHW.jpg"/></figure><h2  class="t-redactor__h2">Как стать тестировщиком с нуля за 2-3 месяца: план 2025</h2><div class="t-redactor__text">Хочешь в IT? Думаешь про тестирование? Не знаешь с чего начать?</div><div class="t-redactor__text">Я дам честный план. Без обмана про "легко" и "быстро". Расскажу сколько времени, денег и сил нужно. Покажу что работает, а что нет.</div><div class="t-redactor__text">За 1.5 года я помогла 20+ людям стать тестировщиками. Средняя зарплата после обучения — 120-150К. Срок от нуля до оффера — 2-3 месяца.</div><h2  class="t-redactor__h2">Краткий ответ</h2><div class="t-redactor__text">Да, реально стать тестировщиком с нуля за 2-3 месяца:</div><div class="t-redactor__text"><strong>Неделя 1-2:</strong> изучи теорию (виды тестирования, баг-репорты, тест-кейсы)</div><div class="t-redactor__text"><strong>Неделя 3-4:</strong> освой инструменты (Postman, SQL, DevTools)</div><div class="t-redactor__text"><strong>Неделя 5-6:</strong> собери портфолио (20+ баг-репортов, 10 тест-кейсов)</div><div class="t-redactor__text"><strong>Неделя 7-8:</strong> подготовь резюме, готовься к собесам</div><div class="t-redactor__text"><strong>Неделя 9-50:</strong> ищи работу (20-30 откликов/день)</div><div class="t-redactor__text"><strong>Стоимость:</strong> от 0₽ (сам) до 150К₽ (курсы)</div><div class="t-redactor__text"><strong>Нагрузка:</strong> 2-3 часа/день</div><div class="t-redactor__text"><strong>Результат:</strong> Junior QA, 80-150К₽</div><h2  class="t-redactor__h2">Реально ли стать тестировщиком с нуля</h2><div class="t-redactor__text">Да. Но не для всех.</div><div class="t-redactor__text"><strong>Подойдёт если:</strong></div><div class="t-redactor__text">✅ Готов учиться 2-3 часа каждый день</div><div class="t-redactor__text">✅ Внимателен к деталям</div><div class="t-redactor__text">✅ Не боишься критиковать чужую работу</div><div class="t-redactor__text">✅ Готов к монотонной работе</div><div class="t-redactor__text">✅ Нужна удалёнка и стабильность</div><div class="t-redactor__text"><strong>НЕ подойдёт если:</strong></div><div class="t-redactor__text">❌ Хочешь "быстро и легко"</div><div class="t-redactor__text">❌ Терпеть не можешь рутину</div><div class="t-redactor__text">❌ Нет 2-3 часов в день</div><div class="t-redactor__text">❌ Ждёшь чуда за неделю</div><div class="t-redactor__text">Тестирование — самый доступный вход в IT. Не нужно писать сложный код. Не нужно высшее образование. Но нужна дисциплина.</div><h2  class="t-redactor__h2">Сколько времени нужно</h2><div class="t-redactor__text"><strong>Интенсив (2-3 месяца):</strong></div><div class="t-redactor__text">3-4 часа в день. 7 дней в неделю. Полная концентрация.</div><div class="t-redactor__text">Результат: оффер через 8-12 недель.</div><div class="t-redactor__text"><strong>Комфортный (4-6 месяцев):</strong></div><div class="t-redactor__text">1.5-2 часа в день. 5 дней в неделю. Параллельно с работой.</div><div class="t-redactor__text">Результат: оффер через 16-24 недели.</div><div class="t-redactor__text"><strong>Медленный (6-12 месяцев):</strong></div><div class="t-redactor__text">1 час в день. Когда получается. Без давления.</div><div class="t-redactor__text">Результат: оффер когда-нибудь (или никогда).</div><div class="t-redactor__text">Я рекомендую интенсив. Чем быстрее — тем меньше шанс бросить.</div><h2  class="t-redactor__h2">Сколько стоит обучение</h2><div class="t-table__viewport"><div class="t-table__wrapper"><table class="t-table__table"><tbody><tr class="t-table__row" style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);border:0px none rgb(0, 0, 0);border-color:rgb(0, 0, 0);"><td class="t-table__cell" data-row="0" data-column="0"><div class="t-table__cell-content">Вариант</div></td><td class="t-table__cell" data-row="0" data-column="1"><div class="t-table__cell-content">Стоимость</div></td><td class="t-table__cell" data-row="0" data-column="2"><div class="t-table__cell-content">Срок</div></td><td class="t-table__cell" data-row="0" data-column="3"><div class="t-table__cell-content">Плюсы</div></td><td class="t-table__cell" data-row="0" data-column="4"><div class="t-table__cell-content">Минусы</div></td></tr><tr class="t-table__row"><td class="t-table__cell" data-row="1" data-column="0"><div class="t-table__cell-content">Самообучение</div></td><td class="t-table__cell" data-row="1" data-column="1"><div class="t-table__cell-content">0 - 5к руб</div></td><td class="t-table__cell" data-row="1" data-column="2"><div class="t-table__cell-content">6 - 12 мес</div></td><td class="t-table__cell" data-row="1" data-column="3"><div class="t-table__cell-content">Дешево</div></td><td class="t-table__cell" data-row="1" data-column="4"><div class="t-table__cell-content">Долго, непонятно, что учить, долгое трудоустройство</div></td></tr><tr class="t-table__row"><td class="t-table__cell" data-row="2" data-column="0"><div class="t-table__cell-content">Курсы</div></td><td class="t-table__cell" data-row="2" data-column="1"><div class="t-table__cell-content">40 -150к</div></td><td class="t-table__cell" data-row="2" data-column="2"><div class="t-table__cell-content">6 - 12 мес</div></td><td class="t-table__cell" data-row="2" data-column="3"><div class="t-table__cell-content">Структура, сертификат</div></td><td class="t-table__cell" data-row="2" data-column="4"><div class="t-table__cell-content">Поверхностный материал, поток от 20 человек, низкая вовлеченность преподов, разбираться все равно самому, консультаций нет</div></td></tr><tr class="t-table__row"><td class="t-table__cell" data-row="3" data-column="0"><div class="t-table__cell-content">Менторство</div></td><td class="t-table__cell" data-row="3" data-column="1"><div class="t-table__cell-content">80к-200к</div></td><td class="t-table__cell" data-row="3" data-column="2"><div class="t-table__cell-content">2 - 3 мес</div></td><td class="t-table__cell" data-row="3" data-column="3"><div class="t-table__cell-content">Индивидуально, полная поддержка, доведение до результата. Есть рассрочки </div></td><td class="t-table__cell" data-row="3" data-column="4"><div class="t-table__cell-content">Дороже курсов</div></td></tr><tr class="t-table__row"><td class="t-table__cell" data-row="4" data-column="0"><div class="t-table__cell-content">Менторство с пост-оплатой</div></td><td class="t-table__cell" data-row="4" data-column="1"><div class="t-table__cell-content">Небольшая предоплата, рассрочки</div></td><td class="t-table__cell" data-row="4" data-column="2"><div class="t-table__cell-content">2 - 3 мес</div></td><td class="t-table__cell" data-row="4" data-column="3"><div class="t-table__cell-content">Индивидуально, полная поддержка, доведение до результата, оплата после трудоустройства. Есть рассрочки от банка 
</div></td><td class="t-table__cell" data-row="4" data-column="4"><div class="t-table__cell-content">Не все менторы работают по такой схеме</div></td></tr><tr class="t-table__row"><td class="t-table__cell" data-row="5" data-column="0"><div class="t-table__cell-content">Обучение по подписке</div></td><td class="t-table__cell" data-row="5" data-column="1"><div class="t-table__cell-content">1,6к - 9к </div></td><td class="t-table__cell" data-row="5" data-column="2"><div class="t-table__cell-content">3 - 4 мес</div></td><td class="t-table__cell" data-row="5" data-column="3"><div class="t-table__cell-content">Максимально удобный формат попробовать, поддержка и консультации, работа в своем темпе</div></td><td class="t-table__cell" data-row="5" data-column="4"><div class="t-table__cell-content">Меньше индивидуальной работы</div></td></tr></tbody><colgroup><col style="max-width:150px;min-width:150px;width:150px;"><col style="max-width:152px;min-width:152px;width:152px;"><col style="max-width:108px;min-width:108px;width:108px;"><col style="max-width:180px;min-width:180px;width:180px;"><col style="max-width:151px;min-width:151px;width:151px;"></colgroup></table></div></div><div class="t-redactor__text">Я предлагаю менторство с постоплатой: основная оплата — после твоего оффера. И пробный вариант с подпиской от 1400 рублей в месяц <a href="https://yakorqa.ru/#price" target="_blank" rel="noreferrer noopener nofollow">Условия →</a></div><h2  class="t-redactor__h2">Пошаговый план на 8-12 недель</h2><h3  class="t-redactor__h3">Неделя 1-2: Теория основ</h3><div class="t-redactor__text"><strong>Что изучить:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Что такое тестирование и зачем оно</li><li data-list="bullet"><a href="https://yakorqa.ru/tpost/vidy-testirovaniya-polnyy-spisok" target="_blank" rel="noreferrer noopener nofollow">Виды тестирования</a>: функциональное, регресс, smoke, sanity</li><li data-list="bullet">Что такое баг, severity, priority</li><li data-list="bullet"><a href="https://yakorqa.ru/tpost/bug-report-i-test-case" target="_blank" rel="noreferrer noopener nofollow">Как писать баг-репорты</a></li><li data-list="bullet">Что такое тест-кейс, чек-лист</li></ul></div><div class="t-redactor__text"><strong>Результат:</strong> понимаешь базу, можешь объяснить что такое баг и тест-кейс.</div><h2  class="t-redactor__h2">Неделя 3-4: Инструменты</h2><div class="t-redactor__text"><strong>Что освоить:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet"><strong>Postman</strong> — тестирование API (GET, POST запросы)</li><li data-list="bullet"><strong>SQL</strong> — базовые запросы (SELECT, WHERE, JOIN)</li><li data-list="bullet"><strong>DevTools</strong> — консоль браузера, вкладка Network</li><li data-list="bullet"><strong>Jira</strong> — создание задач и багов (попробуй бесплатную версию)</li><li data-list="bullet"><strong>Git</strong> — базовые команды (clone, commit, push)</li></ul></div><div class="t-redactor__text"><strong>Где практиковаться:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Postman: бесплатные API для тренировки (JSONPlaceholder)</li><li data-list="bullet">SQL: sqltest.net, sql-ex.ru</li><li data-list="bullet">DevTools: открой любой сайт, изучи запросы</li></ul></div><div class="t-redactor__text"><strong>Результат:</strong> умеешь работать с основными инструментами.</div><h3  class="t-redactor__h3">Неделя 5-6: Практика и портфолио</h3><div class="t-redactor__text"><strong>Что делать:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Выбери 3-5 реальных сайтов (интернет-магазины, банки)</li><li data-list="ordered">Протестируй их вручную</li><li data-list="ordered">Найди 20+ багов</li><li data-list="ordered">Оформи баг-репорты по шаблону</li><li data-list="ordered">Составь 10-15 тест-кейсов</li></ol></div><div class="t-redactor__text"><strong>Где брать сайты:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Небольшие интернет-магазины</li><li data-list="bullet">Стартапы</li><li data-list="bullet">Свои проекты друзей</li></ul></div><div class="t-redactor__text"><strong>Результат:</strong> портфолио из 20 баг-репортов и 10 тест-кейсов.</div><div class="t-redactor__text">Подробнее про портфолио: <a href="https://yakorqa.ru/tpost/bug-report-i-test-case" target="_blank" rel="noreferrer noopener nofollow">Баг-репорты и тест-кейсы</a></div><h3  class="t-redactor__h3">Неделя 7-8: Резюме и подготовка к собесам</h3><div class="t-redactor__text"><strong>Резюме:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Опиши учебные проекты как опыт</li><li data-list="bullet">Добавь ссылку на портфолио (Google Drive)</li><li data-list="bullet">Укажи инструменты: Postman, SQL, Jira, Git</li><li data-list="bullet">Напиши о себе: переходишь в IT, мотивирован</li></ul></div><div class="t-redactor__text"><strong>Подготовка к собесам:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Выучи 50 частых вопросов</li><li data-list="bullet">Примеры: "Что такое smoke?", "Приоритет vs серьезность?", "Когда regression?"</li><li data-list="bullet">Практикуй ответы вслух</li><li data-list="bullet">Подготовь примеры из портфолио</li></ul></div><div class="t-redactor__text"><strong>Результат:</strong> готовое резюме, уверенные ответы на базовые вопросы.</div><h3  class="t-redactor__h3">Неделя 9-12: Поиск работы</h3><div class="t-redactor__text"><strong>Где искать:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">hh.ru, Работа.ру</li><li data-list="bullet">Telegram-каналы: Job for QA, QA Jobs</li><li data-list="bullet">LinkedIn (не только английский)</li></ul></div><div class="t-redactor__text"><strong>Как откликаться:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">30-45 откликов каждый день</li><li data-list="bullet">Отправляй на все вакансии Junior/Intern/Trainee</li><li data-list="bullet">Пиши сопроводительное письмо</li><li data-list="bullet">Не жди ответа — продолжай искать</li></ul></div><div class="t-redactor__text"><strong>На собесе:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Честно говори что новичок</li><li data-list="bullet">Покажи портфолио</li><li data-list="bullet">Расскажи что готов учиться</li><li data-list="bullet">Торгуйся за зарплату (хотя бы на 10-20%)</li></ul></div><div class="t-redactor__text"><strong>Результат:</strong> 10-30 собесов, 1-2 оффера через 10-15 недель.</div><h2  class="t-redactor__h2">Что нужно изучить: минимальный стек</h2><div class="t-redactor__text"><strong>Для Junior QA достаточно:</strong></div><div class="t-redactor__text"><strong>Теория:</strong></div><div class="t-redactor__text">✓ Виды тестирования</div><div class="t-redactor__text">✓ Баг-репорты, тест-кейсы</div><div class="t-redactor__text">✓ Клиент-серверная архитектура (базово)</div><div class="t-redactor__text">✓ HTTP/HTTPS, REST API</div><div class="t-redactor__text"><strong>Инструменты:</strong></div><div class="t-redactor__text">✓ Postman</div><div class="t-redactor__text">✓ DevTools</div><div class="t-redactor__text">✓ SQL (SELECT, WHERE, JOIN)</div><div class="t-redactor__text">✓ Jira или аналог</div><div class="t-redactor__text">✓ Git (базово)</div><div class="t-redactor__text"><strong>НЕ нужно сразу:</strong></div><div class="t-redactor__text">❌ Автоматизация (Python, Selenium)</div><div class="t-redactor__text">❌ CI/CD (Jenkins, GitLab)</div><div class="t-redactor__text">❌ Продвинутый SQL</div><div class="t-redactor__text">❌ Программирование</div><div class="t-redactor__text">Автоматизацию освоишь потом, когда наберёшь опыт. <a href="https://yakorqa.ru/#studying" target="_blank" rel="noreferrer noopener nofollow">Подробнее про переход в автоматизацию</a></div><h2  class="t-redactor__h2">Книги и ресурсы для обучения</h2><div class="t-redactor__text"><strong>Топ-5 книг:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Святослав Куликов "Тестирование ПО. Базовый курс"</li><li data-list="ordered">Роман Савин "Тестирование Дот Ком"</li><li data-list="ordered">Гленфорд Майерс "Искусство тестирования программ"</li><li data-list="ordered">Сэм Канер "Тестирование программного обеспечения"</li><li data-list="ordered">Борис Бейзер "Тестирование черного ящика"</li></ol></div><div class="t-redactor__text"><strong>Полезные сайты:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">testit.software — блог про QA</li><li data-list="bullet">software-testing.ru — статьи и материалы</li><li data-list="bullet">qa.studio — вебинары и гайды</li></ul></div><h3  class="t-redactor__h3">Как собрать портфолио без опыта</h3><div class="t-redactor__text"><strong>Что должно быть:</strong></div><div class="t-redactor__text"><strong>Баг-репорты (20+ штук):</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Разной серьёзности: Blocker, Critical, Major, Minor</li><li data-list="bullet">С разных сайтов</li><li data-list="bullet">Со скриншотами</li><li data-list="bullet">По шаблону</li></ul></div><div class="t-redactor__text"><strong>Тест-кейсы (10-15 штук):</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Позитивные и негативные</li><li data-list="bullet">На разные функции: логин, корзина, поиск, оплата</li><li data-list="bullet">В едином формате</li></ul></div><div class="t-redactor__text"><strong>Где хранить:</strong></div><div class="t-redactor__text">Google Drive с открытым доступом. Ссылку вставляй в резюме.</div><div class="t-redactor__text"><strong>Лайфхак:</strong> оформи 2-3 примера особенно красиво. На собесе покажешь их первыми.</div><h2  class="t-redactor__h2">Как составить резюме начинающего QA</h2><div class="t-redactor__text"><strong>Структура:</strong></div><div class="t-redactor__text"><strong>1. ФИО, контакты</strong></div><div class="t-redactor__text"><strong>2. Желаемая должность:</strong> Junior QA Engineer / Стажёр-тестировщик</div><div class="t-redactor__text"><strong>3. О себе:</strong></div><div class="t-redactor__text">"Изучаю тестирование 3 месяца. Прошёл курсы. Собрал портфолио из 20 баг-репортов. Готов к стажировке. Мотивирован развиваться в QA."</div><div class="t-redactor__text"><strong>4. Навыки:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Виды тестирования: функциональное, регрессионное, smoke, sanity</li><li data-list="bullet">Инструменты: Postman, SQL, DevTools, Jira, Git</li><li data-list="bullet">Оформление: баг-репорты, тест-кейсы, чек-листы</li></ul></div><div class="t-redactor__text"><strong>5. Учебные проекты:</strong></div><div class="t-redactor__text">"Протестировал интернет-магазин XYZ: нашёл 25 багов, составил 15 тест-кейсов. Портфолио: [ссылка]"</div><div class="t-redactor__text"><strong>6. Образование</strong></div><div class="t-redactor__text"><strong>7. Курсы</strong></div><div class="t-redactor__text"><strong>Что НЕ писать:</strong></div><div class="t-redactor__text">❌ "Быстро обучаюсь" (все так пишут)</div><div class="t-redactor__text">❌ "Коммуникабельный" (покажи на собесе)</div><div class="t-redactor__text">❌ Ложь про опыт</div><h2  class="t-redactor__h2">Частые ошибки новичков</h2><div class="t-redactor__text"><strong>1. Думают что достаточно курса</strong></div><div class="t-redactor__text">Сертификат ≠ работа. Нужны портфолио, практика, подготовка к собесам.</div><div class="t-redactor__text"><strong>2. Не практикуются</strong></div><div class="t-redactor__text">Теория без практики не работает. Тестируй всё что видишь.</div><div class="t-redactor__text"><strong>3. Шаблонное резюме</strong></div><div class="t-redactor__text">"Прошёл курсы, ищу работу". Нужна конкретика: какие проекты, какие инструменты.</div><div class="t-redactor__text"><strong>4. Откликаются только на "без опыта"</strong></div><div class="t-redactor__text">Откликайся на все Junior-вакансии. Даже если пишут "опыт 1 год".</div><div class="t-redactor__text"><strong>5. Сдаются после 10 отказов</strong></div><div class="t-redactor__text">Норма — 100-200 откликов на 1 оффер. Не сдавайся.</div><div class="t-redactor__text"><strong>6. Не готовятся к собесам</strong></div><div class="t-redactor__text">"Авось пронесёт". Не пронесёт. Учи вопросы.</div><div class="t-redactor__text"><strong>7. Боятся торговаться за зарплату</strong></div><div class="t-redactor__text">Работодатель предлагает 80К? Проси 100К. В худшем случае скажут нет.</div><h2  class="t-redactor__h2">Зарплаты тестировщиков в 2025</h2><div class="t-redactor__text"><strong>Москва:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Стажёр/Intern: 40-80К</li><li data-list="bullet">Junior: 80-150К</li><li data-list="bullet">Middle: 150-250К</li></ul></div><div class="t-redactor__text"><strong>Санкт-Петербург:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Стажёр: 30-60К</li><li data-list="bullet">Junior: 60-120К</li><li data-list="bullet">Middle: 120-200К</li></ul></div><div class="t-redactor__text"><strong>Регионы:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Стажёр: 20-50К</li><li data-list="bullet">Junior: 50-100К</li><li data-list="bullet">Middle: 100-180К</li></ul></div><div class="t-redactor__text"><strong>Удалёнка:</strong></div><div class="t-redactor__text">Зарплаты как в Москве, но конкуренция выше.</div><div class="t-redactor__text">После 6-12 месяцев опыта переходишь в Middle. Зарплата +50-100%.</div><h2  class="t-redactor__h2">Реальные истории: от нуля до оффера</h2><h3  class="t-redactor__h3">Игорь, 28 лет — бариста → Junior QA</h3><div class="t-redactor__text"><strong>Срок:</strong> 10 недель</div><div class="t-redactor__text"><strong>Нагрузка:</strong> 3 часа/день</div><div class="t-redactor__text"><strong>Результат:</strong> оффер 170К, удалёнка</div><div class="t-redactor__text">"Учился по вечерам после работы. До этого проходил курсы, очень поверхностно. Яна помогла закрыть пробелы в знаниях, подтянуть необходимое, помогла с резюме, готовила к собесам и потом помогала на испытательном. Получил 3 оффера, выбрал лучший. Сейчас работаю 4 месяца, уже на испытательном тим-лид сказал, что я очень крут для джуна ."</div><h2  class="t-redactor__h2">Ольга, 31 год — бухгалтер → Junior QA</h2><div class="t-redactor__text"><strong>Срок:</strong> 12 недель</div><div class="t-redactor__text"><strong>Нагрузка:</strong> 2 часа/день</div><div class="t-redactor__text"><strong>Результат:</strong> оффер 150К, офис</div><div class="t-redactor__text">"Боялась что не справлюсь. Но методично шла по плану. Портфолио делали с Яной на реальных проектах. На собесе зашло. Рада что решилась."</div><h2  class="t-redactor__h2">Максим, 24 года — без опыта → Junior QA</h2><div class="t-redactor__text"><strong>Срок:</strong> 12 недель</div><div class="t-redactor__text"><strong>Нагрузка:</strong> 4 часа/день</div><div class="t-redactor__text"><strong>Результат:</strong> оффер 165К, удалёнка</div><div class="t-redactor__text">"Учился интенсивно. Постоплата мотивировала и меня и Яну получить крутой оффер. Прошёл 8 собесов за 3 недели. Выбрал компанию с хорошей командой."</div><h2  class="t-redactor__h2">Менторство vs самообучение vs курсы</h2><img src="https://static.tildacdn.com/tild3838-6337-4532-b234-306461356563/__2025-11-19__225619.png"><div class="t-redactor__text"><strong>Мой вывод:</strong></div><div class="t-redactor__text">Если хочешь результат за разумные сроки — менторство и наставшичество.</div><div class="t-redactor__text">Если есть лишние деньги, время  — курсы.</div><div class="t-redactor__text">Если нет денег, есть время — самообучение.</div><div class="t-redactor__text">💡 <a href="https://yakorqa.ru/#price" target="_blank" rel="noreferrer noopener nofollow">Узнай про менторство по подписке →</a></div><h2  class="t-redactor__h2">Чек-лист готовности к поиску работы</h2><div class="t-redactor__text">Проверь себя перед отправкой откликов:</div><div class="t-redactor__text">☐ Знаю что такое smoke, sanity, regression</div><div class="t-redactor__text">☐ Умею писать баг-репорты по шаблону</div><div class="t-redactor__text">☐ Умею составлять тест-кейсы</div><div class="t-redactor__text">☐ Знаю базовый SQL (SELECT, WHERE, JOIN)</div><div class="t-redactor__text">☐ Умею работать в Postman</div><div class="t-redactor__text">☐ Понимаю клиент-серверную архитектуру</div><div class="t-redactor__text">☐ Есть портфолио 20+ баг-репортов</div><div class="t-redactor__text">☐ Есть портфолио 10+ тест-кейсов</div><div class="t-redactor__text">☐ Готово резюме со ссылкой на портфолио</div><div class="t-redactor__text">☐ Выучил 50 частых вопросов на собесах</div><div class="t-redactor__text">☐ Готов откликаться 10-15 раз в день</div><div class="t-redactor__text">☐ Готов к отказам и продолжать искать</div><div class="t-redactor__text"><strong>8+ галочек</strong> — можно начинать поиск</div><div class="t-redactor__text"><strong>Меньше 8</strong> — доучись ещё 1-2 недели</div><h2  class="t-redactor__h2">Вопросы и ответы</h2><div class="t-redactor__text"><strong>Реально ли с нуля за 2 месяца?</strong></div><div class="t-redactor__text">Да, если учишься 3-4 часа каждый день. Без перерывов. С ментором быстрее.</div><div class="t-redactor__text"><strong>Нужно ли высшее образование?</strong></div><div class="t-redactor__text">Нет. 80% вакансий не требуют. Важнее навыки и портфолио.</div><div class="t-redactor__text"><strong>Нужен ли английский?</strong></div><div class="t-redactor__text">Будет плюсом, но не обязательно.</div><div class="t-redactor__text"><strong>Можно ли работать удалённо?</strong></div><div class="t-redactor__text">Да. Но на Junior-позиции чаще берут в офис или гибрид. После года опыта — больше удалёнки.</div><div class="t-redactor__text"><strong>Какая конкуренция?</strong></div><div class="t-redactor__text">Высокая. 1000-2000 откликов на 1 вакансию. Но с правильной подготовкой выделишься.</div><div class="t-redactor__text"><strong>Что делать если нет времени учиться?</strong></div><div class="t-redactor__text">Найди 1.5-2 часа в день. Убери сериалы, соцсети. Или откладывай мечту до лучших времён.</div><div class="t-redactor__text"><strong>Сколько нужно откликов для оффера?</strong></div><div class="t-redactor__text">В среднем 200-300. Некоторым хватает 20, другим нужно 150.</div><div class="t-redactor__text"><strong>Стоит ли идти на курсы?</strong></div><div class="t-redactor__text">Если есть деньги и нужна структура — да. Но курсы не гарантируют работу. Важна твоя практика.</div><div class="t-redactor__text"><strong>Чем менторство лучше курсов?</strong></div><div class="t-redactor__text">Индивидуальный подход. Помощь с резюме. Подготовка к собесам. Торги за оффер. Поддержка на испытательном.</div><h2  class="t-redactor__h2">Следующие шаги</h2><div class="t-redactor__text">Теперь знаешь реальный план. Без обмана.</div><div class="t-redactor__text"><strong>Что делать:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Реши точно: хочешь или нет</li><li data-list="ordered">Выбери путь: сам, курсы или менторство</li><li data-list="ordered">Начни сегодня. Не завтра. Сегодня</li><li data-list="ordered">Учись каждый день</li><li data-list="ordered">Не сдавайся после отказов</li></ol></div><h2  class="t-redactor__h2">Как я могу помочь</h2><h3  class="t-redactor__h3">Бесплатная консультация (30 минут)</h3><div class="t-redactor__text">Запишись на созвон. Обсудим:</div><div class="t-redactor__text">✓ Твою ситуацию</div><div class="t-redactor__text">✓ Реальные шансы</div><div class="t-redactor__text">✓ Примерную зарплату через 2-3 месяца</div><div class="t-redactor__text">✓ План действий</div><div class="t-redactor__text"><a href="https://t.me/yakorqa" target="_blank" rel="noreferrer noopener nofollow">Записаться на консультацию →</a></div><h2  class="t-redactor__h2">Менторство 1:1 с постоплатой</h2><div class="t-redactor__text"><strong>Формат:</strong> индивидуальное обучение</div><div class="t-redactor__text"><strong>Срок:</strong> 2-3 месяца до оффера</div><div class="t-redactor__text"><strong>Оплата:</strong> предоплата + оплата после оффера</div><div class="t-redactor__text"><strong>Что входит:</strong></div><div class="t-redactor__text">✓ Теория + практика</div><div class="t-redactor__text">✓ Портфолио 20+ баг-репортов</div><div class="t-redactor__text">✓ Резюме и самопрезентация</div><div class="t-redactor__text">✓ Подготовка к собесам</div><div class="t-redactor__text">✓ Торги за оффер</div><div class="t-redactor__text">✓ Поддержка на испытательном</div><div class="t-redactor__text"><a href="https://t.me/yakorqa" target="_blank" rel="noreferrer noopener nofollow">Узнать условия →</a></div><h2  class="t-redactor__h2">Boosty подписки</h2><div class="t-redactor__text"><strong>3 уровня:</strong></div><div class="t-redactor__text"><strong>Уровень 1:</strong> Закрытый чат, обучение (все необходимое)</div><div class="t-redactor__text"><strong>Уровень 2:</strong> Обучение тестированию с поддержкой при трудоустройстве (шаблоны, поддержка, резюме, собесы)</div><div class="t-redactor__text"><strong>Уровень 3:</strong> Максимальный тариф с индивидуальными консультациями (резюме, собесы, оффер)</div><div class="t-redactor__text"><a href="https://boosty.to/yakorqa/purchase/3621557" target="_blank" rel="noreferrer noopener">[Посмотреть подписки →]</a></div><div class="t-redactor__text"><strong>Читай также:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet"><a href="https://yakorqa.ru/tpost/kto-takoy-qa-inzhener" target="_blank" rel="noreferrer noopener nofollow">Кто такой QA инженер</a></li><li data-list="bullet"><a href="https://yakorqa.ru/tpost/bug-report-i-test-case" target="_blank" rel="noreferrer noopener nofollow">Баг-репорты и тест-кейсы</a></li><li data-list="bullet"><a href="https://yakorqa.ru/tpost/vidy-testirovaniya-polnyy-spisok" target="_blank" rel="noreferrer noopener nofollow">Виды тестирования</a></li></ul></div><div class="t-redactor__text">Еще больше полезных материалов в моем телеграм-канале <a href="https://t.me/yanaoqa" target="_blank" rel="noreferrer noopener">https://t.me/yanaoqa</a></div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Selenium Python: первый автотест за 30 минут для QA</title>
      <link>https://yakorqa.ru/tpost/selenium-python-pervye-shagi</link>
      <amplink>https://yakorqa.ru/tpost/selenium-python-pervye-shagi?amp=true</amplink>
      <pubDate>Wed, 03 Dec 2025 00:26:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild6236-3939-4238-a236-623965306338/kUpgbj2GfJuUmEcqOif5.jpg" type="image/jpeg"/>
      <description>Учимся писать автотесты на Selenium + Python. Установка, настройка, первый тест за 30 минут. Примеры кода и объяснения для новичков.</description>
      <turbo:content><![CDATA[<header><h1>Selenium Python: первый автотест за 30 минут для QA</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6236-3939-4238-a236-623965306338/kUpgbj2GfJuUmEcqOif5.jpg"/></figure><div class="t-redactor__text">Работаешь Manual QA? Хочешь в автоматизацию? Не знаешь с чего начать?</div><div class="t-redactor__text">Selenium + Python — популярный стек для автоматизации UI. Я покажу как написать первый автотест за 30 минут. С установкой. С объяснениями. С рабочим кодом.</div><div class="t-redactor__text">После статьи запустишь свой первый автотест. И поймёшь как работает автоматизация.</div><h2  class="t-redactor__h2">Краткий ответ</h2><div class="t-redactor__text">Чтобы написать первый автотест на Selenium + Python:</div><div class="t-redactor__text"><ol><li data-list="ordered">Установи Python 3.8+</li><li data-list="ordered">Выполни: pip install selenium</li><li data-list="ordered">Скачай ChromeDriver</li><li data-list="ordered">Напиши тест: открыть сайт → найти элемент → кликнуть</li><li data-list="ordered">Запусти: python test.py</li></ol></div><div class="t-redactor__text">Займёт 20-30 минут.</div><h2  class="t-redactor__h2">Зачем нужен Selenium</h2><div class="t-redactor__text"><strong>Selenium</strong> — инструмент для автоматизации браузера. Пишешь код — он кликает кнопки, заполняет формы, проверяет результаты.</div><div class="t-redactor__text"><strong>Для чего используют:</strong></div><div class="t-redactor__text">✅ Регрессионное тестирование (проверять одно и то же быстро)</div><div class="t-redactor__text">✅ Smoke-тесты (критичные сценарии перед релизом)</div><div class="t-redactor__text">✅ Кросс-браузерное тестирование (Chrome, Firefox, Safari)</div><div class="t-redactor__text"><strong>Плюсы:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Бесплатный, open source</li><li data-list="bullet">Поддерживает все браузеры</li><li data-list="bullet">Большое комьюнити</li><li data-list="bullet">Интеграция с Pytest, CI/CD</li></ul></div><div class="t-redactor__text"><strong>Минусы:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Медленнее API-тестов</li><li data-list="bullet">Нестабильные тесты (flaky tests)</li><li data-list="bullet">Требует обслуживания</li></ul></div><div class="t-redactor__text">Selenium — стандарт для UI автотестов. Знать его обязательно для AQA.</div><h2  class="t-redactor__h2">Что нужно знать перед стартом</h2><div class="t-redactor__text"><strong>Python базовый:</strong></div><div class="t-redactor__text">✓ Переменные, циклы, условия</div><div class="t-redactor__text">✓ Функции</div><div class="t-redactor__text">✓ Импорты модулей</div><div class="t-redactor__text">✓ ООП минимум (классы, методы)</div><div class="t-redactor__text"><strong>HTML/CSS структура:</strong></div><div class="t-redactor__text">✓ Что такое тег, атрибут, класс</div><div class="t-redactor__text">✓ Как устроена страница (DOM)</div><div class="t-redactor__text">✓ Как найти элемент в DevTools</div><div class="t-redactor__text"><strong>Не обязательно:</strong></div><div class="t-redactor__text">❌ Продвинутый Python</div><div class="t-redactor__text">❌ JavaScript</div><div class="t-redactor__text">❌ Backend</div><div class="t-redactor__text">💡 Не уверен готов ли к автоматизации? Читай <a href="/tpost/manual-vs-automation-testing" target="_blank" rel="noreferrer noopener nofollow">план перехода из Manual в Automation</a></div><h2  class="t-redactor__h2">Системные требования</h2><div class="t-redactor__text"><strong>ОС:</strong> Windows 10/11, macOS 11+, Linux (Ubuntu 20+)</div><div class="t-redactor__text"><strong>Python:</strong> версия 3.8 или новее</div><div class="t-redactor__text"><strong>RAM:</strong> минимум 4GB (рекомендую 8GB)</div><div class="t-redactor__text"><strong>Браузер:</strong> Chrome 100+ или Firefox 100+</div><div class="t-redactor__text"><strong>Интернет:</strong> для установки пакетов</div><h2  class="t-redactor__h2">Установка и настройка окружения</h2><h2  class="t-redactor__h2">Установка Python</h2><div class="t-redactor__text"><strong>Windows:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Скачай с python.org</li><li data-list="ordered">При установке поставь галочку "Add Python to PATH"</li><li data-list="ordered">Проверь: открой cmd, введи python --version</li></ol></div><div class="t-redactor__text"><strong>macOS:</strong></div><div class="t-redactor__text">brew install python3<br />python3 --version</div><div class="t-redactor__text"><strong>Linux:</strong></div><div class="t-redactor__text">sudo apt update<br />sudo apt install python3 python3-pip<br />python3 --version</div><h2  class="t-redactor__h2">Установка Selenium</h2><div class="t-redactor__text">Открой терминал (cmd на Windows):</div><div class="t-redactor__text">pip install selenium</div><div class="t-redactor__text">Проверь установку:</div><div class="t-redactor__text">pip show selenium</div><div class="t-redactor__text">Должна показаться версия 4.х.х</div><h2  class="t-redactor__h2">Установка WebDriver (ChromeDriver)</h2><div class="t-redactor__text"><strong>Способ 1: Автоматически (рекомендую)</strong></div><div class="t-redactor__text">Selenium 4 скачивает драйвер сам. Просто используй webdriver.Chrome().</div><div class="t-redactor__text"><strong>Способ 2: Вручную</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Узнай версию Chrome: chrome://version</li><li data-list="ordered">Скачай ChromeDriver с chromedriver.chromium.org</li><li data-list="ordered">Положи в папку проекта или добавь в PATH</li></ol></div><div class="t-redactor__text"><strong>Для Firefox:</strong></div><div class="t-redactor__text">pip install webdriver-manager</div><h2  class="t-redactor__h2">Проверка установки</h2><div class="t-redactor__text">Создай файл test_check.py:</div><div class="t-redactor__text">from selenium import webdriver<br /><br /># Открываем браузер<br />driver = webdriver.Chrome()<br /><br /># Открываем сайт<br />driver.get("https://google.com")<br /><br /># Ждём 3 секунды<br />import time<br />time.sleep(3)<br /><br /># Закрываем браузер<br />driver.quit()<br /><br />print("Всё работает!")</div><div class="t-redactor__text">Запусти:</div><div class="t-redactor__text">python test_check.py</div><div class="t-redactor__text">Если открылся Chrome и зашёл на Google — всё ок.</div><h2  class="t-redactor__h2">Базовые концепции Selenium</h2><h2  class="t-redactor__h2">WebDriver — что это</h2><div class="t-redactor__text"><strong>WebDriver</strong> — программа которая управляет браузером.</div><div class="t-redactor__text">Твой код → WebDriver → Браузер</div><div class="t-redactor__text">Для каждого браузера свой WebDriver:</div><div class="t-redactor__text"><ul><li data-list="bullet">Chrome → ChromeDriver</li><li data-list="bullet">Firefox → GeckoDriver</li><li data-list="bullet">Safari → SafariDriver</li></ul></div><h2  class="t-redactor__h2">Локаторы: как найти элемент</h2><div class="t-redactor__text"><strong>Локатор</strong> — способ найти элемент на странице.</div><div class="t-redactor__text"><strong>8 типов локаторов:</strong></div><div class="t-redactor__text"><strong>Приоритет использования:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">ID (если есть и уникальный)</li><li data-list="ordered">CSS Selector</li><li data-list="ordered">XPath (если другие не подходят)</li></ol></div><h2  class="t-redactor__h2">Основные методы</h2><div class="t-redactor__text"># Найти элемент<br />element = driver.find_element(By.ID, "email")<br /><br /># Кликнуть<br />element.click()<br /><br /># Ввести текст<br />element.send_keys("test@mail.ru")<br /><br /># Очистить поле<br />element.clear()<br /><br /># Получить текст<br />text = element.text<br /><br /># Получить атрибут<br />value = element.get_attribute("value")<br /><br /></div><h2  class="t-redactor__h2">Первый автотест: пошагово</h2><h2  class="t-redactor__h2">Задача: авторизация на сайте</h2><div class="t-redactor__text">Напишем тест:</div><div class="t-redactor__text"><ol><li data-list="ordered">Открыть сайт</li><li data-list="ordered">Найти поле Email</li><li data-list="ordered">Ввести email</li><li data-list="ordered">Найти поле Пароль</li><li data-list="ordered">Ввести пароль</li><li data-list="ordered">Нажать кнопку "Войти"</li><li data-list="ordered">Проверить что вошли</li></ol></div><h2  class="t-redactor__h2">Код теста с комментариями</h2><div class="t-redactor__text">Создай файл test_login.py:</div><div class="t-redactor__text">from selenium import webdriver<br />from selenium.webdriver.common.by import By<br />import time<br /><br /># 1. Создаём объект драйвера (открываем браузер)<br />driver = webdriver.Chrome()<br /><br />try:<br />   # 2. Открываем сайт<br />   driver.get("https://example.com/login")<br />   <br />   # Ждём загрузки страницы (плохая практика, потом заменим)<br />   time.sleep(2)<br />   <br />   # 3. Находим поле Email по ID<br />   email_field = driver.find_element(By.ID, "email")<br />   <br />   # 4. Вводим email<br />   email_field.send_keys("test@mail.ru")<br />   <br />   # 5. Находим поле пароля<br />   password_field = driver.find_element(By.ID, "password")<br />   <br />   # 6. Вводим пароль<br />   password_field.send_keys("qwerty123")<br />   <br />   # 7. Находим кнопку "Войти" по CSS селектору<br />   login_button = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")<br />   <br />   # 8. Кликаем<br />   login_button.click()<br />   <br />   # Ждём перехода<br />   time.sleep(3)<br />   <br />   # 9. Проверяем что вошли (ищем элемент личного кабинета)<br />   user_menu = driver.find_element(By.CLASS_NAME, "user-menu")<br />   <br />   if user_menu:<br />       print("✅ Тест прошёл! Авторизация успешна.")<br />   else:<br />       print("❌ Тест упал! Не нашли user-menu.")<br />       <br />except Exception as e:<br />   print(f"❌ Ошибка: {e}")<br />   <br />finally:<br />   # 10. Всегда закрываем браузер<br />   driver.quit()<br /><br /></div><h4  class="t-redactor__h4">Запуск и результат</h4><div class="t-redactor__text">python test_login.py</div><div class="t-redactor__text">Если всё ок:</div><div class="t-redactor__text"><ul><li data-list="bullet">Откроется Chrome</li><li data-list="bullet">Заполнятся поля</li><li data-list="bullet">Кликнется кнопка</li><li data-list="bullet">В консоли: "✅ Тест прошёл!"</li></ul></div><h2  class="t-redactor__h2">Локаторы подробнее</h2><h4  class="t-redactor__h4">By ID</h4><div class="t-redactor__text"><br />element = driver.find_element(By.ID, "email")</div><div class="t-redactor__text"><strong>Когда использовать:</strong></div><div class="t-redactor__text">Когда у элемента есть уникальный ID.</div><div class="t-redactor__text"><strong>HTML:</strong></div><div class="t-redactor__text">&lt;input id="email" type="text"&gt;</div><h2  class="t-redactor__h2">By Class Name</h2><div class="t-redactor__text">element = driver.find_element(By.CLASS_NAME, "btn-primary")</div><div class="t-redactor__text"><strong>Внимание:</strong> если классов несколько, найдёт первый.</div><h2  class="t-redactor__h2">By XPath</h2><div class="t-redactor__text"># Абсолютный XPath (плохо, ломается при изменениях)<br />element = driver.find_element(By.XPATH, "/html/body/div/form/input")[1]<br /><br /># Относительный XPath (лучше)<br />element = driver.find_element(By.XPATH, "//input[@id='email']")<br /><br /># По тексту<br />button = driver.find_element(By.XPATH, "//button[text()='Войти']")<br /><br /># По части текста<br />link = driver.find_element(By.XPATH, "//a[contains(text(), 'Регистр')]")</div><div class="t-redactor__text"><strong>Как получить XPath:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Открой DevTools (F12)</li><li data-list="ordered">Найди элемент</li><li data-list="ordered">ПКМ → Copy → Copy XPath</li></ol></div><h2  class="t-redactor__h2">By CSS Selector</h2><div class="t-redactor__text"># По ID<br />element = driver.find_element(By.CSS_SELECTOR, "#email")<br /><br /># По классу<br />element = driver.find_element(By.CSS_SELECTOR, ".btn-primary")<br /><br /># По атрибуту<br />element = driver.find_element(By.CSS_SELECTOR, "input[type='email']")<br /><br /># Комбинация<br />element = driver.find_element(By.CSS_SELECTOR, "form.login-form input#email")</div><div class="t-redactor__text"><strong>CSS обычно быстрее и читабельнее XPath.</strong></div><h2  class="t-redactor__h2">Ожидания: implicit и explicit wait</h2><h2  class="t-redactor__h2">Проблема</h2><div class="t-redactor__text">driver.get("https://example.com")<br />element = driver.find_element(By.ID, "slow-element") # ❌ Ошибка! Элемент ещё не загрузился</div><h2  class="t-redactor__h2">Implicit Wait (неявное ожидание)</h2><div class="t-redactor__text">Selenium ждёт до X секунд перед ошибкой.</div><div class="t-redactor__text">driver.implicitly_wait(10) # Ждать до 10 секунд<br /><br />driver.get("https://example.com")<br />element = driver.find_element(By.ID, "slow-element") # ✅ Подождёт загрузки</div><div class="t-redactor__text"><strong>Плюсы:</strong> настроил один раз, работает везде.</div><div class="t-redactor__text"><strong>Минусы:</strong> ждёт каждый элемент, замедляет тесты.</div><h2  class="t-redactor__h2">Explicit Wait (явное ожидание)</h2><div class="t-redactor__text">Ждём конкретное условие для конкретного элемента.</div><div class="t-redactor__text">from selenium.webdriver.support.ui import WebDriverWait<br />from selenium.webdriver.support import expected_conditions as EC<br /><br /># Ждём до 10 секунд пока элемент станет кликабельным<br />wait = WebDriverWait(driver, 10)<br />element = wait.until(EC.element_to_be_clickable((By.ID, "button")))<br />element.click()</div><div class="t-redactor__text"><strong>Популярные условия:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">presence_of_element_located — элемент есть в DOM</li><li data-list="bullet">visibility_of_element_located — элемент видим</li><li data-list="bullet">element_to_be_clickable — элемент кликабельный</li><li data-list="bullet">text_to_be_present_in_element — текст в элементе</li></ul></div><div class="t-redactor__text"><strong>Рекомендация:</strong> используй explicit wait для важных действий.</div><h2  class="t-redactor__h2">Pytest vs unittest для Selenium</h2><h2  class="t-redactor__h2">unittest (встроенный в Python)</h2><div class="t-redactor__text">import unittest<br />from selenium import webdriver<br /><br />class TestLogin(unittest.TestCase):<br /><br />def setUp(self):<br />self.driver = webdriver.Chrome()<br /><br />def test_successful_login(self):<br />driver = self.driver<br />driver.get("https://example.com/login")<br /># ... тест<br />self.assertTrue(condition)<br /><br />def tearDown(self):<br />self.driver.quit()<br /><br />if __name__ == "__main__":<br />unittest.main()</div><h2  class="t-redactor__h2">pytest (рекомендую)</h2><div class="t-redactor__text">import pytest<br />from selenium import webdriver<br /><br />@pytest.fixture<br />def driver():<br />driver = webdriver.Chrome()<br />yield driver<br />driver.quit()<br /><br />def test_successful_login(driver):<br />driver.get("https://example.com/login")<br /># ... тест<br />assert condition</div><div class="t-redactor__text"><strong>Почему pytest лучше:</strong></div><div class="t-redactor__text">✅ Проще синтаксис (обычные функции, assert)</div><div class="t-redactor__text">✅ Мощные фикстуры</div><div class="t-redactor__text">✅ Параметризация тестов</div><div class="t-redactor__text">✅ Лучшие отчёты</div><div class="t-redactor__text">✅ Больше плагинов</div><div class="t-redactor__text"><strong>Установка pytest:</strong></div><div class="t-redactor__text">pip install pytest</div><div class="t-redactor__text"><strong>Запуск:</strong></div><div class="t-redactor__text">pytest test_login.py</div><h2  class="t-redactor__h2">Частые ошибки новичков</h2><div class="t-redactor__text"><strong>1. NoSuchElementException</strong></div><div class="t-redactor__text">selenium.common.exceptions.NoSuchElementException: Unable to locate element</div><div class="t-redactor__text"><strong>Причины:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Элемент не загрузился (добавь ожидание)</li><li data-list="bullet">Неправильный локатор (проверь в DevTools)</li><li data-list="bullet">Элемент в iframe (переключись: driver.switch_to.frame())</li></ul></div><div class="t-redactor__text"><strong>Решение:</strong></div><div class="t-redactor__text">from selenium.webdriver.support.ui import WebDriverWait<br />from selenium.webdriver.support import expected_conditions as EC<br /><br />wait = WebDriverWait(driver, 10)<br />element = wait.until(EC.presence_of_element_located((By.ID, "email")))</div><div class="t-redactor__text"><strong>2. ElementNotInteractableException</strong></div><div class="t-redactor__text">Element is not clickable at point (x, y)</div><div class="t-redactor__text"><strong>Причины:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Элемент перекрыт другим (попап, баннер)</li><li data-list="bullet">Элемент вне видимой области (проскролль)</li></ul></div><div class="t-redactor__text"><strong>Решение:</strong></div><div class="t-redactor__text"># Скролл к элементу<br />driver.execute_script("arguments.scrollIntoView();", element)<br />element.click()</div><div class="t-redactor__text"><strong>3. StaleElementReferenceException</strong></div><div class="t-redactor__text">Stale element reference: element is not attached to the page document</div><div class="t-redactor__text"><strong>Причина:</strong> элемент удалён из DOM (страница обновилась).</div><div class="t-redactor__text"><strong>Решение:</strong> найди элемент заново.</div><div class="t-redactor__text"><strong>4. time.sleep() везде</strong></div><div class="t-redactor__text">❌ Плохо:</div><div class="t-redactor__text">time.sleep(5) # Ждём всегда 5 секунд</div><div class="t-redactor__text">✅ Хорошо:</div><div class="t-redactor__text">WebDriverWait(driver, 10).until(...) # Ждём до 10, но продолжим как только элемент появится</div><div class="t-redactor__text"><strong>5. Абсолютные XPath</strong></div><div class="t-redactor__text">❌ Плохо:</div><div class="t-redactor__text">driver.find_element(By.XPATH, "/html/body/div/div/form/input")[2][1]</div><div class="t-redactor__text">✅ Хорошо:</div><div class="t-redactor__text">driver.find_element(By.XPATH, "//input[@id='email']")</div><h2  class="t-redactor__h2">Best practices для начинающих</h2><div class="t-redactor__text"><strong>1. Используй explicit waits</strong></div><div class="t-redactor__text">wait = WebDriverWait(driver, 10)<br />element = wait.until(EC.element_to_be_clickable((By.ID, "button")))</div><div class="t-redactor__text"><strong>2. Закрывай браузер в finally</strong></div><div class="t-redactor__text">try:<br />driver.get("...")<br />finally:<br />driver.quit()</div><div class="t-redactor__text"><strong>3. Предпочитай ID и CSS локаторам</strong></div><div class="t-redactor__text">XPath — последний вариант.</div><div class="t-redactor__text"><strong>4. Делай скриншоты при ошибке</strong></div><div class="t-redactor__text">except Exception as e:<br />driver.save_screenshot("error.png")<br />raise e</div><div class="t-redactor__text"><strong>5. Не храни данные в коде</strong></div><div class="t-redactor__text"># ❌ Плохо<br />password = "qwerty123"<br /><br /># ✅ Хорошо<br />import os<br />password = os.getenv("TEST_PASSWORD")</div><div class="t-redactor__text"><strong>6. Один тест — одна проверка</strong></div><div class="t-redactor__text">Не делай мега-тест на 50 шагов.</div><div class="t-redactor__text"><strong>7. Используй headless для CI/CD</strong></div><div class="t-redactor__text">from selenium.webdriver.chrome.options import Options<br /><br />options = Options()<br />options.add_argument("--headless")<br />driver = webdriver.Chrome(options=options)</div><h2  class="t-redactor__h2">Troubleshooting: решение частых проблем</h2><div class="t-redactor__text"><strong>Проблема:</strong> ChromeDriver not found</div><div class="t-redactor__text"><strong>Решение:</strong></div><div class="t-redactor__text"># Используй webdriver-manager<br />from selenium import webdriver<br />from webdriver_manager.chrome import ChromeDriverManager<br />from selenium.webdriver.chrome.service import Service<br /><br />service = Service(ChromeDriverManager().install())<br />driver = webdriver.Chrome(service=service)</div><div class="t-redactor__text"><strong>Проблема:</strong> Элемент не найден, хотя вижу его на странице</div><div class="t-redactor__text"><strong>Решение:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Проверь что элемент не в iframe</li><li data-list="ordered">Добавь ожидание</li><li data-list="ordered">Проверь локатор в DevTools (Ctrl+F в Elements)</li></ol></div><div class="t-redactor__text"><strong>Проблема:</strong> Тест работает локально, падает на CI/CD</div><div class="t-redactor__text"><strong>Решение:</strong></div><div class="t-redactor__text">Используй headless режим:</div><div class="t-redactor__text">options = Options()<br />options.add_argument("--headless")<br />options.add_argument("--no-sandbox")<br />options.add_argument("--disable-dev-shm-usage")<br />driver = webdriver.Chrome(options=options)</div><h2  class="t-redactor__h2">Что изучать дальше</h2><div class="t-redactor__text">Освоил базу? Двигайся дальше:</div><div class="t-redactor__text"><strong>1. Page Object Model (POM)</strong></div><div class="t-redactor__text">Паттерн для организации кода. Вместо кучи локаторов в тесте — отдельные классы для страниц.</div><div class="t-redactor__text"><strong>2. Pytest фикстуры</strong></div><div class="t-redactor__text">@pytest.fixture для setup/teardown, передачи данных.</div><div class="t-redactor__text"><strong>3. Параметризация тестов</strong></div><div class="t-redactor__text">@pytest.mark.parametrize("username,password", [<br />("user1", "pass1"),<br />("user2", "pass2")<br />])<br />def test_login(username, password):<br />...</div><div class="t-redactor__text"><strong>4. Allure отчёты</strong></div><div class="t-redactor__text">Красивые отчёты о прогоне тестов.</div><div class="t-redactor__text"><strong>5. CI/CD интеграция</strong></div><div class="t-redactor__text">Запуск тестов в Jenkins, GitLab CI, GitHub Actions.</div><div class="t-redactor__text"><strong>6. Selenium Grid</strong></div><div class="t-redactor__text">Параллельный запуск тестов на разных машинах.</div><div class="t-redactor__text">💡 Хочешь глубже освоить автоматизацию? На <a href="https://yakorqa.ru/#studying" target="_blank" rel="noreferrer noopener nofollow">курсе Automation Python</a> пройдём всё это с ментором.</div><h2  class="t-redactor__h2">Вопросы и ответы</h2><div class="t-redactor__text"><strong>Сколько нужно знать Python для Selenium?</strong></div><div class="t-redactor__text">Базовый уровень: переменные, циклы, функции, импорты. ООП на минимуме.</div><div class="t-redactor__text"><strong>Что лучше: XPath или CSS Selector?</strong></div><div class="t-redactor__text">CSS быстрее и читабельнее. XPath используй когда CSS не подходит (поиск по тексту, навигация вверх по DOM).</div><div class="t-redactor__text"><strong>Нужен ли Selenium Grid новичку?</strong></div><div class="t-redactor__text">Нет. Сначала научись писать стабильные тесты. Grid для масштабирования.</div><div class="t-redactor__text"><strong>Как найти локатор элемента?</strong></div><div class="t-redactor__text">Открой DevTools (F12) → Elements → найди элемент → ПКМ → Copy → Copy selector/XPath.</div><div class="t-redactor__text"><strong>Почему тесты нестабильные (flaky)?</strong></div><div class="t-redactor__text">Нет ожиданий, динамическая подгрузка, плохие локаторы. Используй explicit waits.</div><div class="t-redactor__text"><strong>Pytest или unittest?</strong></div><div class="t-redactor__text">Pytest. Проще, мощнее, популярнее.</div><div class="t-redactor__text"><strong>Можно ли автоматизировать всё?</strong></div><div class="t-redactor__text">Нет. Исследовательское тестирование, UX, некоторые mobile-сценарии — руками эффективнее.</div><h2  class="t-redactor__h2">Следующие шаги</h2><div class="t-redactor__text">Теперь знаешь базу Selenium + Python. Написал первый автотест.</div><div class="t-redactor__text"><strong>Что делать:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Попрактикуйся: автоматизируй 3-5 сценариев</li><li data-list="ordered">Изучи pytest</li><li data-list="ordered">Попробуй Page Object Model</li><li data-list="ordered">Добавь тесты в портфолио</li></ol></div><h2  class="t-redactor__h2">Как я могу помочь</h2><h4  class="t-redactor__h4">Kонсультация</h4><div class="t-redactor__text">Не уверен с чего начать автоматизацию?</div><div class="t-redactor__text">Запишись на созвон:</div><div class="t-redactor__text">✓ Оценю твой уровень Python</div><div class="t-redactor__text">✓ Скажу готов ли к Selenium</div><div class="t-redactor__text">✓ Дам план обучения</div><div class="t-redactor__text">✓ Отвечу на вопросы</div><div class="t-redactor__text"><a href="https://t.me/yakorqa" target="_blank" rel="noreferrer noopener nofollow">Записаться →</a></div><h2  class="t-redactor__h2">Курс автоматизации Python</h2><div class="t-redactor__text">Хочешь глубже освоить автоматизацию?</div><div class="t-redactor__text">На <a href="https://yakorqa.ru/#studying" target="_blank" rel="noreferrer noopener nofollow">курсе Automation Python</a>:</div><div class="t-redactor__text">✓ Selenium + Pytest от А до Я</div><div class="t-redactor__text">✓ Page Object Model</div><div class="t-redactor__text">✓ CI/CD интеграция (Jenkins, GitLab)</div><div class="t-redactor__text">✓ Портфолио автотестов для резюме</div><div class="t-redactor__text">✓ Подготовка к собесам на AQA</div><div class="t-redactor__text"><strong>Формат:</strong> 1:1 с ментором</div><div class="t-redactor__text"><strong>Срок:</strong> 2-3 месяца</div><div class="t-redactor__text"><a href="https://yakorqa.ru/#studying" target="_blank" rel="noreferrer noopener nofollow">Узнать условия →</a></div><div class="t-redactor__text">Еще больше полезных материалов в моем телеграм-канале <a href="https://t.me/yanaoqa" target="_blank" rel="noreferrer noopener">https://t.me/yanaoqa</a></div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Postman для API тестирования: гайд для начинающих QA</title>
      <link>https://yakorqa.ru/tpost/postman-api-testirovanie-osnovy</link>
      <amplink>https://yakorqa.ru/tpost/postman-api-testirovanie-osnovy?amp=true</amplink>
      <pubDate>Fri, 12 Dec 2025 20:01:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild3130-3834-4162-b538-373438326666/hyZXnkyGegCH69vsEFiv.jpg" type="image/jpeg"/>
      <description>Учимся тестировать API в Postman: GET/POST запросы, коллекции, автотесты, переменные. Примеры с реальными API. Гайд для начинающих QA.</description>
      <turbo:content><![CDATA[<header><h1>Postman для API тестирования: гайд для начинающих QA</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild3130-3834-4162-b538-373438326666/hyZXnkyGegCH69vsEFiv.jpg"/></figure><h2  class="t-redactor__h2">Postman для API тестирования: первый тест за 5 минут</h2><div class="t-redactor__text"><strong>Сложность:</strong> 4,5/5</div><div class="t-redactor__text">Работаешь Manual QA? Видел в вакансиях требование "API тестирование"? Не знаешь что это и с чего начать?</div><div class="t-redactor__text">Postman — самый популярный инструмент для тестирования API. Я покажу как сделать первый запрос за 5 минут. С установкой. С примерами. Без сложной теории.</div><div class="t-redactor__text">После статьи запустишь свой первый API тест. И поймёшь что это не страшно.</div><h2  class="t-redactor__h2">Быстрый старт (5 минут)</h2><div class="t-redactor__text"><ol><li data-list="ordered">Скачай Postman с postman.com (бесплатно)</li><li data-list="ordered">Установи и открой</li><li data-list="ordered">Создай новый запрос: кнопка "New" → "HTTP Request"</li><li data-list="ordered">Вставь URL: https://jsonplaceholder.typicode.com/users/1</li><li data-list="ordered">Метод: GET (уже выбран по умолчанию)</li><li data-list="ordered">Нажми <strong>Send</strong></li><li data-list="ordered">Увидел JSON ответ внизу? Поздравляю — первый API запрос готов!</li></ol></div><div class="t-redactor__text">Работает? Читай дальше — разберём что произошло.</div><h2  class="t-redactor__h2">Что такое API и зачем его тестировать</h2><div class="t-redactor__text"><strong>API (Application Programming Interface)</strong> — способ как программы общаются между собой.</div><div class="t-redactor__text"><strong>Пример:</strong></div><div class="t-redactor__text">Открываешь приложение погоды. Оно отправляет запрос на сервер: "дай погоду для Москвы". Сервер отвечает JSON с данными. Приложение показывает тебе погоду.</div><div class="t-redactor__text">Запрос к серверу — это <strong>API запрос</strong>.</div><div class="t-redactor__text"><strong>Зачем тестировать API:</strong></div><div class="t-redactor__text">✅ Быстрее чем UI (не надо кликать кнопки)</div><div class="t-redactor__text">✅ Стабильнее (нет проблем с вёрсткой, анимациями)</div><div class="t-redactor__text">✅ Находишь баги на backend до UI</div><div class="t-redactor__text">✅ Можешь автоматизировать легко</div><div class="t-redactor__text">✅ Проверяешь данные напрямую</div><div class="t-redactor__text"><strong>Что тестируем:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Правильность данных (корректный JSON)</li><li data-list="bullet">Статус коды (200, 400, 500)</li><li data-list="bullet">Время ответа (performance)</li><li data-list="bullet">Авторизацию (токены, права доступа)</li><li data-list="bullet">Валидацию (что будет если ввести неверные данные)</li></ul></div><h2  class="t-redactor__h2">API vs UI тестирование: в чём разница</h2><img src="https://static.tildacdn.com/tild3439-3763-4565-b161-336436363633/__2025-12-13__231239.png"><div class="t-redactor__text"><strong>Правило:</strong> сначала проверь API. Потом UI. Найдёшь баги раньше.</div><div class="t-redactor__text">Подробнее про типы тестирования: <a href="https://www.perplexity.ai/blog/vidy-testirovaniya-polnyy-spisok" target="_blank" rel="nofollow noreferrer noopener">Виды тестирования</a></div><h2  class="t-redactor__h2">Почему именно Postman</h2><div class="t-redactor__text"><strong>Плюсы:</strong></div><div class="t-redactor__text">✅ Бесплатный</div><div class="t-redactor__text">✅ Удобный интерфейс (не нужен код)</div><div class="t-redactor__text">✅ Коллекции (группировка запросов)</div><div class="t-redactor__text">✅ Переменные окружения (dev/prod)</div><div class="t-redactor__text">✅ Автотесты (встроенные assertions)</div><div class="t-redactor__text">✅ Newman CLI (запуск через терминал)</div><div class="t-redactor__text">✅ Документация API</div><div class="t-redactor__text">✅ Mock servers</div><div class="t-redactor__text"><strong>Альтернативы:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Insomnia (проще, но меньше функций)</li><li data-list="bullet">Thunder Client (плагин для VS Code)</li><li data-list="bullet">cURL (командная строка, для продвинутых)</li></ul></div><div class="t-redactor__text"><strong>Для Junior QA Postman — лучший выбор.</strong> Его требуют 90% работодателей.</div><h2  class="t-redactor__h2">Установка и первое знакомство</h2><h2  class="t-redactor__h2">Установка Postman</h2><div class="t-redactor__text"><strong>Для всех ОС:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Иди на postman.com/downloads</li><li data-list="ordered">Скачай версию для своей ОС</li><li data-list="ordered">Установи (стандартная установка)</li><li data-list="ordered">Запусти</li><li data-list="ordered">Создай бесплатный аккаунт (нужен для синхронизации)</li></ol></div><div class="t-redactor__text"><strong>Системные требования:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Windows 10+, macOS 10.13+, Linux</li><li data-list="bullet">4GB RAM минимум</li><li data-list="bullet">500MB свободного места</li></ul></div><h2  class="t-redactor__h2">Интерфейс: что где находится</h2><div class="t-redactor__text"><strong>Основные элементы:</strong></div><div class="t-redactor__text"><strong>1. Workspace</strong> (рабочая область)</div><div class="t-redactor__text">Твои проекты. Можно создавать личные или командные.</div><div class="t-redactor__text"><strong>2. Collections</strong> (коллекции)</div><div class="t-redactor__text">Папки с запросами. Группируешь по проектам: "API магазина", "API банка".</div><div class="t-redactor__text"><strong>3. Requests</strong> (запросы)</div><div class="t-redactor__text">Отдельные API запросы: GET /users, POST /login.</div><div class="t-redactor__text"><strong>4. Environments</strong> (окружения)</div><div class="t-redactor__text">Переменные для разных серверов: dev, test, prod.</div><div class="t-redactor__text"><strong>5. Tests</strong> (тесты)</div><div class="t-redactor__text">Автоматические проверки ответов.</div><div class="t-redactor__text"><strong>Интерфейс запроса:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet"><strong>URL строка</strong> — адрес API</li><li data-list="bullet"><strong>Метод</strong> — GET, POST, PUT, DELETE...</li><li data-list="bullet"><strong>Params</strong> — параметры запроса</li><li data-list="bullet"><strong>Headers</strong> — заголовки (авторизация, тип данных)</li><li data-list="bullet"><strong>Body</strong> — тело запроса (для POST/PUT)</li><li data-list="bullet"><strong>Response</strong> — ответ сервера</li></ul></div><h2  class="t-redactor__h2">Основы HTTP для тестирования</h2><h2  class="t-redactor__h2">HTTP методы</h2><img src="https://static.tildacdn.com/tild3262-6539-4331-b739-313262313037/__2025-12-13__231357.png"><h2  class="t-redactor__h2">Статус коды</h2><img src="https://static.tildacdn.com/tild6634-3433-4437-b139-316635636631/__2025-12-13__231409.png"><div class="t-redactor__text"><strong>Запомни:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">2xx — успех</li><li data-list="bullet">4xx — ошибка клиента (твоя ошибка)</li><li data-list="bullet">5xx — ошибка сервера (их ошибка)</li></ul></div><h2  class="t-redactor__h2">Headers и Body</h2><div class="t-redactor__text"><strong>Headers</strong> — метаданные запроса:</div><div class="t-redactor__text"><br /><em>Content-Type: application/json</em><br /><em>Authorization: Bearer token123</em><br /><em>Accept: application/json</em></div><div class="t-redactor__text"><strong>Body</strong> — данные которые отправляешь (POST/PUT):</div><div class="t-redactor__text"><br /><em>{</em><br /><em>"name": "John",</em><br /><em>"email": "john@mail.com"</em><br /><em>}</em></div><h2  class="t-redactor__h2">Первый запрос: пошагово</h2><div class="t-redactor__text">Будем использовать <strong>JSONPlaceholder</strong> — бесплатное API для тренировки.</div><h2  class="t-redactor__h2">GET запрос к публичному API</h2><div class="t-redactor__text"><strong>Задача:</strong> получить данные пользователя с ID=1</div><div class="t-redactor__text"><strong>Шаги:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Открой Postman</li><li data-list="ordered">Нажми <strong>New</strong> → <strong>HTTP Request</strong></li><li data-list="ordered">В поле URL вставь: https://jsonplaceholder.typicode.com/users/1</li><li data-list="ordered">Убедись что метод <strong>GET</strong> (слева от URL)</li><li data-list="ordered">Нажми <strong>Send</strong></li></ol></div><h2  class="t-redactor__h2">Анализ ответа</h2><div class="t-redactor__text">Внизу появился ответ:</div><div class="t-redactor__text"><strong>Status:</strong> 200 OK (успешно)</div><div class="t-redactor__text"><strong>Time:</strong> ~300ms (скорость ответа)</div><div class="t-redactor__text"><strong>Size:</strong> ~500B (размер данных)</div><div class="t-redactor__text"><strong>Body (JSON):</strong></div><div class="t-redactor__text"><br /><em>{</em><br /><em>"id": 1,</em><br /><em>"name": "Leanne Graham",</em><br /><em>"username": "Bret",</em><br /><em>"email": "Sincere@april.biz",</em><br /><em>"address": {</em><br /><em>"street": "Kulas Light",</em><br /><em>"city": "Gwenborough"</em><br /><em>}</em><br /><em>}</em></div><h2  class="t-redactor__h2">Проверка статус кода и данных</h2><div class="t-redactor__text"><strong>Вручную проверяем:</strong></div><div class="t-redactor__text">✓ Статус код 200</div><div class="t-redactor__text">✓ ID равен 1</div><div class="t-redactor__text">✓ Есть поля name, email</div><div class="t-redactor__text">✓ Email содержит @</div><div class="t-redactor__text">Поздравляю — протестировал API вручную!</div><h2  class="t-redactor__h2">POST запрос: создание данных</h2><div class="t-redactor__text"><strong>Задача:</strong> создать нового пользователя</div><div class="t-redactor__text"><strong>Шаги:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Создай новый запрос</li><li data-list="ordered">Метод: <strong>POST</strong></li><li data-list="ordered">URL: https://jsonplaceholder.typicode.com/users</li><li data-list="ordered">Вкладка <strong>Body</strong> → <strong>raw</strong> → выбери <strong>JSON</strong></li><li data-list="ordered">Вставь данные:</li></ol></div><div class="t-redactor__text"><br />{<br />"name": "Test User",<br />"email": "test@example.com",<br />"username": "testuser"<br />}</div><div class="t-redactor__text"><ol><li data-list="ordered">Нажми <strong>Send</strong></li></ol></div><div class="t-redactor__text"><strong>Ответ:</strong></div><div class="t-redactor__text"><br />{<br />"id": 11,<br />"name": "Test User",<br />"email": "test@example.com",<br />"username": "testuser"<br />}</div><div class="t-redactor__text"><strong>Проверка:</strong></div><div class="t-redactor__text">✓ Статус 201 Created</div><div class="t-redactor__text">✓ Вернулся ID нового пользователя</div><div class="t-redactor__text">✓ Данные совпадают с отправленными</div><h2  class="t-redactor__h2">Коллекции: организация тестов</h2><div class="t-redactor__text"><strong>Коллекция</strong> — папка с запросами.</div><div class="t-redactor__text"><strong>Создание коллекции:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Слева нажми <strong>Collections</strong></li><li data-list="ordered">Кнопка <strong>+</strong> (Create Collection)</li><li data-list="ordered">Назови: "JSONPlaceholder API"</li><li data-list="ordered">Перетащи запросы в коллекцию</li></ol></div><div class="t-redactor__text"><strong>Структура коллекции:</strong></div><div class="t-redactor__text">📁 JSONPlaceholder API<br />📁 Users<br />GET /users<br />GET /users/:id<br />POST /users<br />PUT /users/:id<br />DELETE /users/:id<br />📁 Posts<br />GET /posts<br />POST /posts</div><div class="t-redactor__text"><strong>Плюсы:</strong></div><div class="t-redactor__text">✅ Организованность</div><div class="t-redactor__text">✅ Можно запустить все тесты разом (Runner)</div><div class="t-redactor__text">✅ Можно экспортировать/импортировать</div><h2  class="t-redactor__h2">Переменные окружения</h2><h2  class="t-redactor__h2">Что это и зачем</h2><div class="t-redactor__text"><strong>Проблема:</strong> у тебя 3 сервера — dev, test, prod. URL разные. Менять в каждом запросе долго.</div><div class="t-redactor__text"><strong>Решение:</strong> переменные окружения.</div><h2  class="t-redactor__h2">Создание переменных</h2><div class="t-redactor__text"><ol><li data-list="ordered">Справа вверху <strong>Environments</strong></li><li data-list="ordered">Кнопка <strong>+</strong> (Create Environment)</li><li data-list="ordered">Назови: "Development"</li><li data-list="ordered">Добавь переменную:</li></ol></div><div class="t-redactor__text"><ul><li data-list="bullet"><strong>Variable:</strong> base_url</li><li data-list="bullet"><strong>Initial Value:</strong> https://jsonplaceholder.typicode.com</li><li data-list="bullet"><strong>Current Value:</strong> то же самое</li></ul></div><div class="t-redactor__text">Сохрани</div><div class="t-redactor__text">Создай ещё окружение "Production" с другим URL.</div><h2  class="t-redactor__h2">Использование {{variable}}</h2><div class="t-redactor__text">В запросах вместо полного URL пиши:</div><div class="t-redactor__text">{{base_url}}/users/1</div><div class="t-redactor__text">Postman подставит значение из активного окружения.</div><div class="t-redactor__text"><strong>Переключение:</strong></div><div class="t-redactor__text">Справа вверху выбирай "Development" или "Production" из списка.</div><div class="t-redactor__text"><strong>Другие переменные:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">{{api_key}} — ключ API</li><li data-list="bullet">{{auth_token}} — токен авторизации</li><li data-list="bullet">{{user_id}} — ID пользователя</li></ul></div><h2  class="t-redactor__h2">Автоматизация: тесты в Postman</h2><h2  class="t-redactor__h2">Вкладка Tests</h2><div class="t-redactor__text">Тут пишешь код проверок. Выполняется после каждого запроса.</div><div class="t-redactor__text"><strong>Язык:</strong> JavaScript (но простой, на уровне примеров).</div><h2  class="t-redactor__h2">Базовые assertions</h2><div class="t-redactor__text">Открой запрос → вкладка <strong>Tests</strong> → вставь:</div><div class="t-redactor__text"><div class="ql-code-block" data-language="plain"><br /></div><div class="ql-code-block" data-language="plain">javascript</div><div class="ql-code-block" data-language="plain">// Проверка статус кода</div><div class="ql-code-block" data-language="plain">pm.test("Status code is 200", function () {</div><div class="ql-code-block" data-language="plain">    pm.response.to.have.status(200);</div><div class="ql-code-block" data-language="plain">});</div><div class="ql-code-block" data-language="plain"><br /></div><div class="ql-code-block" data-language="plain">// Проверка времени ответа</div><div class="ql-code-block" data-language="plain">pm.test("Response time is less than 500ms", function () {</div><div class="ql-code-block" data-language="plain">    pm.expect(pm.response.responseTime).to.be.below(500);</div><div class="ql-code-block" data-language="plain">});</div><div class="ql-code-block" data-language="plain"><br /></div><div class="ql-code-block" data-language="plain">// Проверка заголовка</div><div class="ql-code-block" data-language="plain">pm.test("Content-Type is JSON", function () {</div><div class="ql-code-block" data-language="plain">    pm.response.to.have.header("Content-Type", "application/json; charset=utf-8");</div><div class="ql-code-block" data-language="plain">});</div></div><div class="t-redactor__text">Нажми <strong>Send</strong>. Внизу вкладка <strong>Test Results</strong> — видишь результаты проверок.</div><h2  class="t-redactor__h2">Проверка JSON ответа</h2><div class="t-redactor__text">// Парсим JSON<br />pm.test("Response has correct structure", function () {<br />var jsonData = pm.response.json();<br /><br />// Проверяем поля<br />pm.expect(jsonData).to.have.property("id");<br />pm.expect(jsonData).to.have.property("name");<br />pm.expect(jsonData).to.have.property("email");<br />});<br /><br />// Проверяем конкретное значение<br />pm.test("ID is 1", function () {<br />var jsonData = pm.response.json();<br />pm.expect(jsonData.id).to.eql(1);<br />});<br /><br />// Проверяем тип данных<br />pm.test("Email is a string", function () {<br />var jsonData = pm.response.json();<br />pm.expect(jsonData.email).to.be.a("string");<br />});<br /><br />// Проверяем что email содержит @<br />pm.test("Email contains @", function () {<br />var jsonData = pm.response.json();<br />pm.expect(jsonData.email).to.include("@");<br />});</div><div class="t-redactor__text"><strong>Snippets (готовые шаблоны):</strong></div><div class="t-redactor__text">Справа во вкладке Tests есть кнопки с готовыми проверками. Кликай — код вставляется автоматически.</div><h2  class="t-redactor__h2">Запуск коллекции через Runner</h2><div class="t-redactor__text"><strong>Collection Runner</strong> — запускает все тесты коллекции разом.</div><div class="t-redactor__text"><strong>Шаги:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Открой коллекцию</li><li data-list="ordered">Кнопка <strong>Run</strong> (справа вверху)</li><li data-list="ordered">Выбери запросы которые запустить</li><li data-list="ordered">Выбери окружение</li><li data-list="ordered">Кнопка <strong>Run [Collection Name]</strong></li></ol></div><div class="t-redactor__text"><strong>Результат:</strong></div><div class="t-redactor__text">Видишь какие тесты прошли (зелёные), какие упали (красные).</div><div class="t-redactor__text"><strong>Плюсы:</strong></div><div class="t-redactor__text">✅ Регрессионное тестирование за 1 клик</div><div class="t-redactor__text">✅ Видишь все баги разом</div><div class="t-redactor__text">✅ Можно сохранить результаты</div><h2  class="t-redactor__h2">Newman: запуск через командную строку</h2><div class="t-redactor__text"><strong>Newman</strong> — CLI для Postman. Запускаешь коллекции без GUI.</div><div class="t-redactor__text"><strong>Зачем:</strong></div><div class="t-redactor__text">✅ Интеграция в CI/CD (Jenkins, GitLab)</div><div class="t-redactor__text">✅ Запуск на сервере без интерфейса</div><div class="t-redactor__text">✅ Автоматизация в расписании</div><div class="t-redactor__text"><strong>Установка:</strong></div><div class="t-redactor__text">bash<br />npm install -g newman</div><div class="t-redactor__text"><strong>Экспорт коллекции:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Коллекция → три точки → Export</li><li data-list="ordered">Сохрани как collection.json</li></ol></div><div class="t-redactor__text"><strong>Запуск:</strong></div><div class="t-redactor__text">bash<br />newman run collection.json</div><div class="t-redactor__text"><strong>С окружением:</strong></div><div class="t-redactor__text">bash<br />newman run collection.json -e environment.json</div><div class="t-redactor__text"><strong>Отчёт HTML:</strong></div><div class="t-redactor__text">bash<br />npm install -g newman-reporter-htmlextra<br />newman run collection.json -r htmlextra</div><div class="t-redactor__text">💡 Хочешь интегрировать API тесты в CI/CD? На <a href="https://yakorqa.ru" target="_blank" rel="noreferrer noopener nofollow">курсе автоматизации</a> разберём Newman + Jenkins подробно.</div><h2  class="t-redactor__h2">Частые ошибки новичков</h2><div class="t-redactor__text"><strong>1. Не проверяют статус коды</strong></div><div class="t-redactor__text">Запрос прошёл, данные есть — думают всё ок. А статус 500 (ошибка сервера).</div><div class="t-redactor__text"><strong>Решение:</strong> всегда проверяй статус.</div><div class="t-redactor__text"><strong>2. Забывают Headers</strong></div><div class="t-redactor__text">Отправляют JSON без Content-Type: application/json. Сервер не понимает формат.</div><div class="t-redactor__text"><strong>Решение:</strong> проверяй Headers, особенно при POST/PUT.</div><div class="t-redactor__text"><strong>3. Хардкодят данные</strong></div><div class="t-redactor__text">Пишут URL прямо в запросах. Потом меняется сервер — надо менять везде.</div><div class="t-redactor__text"><strong>Решение:</strong> используй переменные окружения.</div><div class="t-redactor__text"><strong>4. Не организуют коллекции</strong></div><div class="t-redactor__text">Все запросы в куче. Невозможно найти нужный.</div><div class="t-redactor__text"><strong>Решение:</strong> структурируй по папкам.</div><div class="t-redactor__text"><strong>5. Не используют Pre-request Scripts</strong></div><div class="t-redactor__text">Нужен токен для каждого запроса. Копируют вручную каждый раз.</div><div class="t-redactor__text"><strong>Решение:</strong></div><div class="t-redactor__text">// Pre-request Script на уровне коллекции<br />pm.sendRequest({<br />url: "{{base_url}}/auth/login",<br />method: "POST",<br />body: {<br />mode: "raw",<br />raw: JSON.stringify({<br />username: "admin",<br />password: "admin123"<br />})<br />}<br />}, function (err, res) {<br />pm.environment.set("auth_token", res.json().token);<br />});</div><div class="t-redactor__text"><strong>6. Игнорируют валидацию схемы JSON</strong></div><div class="t-redactor__text"><strong>Решение:</strong></div><div class="t-redactor__text">var schema = {<br />"type": "object",<br />"properties": {<br />"id": {"type": "number"},<br />"name": {"type": "string"}<br />},<br />"required": ["id", "name"]<br />};<br /><br />pm.test("Schema is valid", function() {<br />pm.response.to.have.jsonSchema(schema);<br />});</div><h2  class="t-redactor__h2">Best practices</h2><div class="t-redactor__text"><strong>1. Используй переменные окружения</strong></div><div class="t-redactor__text">Для URL, токенов, ID.</div><div class="t-redactor__text"><strong>2. Организуй коллекции по модулям</strong></div><div class="t-redactor__text">Users, Products, Orders — отдельные папки.</div><div class="t-redactor__text"><strong>3. Пиши тесты для каждого запроса</strong></div><div class="t-redactor__text">Минимум: статус код, структура JSON.</div><div class="t-redactor__text"><strong>4. Используй Pre-request Scripts</strong></div><div class="t-redactor__text">Для авторизации, генерации данных.</div><div class="t-redactor__text"><strong>5. Называй запросы понятно</strong></div><div class="t-redactor__text">❌ "Request 1"</div><div class="t-redactor__text">✅ "GET /users - Get all users"</div><div class="t-redactor__text"><strong>6. Документируй API</strong></div><div class="t-redactor__text">Postman может генерировать документацию из коллекций.</div><div class="t-redactor__text"><strong>7. Версионируй коллекции</strong></div><div class="t-redactor__text">Экспортируй в Git. Отслеживай изменения.</div><div class="t-redactor__text"><strong>8. Запускай тесты в CI/CD</strong></div><div class="t-redactor__text">Newman + Jenkins/GitLab = автоматизация.</div><div class="t-redactor__text"><strong>9. Проверяй время ответа</strong></div><div class="t-redactor__text">Performance важен:</div><div class="t-redactor__text">pm.test("Response time &lt; 500ms", function () {<br />pm.expect(pm.response.responseTime).to.be.below(500);<br />});</div><div class="t-redactor__text"><strong>10. Используй Mock Servers</strong></div><div class="t-redactor__text">Нет backend? Создай mock в Postman.</div><h2  class="t-redactor__h2">Что изучать дальше</h2><div class="t-redactor__text">Освоил базу Postman? Двигайся дальше:</div><div class="t-redactor__text"><strong>1. Авторизация</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Bearer Token</li><li data-list="bullet">API Key</li><li data-list="bullet">OAuth 2.0</li><li data-list="bullet">Basic Auth</li></ul></div><div class="t-redactor__text"><strong>2. Pre-request Scripts</strong></div><div class="t-redactor__text">Динамическая генерация данных, цепочки запросов.</div><div class="t-redactor__text"><strong>3. JSON Schema Validation</strong></div><div class="t-redactor__text">Проверка структуры ответа.</div><div class="t-redactor__text"><strong>4. Data-driven testing</strong></div><div class="t-redactor__text">CSV/JSON файлы с данными для массовых тестов.</div><div class="t-redactor__text"><strong>5. Mock Servers</strong></div><div class="t-redactor__text">Эмуляция API когда backend не готов.</div><div class="t-redactor__text"><strong>6. Newman в CI/CD</strong></div><div class="t-redactor__text">Автоматический запуск тестов при каждом коммите.</div><div class="t-redactor__text"><strong>7. Postman Monitors</strong></div><div class="t-redactor__text">Запуск коллекций по расписанию (каждый час).</div><div class="t-redactor__text"><strong>8. API документация</strong></div><div class="t-redactor__text">Генерация документации из коллекций.</div><div class="t-redactor__text"><strong>9. GraphQL</strong></div><div class="t-redactor__text">Postman поддерживает GraphQL запросы.</div><div class="t-redactor__text"><strong>10. REST Assured (для автоматизации)</strong></div><div class="t-redactor__text">Переход на код (Java/Python) для более сложных сценариев.</div><div class="t-redactor__text">На <a href="https://yakorqa.ru/manual" target="_blank" rel="noreferrer noopener nofollow">курсе ручного тестирования</a> мы проходим Postman от базы до продвинутых техник.</div><h2  class="t-redactor__h2">Вопросы и ответы</h2><div class="t-redactor__text"><strong>Нужно ли знать программирование для Postman?</strong></div><div class="t-redactor__text">Нет. Базовые функции работают без кода. Для тестов нужен простой JavaScript — научишься по примерам.</div><div class="t-redactor__text"><strong>Чем Postman лучше Insomnia?</strong></div><div class="t-redactor__text">Postman функциональнее: коллекции, окружения, Newman CLI, документация. Insomnia проще, но меньше возможностей.</div><div class="t-redactor__text"><strong>Можно ли тестировать SOAP в Postman?</strong></div><div class="t-redactor__text">Да. Postman поддерживает SOAP запросы через XML Body.</div><div class="t-redactor__text"><strong>Как авторизоваться с токеном?</strong></div><div class="t-redactor__text">Вкладка Authorization → Type: Bearer Token → вставь токен. Или в Headers: Authorization: Bearer your_token_here.</div><div class="t-redactor__text"><strong>Что такое Pre-request Script?</strong></div><div class="t-redactor__text">Код который выполняется ДО отправки запроса. Нужен для получения токена, генерации данных.</div><div class="t-redactor__text"><strong>Можно ли параллельно запускать тесты?</strong></div><div class="t-redactor__text">Через Newman нет (sequential). Используй Postman CLI или сторонние инструменты.</div><div class="t-redactor__text"><strong>Бесплатен ли Postman?</strong></div><div class="t-redactor__text">Да. Есть платные фичи (командная работа, больше запросов к API), но для обучения хватит бесплатного.</div><div class="t-redactor__text"><strong>Как сохранить коллекцию?</strong></div><div class="t-redactor__text">Экспорт: коллекция → три точки → Export → сохрани JSON. Импорт: Import → выбери файл.</div><h2  class="t-redactor__h2">Следующие шаги</h2><div class="t-redactor__text">Теперь знаешь основы Postman. Можешь тестировать API.</div><div class="t-redactor__text"><strong>Что делать:</strong></div><div class="t-redactor__text"><ol><li data-list="ordered">Протестируй 3-5 публичных API (JSONPlaceholder, ReqRes, OpenWeatherMap)</li><li data-list="ordered">Создай коллекцию с тестами</li><li data-list="ordered">Запусти через Runner</li><li data-list="ordered">Попробуй Newman</li><li data-list="ordered">Добавь в портфолио</li></ol></div><h2  class="t-redactor__h2">Как я могу помочь</h2><h2  class="t-redactor__h2">Бесплатная консультация</h2><div class="t-redactor__text">Не уверен как развиваться в API тестировании?</div><div class="t-redactor__text">Запишись на созвон:</div><div class="t-redactor__text">✓ Оценю твой уровень</div><div class="t-redactor__text">✓ Скажу что учить дальше</div><div class="t-redactor__text">✓ Дам план обучения</div><div class="t-redactor__text">✓ Отвечу на вопросы</div><div class="t-redactor__text"><a href="https://t.me/yakorqa" target="_blank" rel="noreferrer noopener nofollow">Записаться →</a></div><h2  class="t-redactor__h2">Курс ручного тестирования</h2><div class="t-redactor__text">Хочешь освоить API тестирование с ментором?</div><div class="t-redactor__text">На <a href="https://yakorqa.ru/manual" target="_blank" rel="noreferrer noopener nofollow">курсе ручного тестирования</a>:</div><div class="t-redactor__text">✓ Postman от А до Я</div><div class="t-redactor__text">✓ REST API, JSON, авторизация</div><div class="t-redactor__text">✓ Автотесты для портфолио</div><div class="t-redactor__text">✓ Подготовка к вопросам про API на собесах</div><div class="t-redactor__text">✓ Практика на реальных проектах</div><div class="t-redactor__text"><strong>Формат:</strong> 1:1 индивидуально</div><div class="t-redactor__text"><strong>Срок:</strong> 2 месяца</div><div class="t-redactor__text"><strong>Оплата:</strong> постоплата после оффера</div><div class="t-redactor__text"><a href="https://www.perplexity.ai/manual" target="_blank" rel="nofollow noreferrer noopener">Узнать условия →</a></div><h2  class="t-redactor__h2">Курс автоматизации Python</h2><div class="t-redactor__text">Хочешь интегрировать API тесты в CI/CD?</div><div class="t-redactor__text">На <a href="https://yakorqa.ru" target="_blank" rel="noreferrer noopener nofollow">курсе автоматизации</a>:</div><div class="t-redactor__text">✓ Newman + Jenkins/GitLab</div><div class="t-redactor__text">✓ REST Assured (Python)</div><div class="t-redactor__text">✓ Data-driven testing</div><div class="t-redactor__text">✓ API автотесты в портфолио</div><div class="t-redactor__text"><a href="https://www.perplexity.ai/automation-python" target="_blank" rel="nofollow noreferrer noopener">Подробнее →</a></div><h2  class="t-redactor__h2">Boosty подписки</h2><div class="t-redactor__text"><strong>3 уровня:</strong></div><div class="t-redactor__text"><strong>Уровень 1:</strong> Закрытый чат (обучение, ответы на вопросы)</div><div class="t-redactor__text"><strong>Уровень 2:</strong> Помощь с трудоустройством (все что в обучении+резюме, собесы, разбор тестов)</div><div class="t-redactor__text"><strong>Уровень 3:</strong>  Максимум ( + консультации 1:1)</div><div class="t-redactor__text"><strong>Читай также:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet"><a href="https://yakorqa.ru/tpost/vidy-testirovaniya-polnyy-spisok" target="_blank" rel="noreferrer noopener nofollow">Виды тестирования</a></li><li data-list="bullet"><a href="https://yakorqa.ru/tpost/selenium-python-pervye-shagi" target="_blank" rel="noreferrer noopener nofollow">Selenium Python: первые шаги</a></li><li data-list="bullet"><a href="https://yakorqa.ru/tpost/kak-stat-testirovschikom-s-nulya" target="_blank" rel="noreferrer noopener nofollow">Как стать тестировщиком с нуля</a></li></ul></div><div class="t-redactor__text">Еще больше полезных материалов в моем телеграм-канале <a href="https://t.me/yanaoqa" target="_blank" rel="noreferrer noopener">https://t.me/yanaoqa</a></div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Сколько зарабатывают тестировщики в 2025: реальные цифры</title>
      <link>https://yakorqa.ru/tpost/zarplata-testirovschika-2025-2026</link>
      <amplink>https://yakorqa.ru/tpost/zarplata-testirovschika-2025-2026?amp=true</amplink>
      <pubDate>Sat, 13 Dec 2025 20:39:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild3830-3834-4330-b362-623332353034/uXtYZe7JioOHXZLSXDOs.jpg" type="image/jpeg"/>
      <description>Реальные зарплаты тестировщиков в 2025: Junior 80-150К, Middle 150-300К, Senior 300-500К. Москва, регионы, удалёнка. Что влияет на доход.</description>
      <turbo:content><![CDATA[<header><h1>Сколько зарабатывают тестировщики в 2025: реальные цифры</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild3830-3834-4330-b362-623332353034/uXtYZe7JioOHXZLSXDOs.jpg"/></figure><h2  class="t-redactor__h2">Сколько зарабатывают тестировщики в 2025: реальные цифры</h2><div class="t-redactor__text">Думаешь стать тестировщиком? Хочешь знать сколько реально платят?</div><div class="t-redactor__text">Данные собрала из 500+ вакансий hh.ru, зарплат моих учеников и опросов в QA сообществах. Актуально на декабрь 2025.</div><h2  class="t-redactor__h2">Краткий ответ: сколько платят QA</h2><img src="https://static.tildacdn.com/tild6237-3935-4439-b933-396634393363/__2025-12-13__234632.png"><div class="t-redactor__text"><strong>Минимум:</strong> 40-60К (стажёр в регионах)</div><div class="t-redactor__text"><strong>Максимум:</strong> 500-700К (Lead QA)</div><h2  class="t-redactor__h2">Зарплаты по уровням</h2><h2  class="t-redactor__h2">Junior QA (0-1 год)</h2><div class="t-redactor__text"><strong>Что умеет:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Ручное тестирование</li><li data-list="bullet">Баг-репорты, тест-кейсы</li><li data-list="bullet">SQL базовый, Postman, Jira</li></ul></div><div class="t-redactor__text"><strong>Зарплаты:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Москва: 80-150К (средняя 120К)</li><li data-list="bullet">Регионы: 50-100К (средняя 75К)</li><li data-list="bullet">Удалёнка: 70-130К (средняя 100К)</li></ul></div><h2  class="t-redactor__h2">Middle QA (1-3 года)</h2><div class="t-redactor__text"><strong>Дополнительно умеет:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">API тестирование</li><li data-list="bullet">Базовая автоматизация</li><li data-list="bullet">SQL продвинутый</li></ul></div><div class="t-redactor__text"><strong>Зарплаты:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Москва: 150-250К</li><li data-list="bullet">Регионы: 100-180К</li></ul></div><h2  class="t-redactor__h2">Senior QA (3-5 лет)</h2><div class="t-redactor__text"><strong>Зарплаты:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Москва: 250-400К</li><li data-list="bullet">Удалёнка: 200-350К</li></ul></div><h2  class="t-redactor__h2">Manual vs Automation</h2><img src="https://static.tildacdn.com/tild3236-6662-4363-b632-383061396338/__2025-12-13__234835.png"><div class="t-redactor__text"><strong>Вывод:</strong> Automation платят на 20-50% больше на каждом уровне.</div><div class="t-redactor__text">💡 <a href="https://yakorqa.ru" target="_blank" rel="noreferrer noopener nofollow">План перехода из Manual в Automation →</a></div><h2  class="t-redactor__h2">Зарплаты по городам</h2><div class="t-redactor__text"><strong>Москва</strong> (самые высокие):</div><div class="t-redactor__text"><ul><li data-list="bullet">Junior: 80-150К</li><li data-list="bullet">Middle: 150-250К</li></ul></div><div class="t-redactor__text"><strong>Санкт-Петербург</strong> (-10-20% от Москвы):</div><div class="t-redactor__text"><ul><li data-list="bullet">Junior: 70-130К</li><li data-list="bullet">Middle: 130-220К</li></ul></div><div class="t-redactor__text"><strong>Регионы</strong> (-20-40% от Москвы):</div><div class="t-redactor__text"><ul><li data-list="bullet">Junior: 50-100К</li><li data-list="bullet">Middle: 100-180К</li></ul></div><div class="t-redactor__text"><strong>Удалёнка</strong> (как Москва, но выше конкуренция):</div><div class="t-redactor__text"><ul><li data-list="bullet">Junior: 70-130К</li><li data-list="bullet">Middle: 120-220К</li></ul></div><h2  class="t-redactor__h2">Зарплаты в топовых компаниях</h2><h2  class="t-redactor__h2">Яндекс</h2><div class="t-redactor__text"><strong>Зарплаты:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Junior: 100-150К</li><li data-list="bullet">Middle: 170-250К</li><li data-list="bullet">Senior: 280-400К</li></ul></div><div class="t-redactor__text"><strong>Важно:</strong> на 10-20% ниже рынка, но большой соцпакет (ДМС, питание, спорт, обучение) + бренд в резюме. Многие идут за опытом на 1-2 года, потом переходят в стартапы за большей зарплатой.</div><h2  class="t-redactor__h2">Другие компании</h2><div class="t-redactor__text"><ul><li data-list="bullet"><strong>Сбер:</strong> 90-240К (аналогично Яндексу)</li><li data-list="bullet"><strong>Тинькофф:</strong> 100-280К (выше рынка, но жёсткие требования)</li><li data-list="bullet"><strong>VK:</strong> 90-250К (средний рынок)</li></ul></div><h2  class="t-redactor__h2">Что влияет на зарплату</h2><div class="t-redactor__text"><strong>1. Технологии:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Базовый набор (SQL, Postman): 80-120К</li><li data-list="bullet">+Python/автотесты: +20-40К</li><li data-list="bullet">+CI/CD, нагрузка: +30-50К</li></ul></div><div class="t-redactor__text"><strong>2. Английский:</strong></div><img src="https://static.tildacdn.com/tild3463-6535-4235-a466-303636346635/__2025-12-13__235047.png"><div class="t-redactor__text"><strong>3. Портфолио:</strong></div><div class="t-redactor__text">С портфолио: +20-30К к зарплате</div><div class="t-redactor__text"><strong>4. Переговоры:</strong></div><div class="t-redactor__text">Умение торговаться: +20-30% на оффере</div><h2  class="t-redactor__h2">Рост зарплаты: таймлайн</h2><div class="t-redactor__text"><strong>Месяц 0-2:</strong> Обучение (0₽, вложения 0-150К)</div><div class="t-redactor__text"><strong>Месяц 3-6:</strong> Junior 80-120К</div><div class="t-redactor__text"><strong>Год 2:</strong> Middle 140-250К</div><div class="t-redactor__text"><strong>Год 3-5:</strong> Senior 220-300К</div><div class="t-redactor__text"><strong>Итого за 5 лет:</strong> заработал 10-12 млн₽, вложил 50-150К</div><div class="t-redactor__text"><strong>ROI:</strong> 80-200x</div><h2  class="t-redactor__h2">Окупаемость обучения</h2><div class="t-redactor__text"><strong>Вариант 1: Самообучение</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Вложения: 0-5К</li><li data-list="bullet">Срок: 6-12-18 месяцев</li><li data-list="bullet">Зарплата: 80-100К</li></ul></div><div class="t-redactor__text"><strong>Вариант 2: Курсы</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Вложения: 50-100К</li><li data-list="bullet">Срок: 3-6-12 месяцев</li><li data-list="bullet">Зарплата: 100-130К</li><li data-list="bullet"><strong>Окупаемость: 1-2 месяца</strong></li></ul></div><div class="t-redactor__text"><strong>Вариант 3: Менторство</strong></div><div class="t-redactor__text"><ul><li data-list="bullet">Вложения: 30К предоплата + постоплата</li><li data-list="bullet">Срок: 2-3 месяца</li><li data-list="bullet">Зарплата: 180-250К</li><li data-list="bullet"><strong>Окупаемость: 2-3 месяца</strong></li></ul></div><h2  class="t-redactor__h2">Динамика: 2023-2025</h2><img src="https://static.tildacdn.com/tild3165-3463-4932-b465-386438663536/__2025-12-13__235318.png"><div class="t-redactor__text"><strong>Прогноз на 2026:</strong> рост 10-15%, Junior будут получать 90-160К.</div><h2  class="t-redactor__h2">Как увеличить зарплату</h2><div class="t-redactor__text"><ol><li data-list="ordered"><strong>Освой автоматизацию:</strong> +50-80К (3-4 месяца)</li><li data-list="ordered"><strong>Английский до B2:</strong> +20-30%</li><li data-list="ordered"><strong>Меняй работу каждые 1.5-2 года:</strong> +20-40% при смене</li><li data-list="ordered"><strong>Нишевые навыки</strong> (performance, security): +15-30%</li><li data-list="ordered"><strong>Учись переговорам:</strong> +20-30% на оффере</li></ol></div><div class="t-redactor__text">💡 <a href="https://yakorqa.ru" target="_blank" rel="noreferrer noopener nofollow">Курс с менторством →</a> — учу не только тестированию, но и переговорам о зарплате.</div><h2  class="t-redactor__h2">Вопросы и ответы</h2><div class="t-redactor__text"><strong>Сколько получают тестировщики без опыта?</strong></div><div class="t-redactor__text">80-120К Москва, 60-100К регионы, 70-110К удалёнка.</div><div class="t-redactor__text"><strong>Правда ли Junior получают 150К?</strong></div><div class="t-redactor__text">Да, но не все. Средняя 100-120К. 150К — если хорошо подготовился и умеешь торговаться.</div><div class="t-redactor__text"><strong>Automation зарабатывает больше Manual?</strong></div><div class="t-redactor__text">Да, на 20-50% в зависимости от уровня.</div><div class="t-redactor__text"><strong>За сколько окупится обучение?</strong></div><div class="t-redactor__text">Вложил 50-100К → получил оффер 120К → окупил за 1-2 месяца.</div><div class="t-redactor__text"><strong>Какая минимальная зарплата?</strong></div><div class="t-redactor__text">40-50К стажёры в регионах. Норма для новичка: 70-100К.</div><div class="t-redactor__text"><strong>Сколько зарабатывает в Яндексе?</strong></div><div class="t-redactor__text">Junior 100-150К, Middle 170-250К. На 10-20% ниже рынка, но большой соцпакет + бренд.</div><div class="t-redactor__text"><strong>Стоит ли идти ради зарплаты?</strong></div><div class="t-redactor__text">Если сейчас получаешь меньше 130К — да. Окупаешь обучение за 1-2 месяца.</div><h2  class="t-redactor__h2">Хочешь зарплату 150-220К через 2 месяца?</h2><div class="t-redactor__text"><strong>Бесплатная консультация:</strong></div><div class="t-redactor__text">✓ Оценю твои шансы</div><div class="t-redactor__text">✓ Посчитаю реальную вилку для тебя</div><div class="t-redactor__text">✓ Научу договариваться о большей зарплате</div><div class="t-redactor__text">✓ Дам план достижения нужного дохода</div><div class="t-redactor__text"><a href="https://t.me/yakorqa" target="_blank" rel="noreferrer noopener nofollow">Записаться на консультацию →</a></div><div class="t-redactor__text"><strong>P.S.</strong> Мои ученики получают офферы на 180-250К за 2-3 месяца обучения. Оплата: есть вариант, оплаты до 9тыс в месяц, а также, когда основная часть оплаты - после оффера.</div><div class="t-redactor__text"><a href="https://yakorqa.ru/" target="_blank" rel="noreferrer noopener nofollow">Узнать условия →</a></div><div class="t-redactor__text"><strong>Читай также:</strong></div><div class="t-redactor__text"><ul><li data-list="bullet"><a href="https://yakorqa.ru/tpost/kak-stat-testirovschikom-s-nulya" target="_blank" rel="noreferrer noopener nofollow">Как стать тестировщиком с нуля</a></li><li data-list="bullet"><a href="https://yakorqa.ru/tpost/bug-report-i-test-case" target="_blank" rel="noreferrer noopener nofollow">Баг-репорты и тест-кейсы: примеры и шаблоны для QA</a></li></ul></div><div class="t-redactor__text">Еще больше полезных материалов в моем телеграм-канале <a href="https://t.me/yanaoqa" target="_blank" rel="noreferrer noopener">https://t.me/yanaoqa</a></div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Manual vs Automation: когда автоматизировать тесты</title>
      <link>https://yakorqa.ru/tpost/manual-vs-automation-testing</link>
      <amplink>https://yakorqa.ru/tpost/manual-vs-automation-testing?amp=true</amplink>
      <pubDate>Sun, 15 Feb 2026 10:32:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild6232-6263-4539-a439-326230636566/78HubrbAZUToSaoHhAzz.jpg" type="image/jpeg"/>
      <description>Разбираем разницу между ручным и автоматизированным тестированием. Когда автоматизировать, а когда руками. Критерии, чек-лист решения.</description>
      <turbo:content><![CDATA[<header><h1>Manual vs Automation: когда автоматизировать тесты</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6232-6263-4539-a439-326230636566/78HubrbAZUToSaoHhAzz.jpg"/></figure><h2  class="t-redactor__h2">Manual vs Automation: когда автоматизировать тесты</h2><div class="t-redactor__text">Вопрос "учить ручное или сразу автоматизацию?" задаёт каждый второй новичок в QA. И почти каждый получает размытый ответ: "зависит от ситуации". Давайте разберёмся конкретно - от чего именно зависит и как принять решение.</div><div class="t-redactor__text">Короткий ответ: автоматизация нужна там, где один и тот же тест прогоняется больше 5-7 раз. Всё остальное - ручное тестирование. Но дьявол, как обычно, в деталях.</div><div class="t-redactor__text">На российском рынке сейчас около 4 000 вакансий для Manual QA и примерно 2 500 для AQA. Зарплаты у автоматизаторов в среднем на 40-60% выше. Но это не значит, что ручное тестирование умирает. Скорее наоборот - спрос на грамотных мануальщиков растёт вместе с рынком.</div><h2  class="t-redactor__h2">Что такое ручное тестирование и где оно незаменимо</h2><div class="t-redactor__text">Ручное тестирование - это когда QA инженер сам открывает приложение, проходит сценарии, нажимает кнопки и фиксирует результат. Никакого кода. Браузер, глаза, голова.</div><div class="t-redactor__text">Звучит примитивно? На деле это сложная аналитическая работа. Manual QA находит баги, которые автотест никогда не поймает. Автотест проверяет то, что в него заложили. А человек замечает странности: "кнопка работает, но выглядит криво", "текст обрезается на мобильном", "после оплаты нет подтверждения - пользователь растеряется".</div><div class="t-redactor__text">Ручное тестирование незаменимо в нескольких случаях:</div><div class="t-redactor__text">Исследовательское тестирование.</div><div class="t-redactor__text">Новая фича, документации мало, нужно "пощупать" продукт. Автотест тут бесполезен - вы ещё не знаете, что именно проверять.</div><div class="t-redactor__text">UX и юзабилити.</div><div class="t-redactor__text">Удобно ли расположены элементы? Понятен ли текст ошибки? Это оценивает человек, не скрипт.</div><div class="t-redactor__text">Одноразовые проверки.</div><div class="t-redactor__text">Заказчик попросил проверить конкретный сценарий. Писать автотест ради одного прогона - трата времени.</div><div class="t-redactor__text">Тестирование на ранних стадиях.</div><div class="t-redactor__text">Когда интерфейс меняется каждый день, автотесты ломаются быстрее, чем вы их пишете.</div><h2  class="t-redactor__h2">Что такое автоматизация и когда она окупается</h2><div class="t-redactor__text">Автоматизация - это код, который тестирует приложение вместо вас. Написали скрипт один раз, запускаете хоть 50 раз в день. Selenium открывает браузер, заполняет формы, кликает кнопки и сверяет результат с ожидаемым.</div><div class="t-redactor__text">Главная метрика здесь - ROI (возврат инвестиций). Написать автотест дороже, чем прогнать тест руками один раз. Но если этот тест нужно прогонять каждый день - автоматизация окупается за 2-3 недели.</div><div class="t-redactor__text">Конкретный пример. Регрессионный набор из 200 тест-кейсов. Вручную один QA проходит его за 3 рабочих дня. Автотесты проходят тот же набор за 40 минут. При еженедельных релизах экономия - 2.5 рабочих дня в неделю. За месяц это 10 рабочих дней одного инженера.</div><div class="t-redactor__text">Автоматизация окупается, когда:</div><div class="t-redactor__text">- Тест запускается регулярно (регрессия, smoke-тесты)</div><div class="t-redactor__text">- Интерфейс стабилен и не меняется каждую неделю</div><div class="t-redactor__text">- Есть чёткие входные и выходные данные</div><div class="t-redactor__text">- Тест включает много однотипных операций</div><div class="t-redactor__text">Автоматизация не окупается, когда:</div><div class="t-redactor__text">- Фича ещё в разработке и UI нестабилен</div><div class="t-redactor__text">- Тест запускается 1-2 раза за жизнь проекта</div><div class="t-redactor__text">- Проверка субъективная (визуал, удобство)</div><div class="t-redactor__text">- Стоимость поддержки автотеста выше стоимости ручного прогона</div><h2  class="t-redactor__h2">Пирамида тестирования: как распределить усилия</h2><div class="t-redactor__text">Пирамида тестирования - это модель, которая показывает, сколько тестов какого типа нужно писать. Снизу вверх:</div><div class="t-redactor__text">Unit-тесты (70%).</div><div class="t-redactor__text">Проверяют отдельные функции в коде. Пишут разработчики. Один unit-тест выполняется за миллисекунды. Самые быстрые и дешёвые.</div><div class="t-redactor__text">Интеграционные тесты (20%).</div><div class="t-redactor__text">Проверяют взаимодействие компонентов: API-запросы, связки сервисов, работу с базой данных. Пишут разработчики или AQA. Выполняются за секунды.</div><div class="t-redactor__text">E2E тесты (10%).</div><div class="t-redactor__text">Проверяют сценарий целиком: пользователь открыл сайт, зарегистрировался, оплатил заказ. Пишут AQA на Selenium или Playwright. Выполняются за минуты.</div><div class="t-redactor__text">Ошибка, которую допускают многие команды: перевернутая пирамида. 200 E2E тестов, 30 интеграционных, 0 юнитов. Результат - тесты идут часами, постоянно падают из-за нестабильных локаторов, команда тратит больше времени на поддержку тестов, чем на тестирование.</div><h2  class="t-redactor__h2">Чек-лист: автоматизировать или нет</h2><div class="t-redactor__text">Конкретный чек-лист. Если на 4+ вопроса ответ "да" - автоматизируйте:</div><div class="t-redactor__text">1. Тест запускается чаще одного раза в неделю?</div><div class="t-redactor__text">2. Сценарий стабилен и не менялся последний месяц?</div><div class="t-redactor__text">3. Есть чёткие ожидаемые результаты (число, текст, статус)?</div><div class="t-redactor__text">4. Тест включает больше 10 шагов?</div><div class="t-redactor__text">5. Тестовые данные можно генерировать программно?</div><div class="t-redactor__text">6. Релизы выходят чаще раза в месяц?</div><div class="t-redactor__text">7. В команде есть человек, который умеет писать автотесты?</div><div class="t-redactor__text">Последний пункт - критичный. Автоматизация без компетенции в команде превращается в мёртвый код. Тесты написали, через месяц они сломались, никто не чинит, все вернулись к ручному тестированию.</div><h2  class="t-redactor__h2">Инструменты: что учить в каждом направлении</h2><div class="t-redactor__text"><strong>Стек Manual QA:</strong></div><div class="t-redactor__text">- Jira / YouTrack - трекеры задач и багов</div><div class="t-redactor__text">- TestRail / Qase - управление тест-кейсами</div><div class="t-redactor__text">- Postman - тестирование API</div><div class="t-redactor__text">- DevTools - инспектирование элементов, сетевые запросы</div><div class="t-redactor__text">- Charles / Fiddler - перехват трафика</div><div class="t-redactor__text">- SQL - проверка данных в базе</div><div class="t-redactor__text"><strong>Стек AQA (Python):</strong></div><div class="t-redactor__text">- Python 3 - язык автотестов</div><div class="t-redactor__text">- Selenium / Playwright - управление браузером</div><div class="t-redactor__text">- pytest - фреймворк для запуска тестов</div><div class="t-redactor__text">- Allure - отчёты</div><div class="t-redactor__text">- Git - версионирование кода</div><div class="t-redactor__text">- Docker - изоляция тестового окружения</div><div class="t-redactor__text">- Jenkins / GitLab CI - запуск тестов в пайплайне</div><div class="t-redactor__text">Почему Python? Низкий порог входа, огромное комьюнити, большинство вакансий AQA в России - на Python. Java тоже востребована, но учить её дольше. Средний срок перехода из Manual в AQA: 3-6 месяцев при ежедневных занятиях по 1.5-2 часа.</div><h2  class="t-redactor__h2">Зарплаты: Manual QA vs AQA в цифрах</h2><div class="t-redactor__text">Разница в зарплатах ощутимая. Данные по России на начало 2026 года:</div><div class="t-redactor__text">Junior Manual QA: 50 000 - 90 000 руб.</div><div class="t-redactor__text">Junior AQA: 80 000 - 130 000 руб.</div><div class="t-redactor__text">Middle Manual QA: 100 000 - 170 000 руб.</div><div class="t-redactor__text">Middle AQA: 160 000 - 270 000 руб.</div><div class="t-redactor__text">Senior Manual QA: 180 000 - 280 000 руб.</div><div class="t-redactor__text">Senior AQA: 270 000 - 420 000 руб.</div><div class="t-redactor__text">Разница между мидл-мануальщиком и мидл-автоматизатором - 60 000-100 000 рублей в месяц. За год это 720 000 - 1 200 000 рублей. Ради такой суммы 4-6 месяцев обучения - разумная инвестиция.</div><div class="t-redactor__text">Но есть нюанс. Senior Manual QA с глубоким знанием предметной области (финтех, медтех, e-commerce) зарабатывает на уровне мидл-автоматизатора. Экспертиза в домене ценится высоко.</div><h2  class="t-redactor__h2">Частые ошибки при переходе в автоматизацию</h2><div class="t-redactor__text"><strong>"Автоматизирую всё подряд."</strong></div><div class="t-redactor__text">Нет. Начните с smoke-тестов - 10-15 критичных сценариев. Потом добавляйте регресс. Покрывать 100% - утопия.</div><div class="t-redactor__text"><strong>"Не разобрался в ручном, иду сразу в AQA."</strong></div><div class="t-redactor__text">Автотест проверяет бизнес-логику. Если вы не понимаете, как тестировать руками - вы напишете автотест, который проверяет не то. Минимум 3 месяца ручного тестирования - это фундамент.</div><div class="t-redactor__text"><strong>"Скопировал код из туториала и работает."</strong></div><div class="t-redactor__text">Работает сейчас. Через неделю сломается, и вы не поймёте почему. Изучайте язык программирования как следует, а не надёрганные куски.</div><h3  class="t-redactor__h3">Вопросы и ответы</h3><div class="t-redactor__text"><strong>Можно ли работать ручным тестировщиком и зарабатывать хорошо?</strong></div><div class="t-redactor__text">Да. Senior Manual QA в финтехе или крупном e-commerce получает 200 000-280 000 рублей. Но таких позиций меньше, конкуренция за них выше. Знание автоматизации расширяет выбор вакансий.</div><div class="t-redactor__text"><strong>Через сколько месяцев ручного тестирования переходить в автоматизацию?</strong></div><div class="t-redactor__text">Оптимально - через 3-6 месяцев. К этому моменту вы понимаете процесс тестирования, умеете писать тест-кейсы и знаете, какие сценарии повторяются. Это и будут кандидаты на автоматизацию.</div><div class="t-redactor__text"><strong>Какой язык учить для автоматизации: Python или Java?</strong></div><div class="t-redactor__text">Python - быстрее старт, больше вакансий для джуниоров. Java - шире стек, чаще встречается в энтерпрайзе. Для первого языка берите Python.</div><h3  class="t-redactor__h3">Как выбрать своё направление</h3><div class="t-redactor__text">Решение зависит от трёх факторов: что вам интереснее, где вы сейчас и куда хотите прийти через год.</div><div class="t-redactor__text">Если вы только входите в QA - начинайте с ручного тестирования. Это база. Без неё автоматизация превращается в бессмысленное написание кода.</div><div class="t-redactor__text">Если вы мануальщик с опытом от полугода и чувствуете потолок - самое время двигаться в автоматизацию. Python + Selenium + pytest - стандартный стек, который покрывает 80% вакансий.</div><div class="t-redactor__text">У меня есть программы для обоих направлений: курс Fullstack тестирования для старта и менторство по автоматизации на Python для перехода. На бесплатной консультации разберём ваш уровень и составим индивидуальный план. Без обязательств, без продаж в лоб. </div><div class="t-redactor__text">Записаться на консультацию <a href="https://t.me/yakorqa">https://t.me/yakorqa</a></div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>SQL для QA инженера: JOIN, SELECT и проверка данных</title>
      <link>https://yakorqa.ru/tpost/sql-dlya-qa-join-zapros</link>
      <amplink>https://yakorqa.ru/tpost/sql-dlya-qa-join-zapros?amp=true</amplink>
      <pubDate>Fri, 27 Feb 2026 14:50:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild6166-6132-4263-b933-663264346430/ZF2f0f7DQSn20NJhw1ZF.jpg" type="image/jpeg"/>
      <description>Учим SQL для тестировщика: SELECT, WHERE, JOIN, GROUP BY. Практические запросы для проверки данных в базе. Примеры из реальной работы QA.</description>
      <turbo:content><![CDATA[<header><h1>SQL для QA инженера: JOIN, SELECT и проверка данных</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6166-6132-4263-b933-663264346430/ZF2f0f7DQSn20NJhw1ZF.jpg"/></figure><h2  class="t-redactor__h2">SQL для QA: JOIN запросы и проверка данных</h2><div class="t-redactor__text">Тестировщик открыл баг: "При оформлении заказа отображается неправильная цена". Разработчик спрашивает: "А в базе какая цена?" И тут два варианта. Первый - QA идёт к разработчику и просит посмотреть. Второй - открывает терминал, пишет SELECT и за 10 секунд получает ответ.</div><div class="t-redactor__text">SQL - это язык для работы с базами данных. Для QA инженера это инструмент проверки данных: правильно ли записался заказ, совпадает ли цена на фронте с ценой в базе, не потерялись ли данные при импорте. Без SQL тестировщик видит только интерфейс. С SQL - видит всю картину.</div><div class="t-redactor__text">В этой статье разберём именно то, что нужно QA: SELECT, WHERE, JOIN и конкретные приёмы проверки данных. Без теории ради теории - только практика.</div><h2  class="t-redactor__h2">Базовые запросы: SELECT и WHERE</h2><div class="t-redactor__text">Всё начинается с SELECT. Это команда для получения данных из таблицы.</div><div class="t-redactor__text">SELECT * FROM users;</div><div class="t-redactor__text">Этот запрос вернёт все строки и все столбцы из таблицы users. Звёздочка (*) означает "все столбцы".</div><div class="t-redactor__text">На практике все столбцы нужны редко. <strong>Выбирайте конкретные:</strong></div><div class="t-redactor__text">SELECT id, name, email FROM users;</div><div class="t-redactor__text">WHERE добавляет фильтрацию:</div><div class="t-redactor__text">SELECT id, name, email FROM users WHERE status = 'active';</div><div class="t-redactor__text">Этот запрос вернёт только активных пользователей.</div><div class="t-redactor__text"><strong>Операторы фильтрации, которые нужны каждый день:</strong></div><div class="t-redactor__text">= равно</div><div class="t-redactor__text">!= или &lt;&gt; не равно</div><div class="t-redactor__text">&gt; &lt; &gt;= &lt;= сравнение</div><div class="t-redactor__text">BETWEEN x AND y диапазон</div><div class="t-redactor__text">IN (a, b, c) одно из значений</div><div class="t-redactor__text">LIKE '%текст%' поиск по части строки</div><div class="t-redactor__text">IS NULL / IS NOT NULL проверка на пустое значение</div><div class="t-redactor__text"><strong>Пример из реальной работы QA. Вам нужно проверить, что все заказы за последнюю неделю имеют статус:</strong></div><div class="t-redactor__text">SELECT id, status, created_at FROM orders</div><div class="t-redactor__text">WHERE created_at &gt;= '2026-02-21'</div><div class="t-redactor__text">AND status NOT IN ('completed', 'cancelled');</div><div class="t-redactor__text"><strong>Если запрос вернул строки - значит есть заказы в непонятном статусе. Это потенциальный баг.</strong></div><h2  class="t-redactor__h2">ORDER BY и LIMIT: сортировка и ограничение</h2><div class="t-redactor__text">ORDER BY сортирует результат:</div><div class="t-redactor__text">SELECT * FROM orders ORDER BY created_at DESC;</div><div class="t-redactor__text">DESC - от новых к старым. ASC (по умолчанию) - от старых к новым.</div><div class="t-redactor__text">LIMIT ограничивает количество строк:</div><div class="t-redactor__text">SELECT * FROM orders ORDER BY created_at DESC LIMIT 10;</div><div class="t-redactor__text">Последние 10 заказов. Полезно, когда в таблице миллионы строк и SELECT * повесит базу.</div><div class="t-redactor__text">Комбинация ORDER BY + LIMIT - ваш основной инструмент для быстрых проверок: "Покажи последние 5 регистраций", "Покажи самый дорогой заказ".</div><h2  class="t-redactor__h2">GROUP BY и агрегатные функции</h2><div class="t-redactor__text"><strong>GROUP BY группирует строки для подсчёта статистики. Агрегатные функции работают с группами:</strong></div><div class="t-redactor__text">COUNT(*) - количество строк</div><div class="t-redactor__text">SUM(column) - сумма</div><div class="t-redactor__text">AVG(column) - среднее</div><div class="t-redactor__text">MIN(column) - минимум</div><div class="t-redactor__text">MAX(column) - максимум</div><div class="t-redactor__text"><strong>Пример: сколько заказов в каждом статусе?</strong></div><div class="t-redactor__text">SELECT status, COUNT(*) as cnt</div><div class="t-redactor__text">FROM orders</div><div class="t-redactor__text">GROUP BY status;</div><div class="t-redactor__text"><strong>Результат</strong>:</div><div class="t-redactor__text">completed 1250</div><div class="t-redactor__text">pending 43</div><div class="t-redactor__text">cancelled 87</div><div class="t-redactor__text">processing 12</div><div class="t-redactor__text"><strong>Если вы видите 500 заказов в статусе "processing" при норме 10-15 - что-то сломалось.</strong></div><div class="t-redactor__text">HAVING фильтрует результаты после группировки:</div><div class="t-redactor__text">SELECT user_id, COUNT(*) as order_count</div><div class="t-redactor__text">FROM orders</div><div class="t-redactor__text">GROUP BY user_id</div><div class="t-redactor__text">HAVING COUNT(*) &gt; 100;</div><div class="t-redactor__text"><strong>Пользователи с более чем 100 заказами. Может быть тестовый аккаунт, а может - баг с дублированием.</strong></div><h2  class="t-redactor__h2">JOIN: объединение таблиц</h2><div class="t-redactor__text"><strong>JOIN - самая важная тема для QA после SELECT.</strong> Данные в базе разложены по таблицам: пользователи отдельно, заказы отдельно, товары отдельно. Чтобы собрать полную картину, таблицы нужно объединить.</div><div class="t-redactor__text">INNER JOIN - пересечение</div><div class="t-redactor__text"><strong>Возвращает строки, которые есть в обеих таблицах:</strong></div><div class="t-redactor__text">SELECT u.name, o.id as order_id, o.total</div><div class="t-redactor__text">FROM users u</div><div class="t-redactor__text">INNER JOIN orders o ON u.id = o.user_id;</div><div class="t-redactor__text"><strong>Покажет пользователей, у которых есть заказы. Пользователи без заказов и заказы без пользователей - не попадут.</strong></div><div class="t-redactor__text">LEFT JOIN - все из левой таблицы</div><div class="t-redactor__text"><strong>Возвращает все строки из левой таблицы, даже если в правой нет совпадений:</strong></div><div class="t-redactor__text">SELECT u.name, o.id as order_id</div><div class="t-redactor__text">FROM users u</div><div class="t-redactor__text">LEFT JOIN orders o ON u.id = o.user_id;</div><div class="t-redactor__text"><strong>Покажет всех пользователей. У тех, кто не делал заказов, в столбце order_id будет NULL.</strong></div><div class="t-redactor__text"><strong>Это мощный приём для QA. Хотите найти пользователей без заказов?</strong></div><div class="t-redactor__text">SELECT u.name, u.email</div><div class="t-redactor__text">FROM users u</div><div class="t-redactor__text">LEFT JOIN orders o ON u.id = o.user_id</div><div class="t-redactor__text">WHERE o.id IS NULL;</div><div class="t-redactor__text"><strong>Если среди них есть пользователи, зарегистрированные месяц назад и с подтверждённой оплатой - это баг: деньги списали, заказ не создался.</strong></div><div class="t-redactor__text">RIGHT JOIN и FULL JOIN</div><div class="t-redactor__text">RIGHT JOIN - зеркало LEFT JOIN, все строки из правой таблицы. На практике используется редко: проще поменять таблицы местами и написать LEFT JOIN.</div><div class="t-redactor__text">FULL JOIN - все строки из обеих таблиц. Полезен для поиска рассинхронизации: записи есть в одной системе, но нет в другой.</div><h2  class="t-redactor__h2">Практические запросы для QA</h2><div class="t-redactor__text"><strong>Вот конкретные запросы, которые QA используют каждый день:</strong></div><div class="t-redactor__text">Проверка дублей:</div><div class="t-redactor__text">SELECT email, COUNT(*) as cnt</div><div class="t-redactor__text">FROM users</div><div class="t-redactor__text">GROUP BY email</div><div class="t-redactor__text">HAVING COUNT(*) &gt; 1;</div><div class="t-redactor__text"><em>Если email уникален - запрос ничего не вернёт. Если вернул строки - баг в валидации регистрации.</em></div><div class="t-redactor__text"><strong>Проверка целостности данных:</strong></div><div class="t-redactor__text">SELECT o.id</div><div class="t-redactor__text">FROM orders o</div><div class="t-redactor__text">LEFT JOIN users u ON o.user_id = u.id</div><div class="t-redactor__text">WHERE u.id IS NULL;</div><div class="t-redactor__text"><em>Заказы без пользователя. Если такие есть - нарушена целостность данных.</em></div><div class="t-redactor__text"><strong>Сравнение сумм:</strong></div><div class="t-redactor__text">SELECT o.id, o.total,</div><div class="t-redactor__text">  SUM(oi.price * oi.quantity) as calculated_total</div><div class="t-redactor__text">FROM orders o</div><div class="t-redactor__text">JOIN order_items oi ON o.id = oi.order_id</div><div class="t-redactor__text">GROUP BY o.id, o.total</div><div class="t-redactor__text">HAVING o.total != SUM(oi.price * oi.quantity);</div><div class="t-redactor__text"><em>Находит заказы, где сумма в заголовке не совпадает с суммой позиций. Классический баг в интернет-магазинах</em>.</div><div class="t-redactor__text"><strong>Поиск аномалий по времени:</strong></div><div class="t-redactor__text">SELECT DATE(created_at) as day, COUNT(*) as registrations</div><div class="t-redactor__text">FROM users</div><div class="t-redactor__text">GROUP BY DATE(created_at)</div><div class="t-redactor__text">ORDER BY registrations DESC</div><div class="t-redactor__text">LIMIT 10;</div><div class="t-redactor__text"><em>Дни с аномально высокой регистрацией. Может быть маркетинговая акция, а может - бот-атака.</em></div><div class="t-redactor__text"><strong>Проверка статусных переходов:</strong></div><div class="t-redactor__text">SELECT * FROM orders</div><div class="t-redactor__text">WHERE status = 'delivered'</div><div class="t-redactor__text">AND paid_at IS NULL;</div><div class="t-redactor__text"><em>Доставленные, но не оплаченные заказы. Если бизнес-логика требует оплату до доставки - это баг.</em></div><h2  class="t-redactor__h2">Частые ошибки новичков в SQL</h2><div class="t-redactor__text"><strong>SELECT * в продакшн-базе</strong></div><div class="t-redactor__text">Таблица с миллионом строк. SELECT * без WHERE и LIMIT - и база зависла на 5 минут. Всегда добавляйте LIMIT при первом запросе к незнакомой таблице.</div><div class="t-redactor__text"><strong>Путаница WHERE и HAVING</strong></div><div class="t-redactor__text">WHERE фильтрует строки до группировки. HAVING - после. WHERE status = 'active' GROUP BY city - сначала отфильтрует активных, потом сгруппирует по городам. HAVING COUNT(*) &gt; 10 - сначала сгруппирует, потом отфильтрует группы.</div><div class="t-redactor__text"><strong>Забыли про NULL</strong></div><div class="t-redactor__text">WHERE status != 'cancelled' НЕ вернёт строки, где status = NULL. NULL - это не значение, а отсутствие значения. Правильно: WHERE status != 'cancelled' OR status IS NULL.</div><div class="t-redactor__text"><strong>JOIN без понимания связей</strong></div><div class="t-redactor__text">Прежде чем писать JOIN, поймите связи между таблицами. Один пользователь - много заказов (один-ко-многим). Один заказ - много товаров (один-ко-многим через order_items). Неправильный JOIN даст дублирование строк или потерю данных.</div><h2  class="t-redactor__h2">Где практиковать SQL</h2><div class="t-redactor__text">Теория без практики в SQL бесполезна. Вот конкретные ресурсы:</div><div class="t-redactor__text">- sql-ex.ru - задачи от простых к сложным, классика для подготовки к собеседованиям</div><div class="t-redactor__text">- leetcode.com/problemset/database - SQL-задачи с проверкой</div><div class="t-redactor__text">- pgexercises.com - интерактивные упражнения на PostgreSQL</div><div class="t-redactor__text">- mode.com/sql-tutorial - туториал с реальными данными</div><div class="t-redactor__text">Минимальная программа для QA: решите 30-40 задач на sql-ex.ru (разделы SELECT, JOIN, GROUP BY). Этого хватит для 90% рабочих ситуаций и собеседований.</div><h2  class="t-redactor__h2">Вопросы и ответы по SQL для QA</h2><div class="t-redactor__text"><strong>Какой SQL нужен тестировщику: MySQL, PostgreSQL или другой?</strong></div><div class="t-redactor__text">Синтаксис базовых запросов одинаков везде. SELECT, JOIN, WHERE, GROUP BY работают и в MySQL, и в PostgreSQL, и в MS SQL. Различия начинаются в продвинутых функциях: оконные функции, CTE, специфичные типы данных. Для старта язык значения не имеет.</div><div class="t-redactor__text"><strong>Обязательно ли учить SQL для первой работы в QA?</strong></div><div class="t-redactor__text">Для Junior Manual QA - желательно, но не блокирует. Для Middle и выше - обязательно. На собеседованиях SQL спрашивают в 7 из 10 компаний. Базовый уровень осваивается за 2-3 недели ежедневных занятий по часу.</div><div class="t-redactor__text"><strong>Можно ли случайно удалить данные в рабочей базе?</strong></div><div class="t-redactor__text">Да, если есть права на запись. Поэтому на проде QA обычно получает read-only доступ. На тестовых стендах - полный доступ. Золотое правило: перед DELETE или UPDATE всегда сначала запустите SELECT с тем же WHERE и убедитесь, что выбраны правильные строки.</div><h2  class="t-redactor__h2">SQL как ступень роста в QA</h2><div class="t-redactor__text">SQL отделяет начинающего тестировщика от уверенного. С SQL вы не зависите от разработчика при проверке данных, быстрее локализуете баги и можете аргументировать свои баг-репорты конкретными данными из базы.</div><div class="t-redactor__text">Освоить базовый SQL для QA можно за 2-3 недели. Это одна из самых быстро окупаемых инвестиций в карьере тестировщика - и на собеседованиях, и в ежедневной работе.</div><div class="t-redactor__text">Если хотите изучать SQL и другие инструменты QA с ментором, который объяснит на реальных примерах - у меня есть индивидуальное менторство. Разберём ваш уровень, составим план обучения и будем двигаться в вашем темпе. </div><div class="t-redactor__text">Записаться на бесплатную консультацию: </div><div class="t-redactor__text"><a href="https://t.me/yakorqa">https://t.me/yakorqa</a></div>]]></turbo:content>
    </item>
  </channel>
</rss>
