Сергей Лебедев | QA
5.36K subscribers
141 photos
74 videos
2 files
164 links
QA Lead в big tech компании. Делюсь своим опытом в тестировании, составлении резюме, собесам и росту в карьере. Подпишись 🤗
youtube:
https://www.youtube.com/@qabigtech
Чат канала https://t.me/+NT-IOeLALxszN2Zi
Автор @serzh52
Download Telegram
Я к вам с отличными новостями по поводу завтрашней встречи!

Мы с ребятами из SQA договорились дополнительно разыграть онлайн-билет на конференцию, в октябре, среди участников эфира. 😅

Условия:
1. Быть подписанным на этот канал: https://t.me/qabigtech и на группу SQAdays: https://t.me/sqadays.
2. Написать свой вопрос к встрече под этим постом для меня или организаторов.
3. Быть на прямом эфире!

Поэтому подписывайтесь, пишите свои вопросы, и увидимся завтра в 19:00! 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍4🔥43
Media is too big
VIEW IN TELEGRAM
Финально допричесываю презентацию🎉

Я расскажу весь свой спикерский опыт, пройдемся от поиска идеи до непосредственного выступления на сцене!😅

Обязательно приходите, стартуем через 30 минут

ссылка на эфир
Please open Telegram to view this post
VIEW IN TELEGRAM
5🤝22
Live stream finished (2 hours)
This media is not supported in your browser
VIEW IN TELEGRAM
А у вас было такое «погружение» на новой работе ?🙀

Чет неделя трудная выдалась, а как у вас? Скидывайте что вас порадовало на неделе, в комментарии, пора выдохнуть и посмеяться 🎉

Всех с наступающими выходными 😅

#мемница
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣139💯2😁11
Media is too big
VIEW IN TELEGRAM
"Если ты не автоматизируешь, зачем знать про автоматизацию?"

Так мне ответили на собеседовании, когда я задал стандартный вопрос: "Что можно автоматизировать, а что нельзя?"

Мне кажется, это БАЗА. Даже если на проекте ещё нет автотестов, возможно, с тебя они как раз и начнутся. Автоматизация — это не просто модное слово, и внедрять её нужно не потому, что так модно, а потому что это способ снизить рутину ручных проверок и избежать проблем типа: "Я недоглядел!" и "Ой, блин, пропустил!", когда в тысячный раз выполняешь одни и те же тесты.🙀


И, конечно, нельзя автоматизировать всё. Во-первых, это накладно и потребует вдвое большего объёма инвестиций на поддержку, во-вторых, сложно и иногда невозможно автоматизировать некоторые проверки, например, проверку удобства использования.😺

Поэтому важно держать баланс между автоматизацией и ручным тестированием на проекте, и главное — не писать автотесты "в стол".

Потому что и такие истории бывают!

Автотесты пишут, но при этом они не интегрированы в пайплайны и запускаются у одного какого-то QA/DEV, а остальная команда никак с автотестами не взаимодействует!

Поэтому автоматизация должна быть прозрачной!😅

И бизнес готов платить за это, потому что ручной труд QA специалистов не намного дешевле зарплаты разработчика, а задач у QA, помимо "нажимания кнопок", выше крыши: анализ требований, составление стратегии и плана тестирования, анализ результатов, а также внедрение и влияние на метрики обеспечения качества. Всё это ценно, и пока с этим не может справиться ИИ.

Поэтому базовое понимание процесса автоматизации у QA должно быть, даже если автоматизацию выполняют разработчики. Что именно они автоматизируют, понимать надо, а то мало ли что они там покрывают🤔

По традиции, с вас 🎉, если согласны, а если нет — пишите в комментариях, с чем не согласны, поболтаем.❤️

#воскрессобес
Please open Telegram to view this post
VIEW IN TELEGRAM
48👍5🔥31
Please open Telegram to view this post
VIEW IN TELEGRAM
83👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Уже больше двухсот голосов, большое вам спасибо 😅

Кто еще не голосовал, проголосуйте, пожалуйста, ваш голос очень важен 👍

Для меня это важно в первую очередь потому, что после ревью у меня прибавилась зона ответственности и пришло +3 QA-инженера в команду. Таким образом, у меня теперь будет 11 человек, что уже немало.

И я уже сейчас чувствую, что начинают появляться косяки, и мне это не нравится 😡


Мне повезло — все мои руководители были крутыми, со своими приколами, конечно, но поругать их особенно не за что!

Но я слышал разные истории про руководителей, и мне не хочется допустить эти ошибки, своих хватает 😂

Кстати, в комментариях коллеги также делились историями про своих руководителей, у которых нет негативных качеств, а только положительные!


Этот опыт тоже важен, поэтому, пожалуйста, пройдите еще один опрос "За что вы цените своего руководителя". Как и в прошлый раз, проголосовать можно только за одно качество, чтобы не получить размытых цифр, как при мультивыборе, и вы голосовали только за то, что действительно важно.

Когда соберем данные, я их использую для самоанализа и сделаю доклад, где соберу свой опыт становления лидом, что прокачивал, что недостаточно прокачивал и вообще "Что качать, чтобы стать лидом и не выгореть".

Ставьте 🎉, если горите, но не выгораете, и голосуйте в опросе ниже:
Please open Telegram to view this post
VIEW IN TELEGRAM
105👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍2
Ровно год назад я опубликовал интервью с Димой, моим коллегой, который в том году пришёл к нам в Лавку 💙 без опыта, стажёром тестировщиком, а год спустя он уже стал Middle QA!😅

В новом видео на канале можно узнать о пути Димы от стажёра до мидла, его типичном рабочем дне, о процессах и команде, а также о плюсах и минусах работы в Яндексе: Смотрите на Ютуб.👍

Для начинающих тестировщиков Дима поделился полезными ссылками, которые сам использовал при обучении и развитии в профессии QA:
- QA-библия
- Бесплатный курс по тестированию на Stepik
- Тренажер начинающего тестировщика (Задача с собеседований)
- Десятичасовой курс по JavaScript

Диман, ты — красава! В смысле, очень красивый, ну и коллега вроде норм. Продолжай в том же духе, рад с тобой работать!❤️


Ставьте 🎉, если понравился формат. В следующем видео — обзор офиса, как и обещал!
Please open Telegram to view this post
VIEW IN TELEGRAM
38❤‍🔥86🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
А как у вас проходят встречи по проектам ?🤔

#мемница а это значит, можно немного расслабится, накидайте смешного в комментарии, плиииз🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27🤣9👍22
Media is too big
VIEW IN TELEGRAM
Сегодня 14-й день моего погружения в автоматизацию!🎉

За это время я успел написать 2 автотеста. Один уже на проде, а второй проходит через муки код-ревью.

На самом деле тесты на нашем проекте писать несложно благодаря прекрасной организации кода автотестов с помощью Page Object Model.

У каждой страницы приложения есть отдельная папка с тестом, а также вынесены фикстуры, хелперы и весь низкоуровневый код.

Тесты читать — одно удовольствие. Даже без знаний кода достаточно базового английского!😅


Это нереально упрощает вход для новых автоматизаторов, но вместе с этим и усложняет его!😺

Я в начале сказал про муки код-ревью. Оно у нас достаточно жесткое. Нельзя писать автотесты как попало, нужно опираться на КОДЕКС — свод правил, как писать автотесты правильно!

Несоответствие кодексу сразу выявляется AI-ревьюером, который проверяет код на соответствие требованиям. Да, иногда он галлюцинирует, но в большинстве своем выдает дельные замечания!

Приятно работать там, где так заботливо подходят к организации автоматизации, ведь так бывает далеко не всегда!🤔


Поэтому, просматривая записи собеседований автоматизаторов и мок-собесы, я постоянно натыкался на вопросы про POM.

Бизнес заинтересован в том, чтобы даже тесты были быстро читаемыми и легко поддерживаемыми для их масштабирования и поддержки.

Если вы хотите тоже погрузиться в автоматизацию, этой теме нужно посвятить отдельное время в программе обучения. Ведь это не просто Best Practice — это то, что точно спросят на собеседовании.🎉

#воскрессобес
Please open Telegram to view this post
VIEW IN TELEGRAM
119👍5🔥2
Наконец-то завершил видео про нижегородский офис Яндекса.

Также поделился своей историей о том, почему выбрал именно офисный формат, хотя есть возможность удаленной работы.

Видео уже на канале. Приятного просмотра:
Смотреть видео

Как вам видео? Пожалуйста, дайте обратную связь. Сейчас готовлю видео про офис "Лавки" в Москве и хочу сделать его еще лучше!

Как только пост наберет 100 реакций 🎉, выпускаю следующее видео про офис.
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍173🔥2
Вчера отметили выпускной Летней Школы Обеспечения Качества Яндекса 🎉

Три месяца пролетели, как миг, и за это время вы стали для меня по-настоящему родными людьми ❤️

Было сложно, я знаю, но вы справились, и я вами горжусь!


Что было:
• Пришло более 3000 заявок в школу.
• Ребята решили непростые отборочные задачи и прошли собеседование.
• Более 70 студентов зачислены после строгого отбора.
• За два месяца реализовали четыре полноценные проекта: автотесты на API, функциональные тесты, скринтесты и автотесты под Android и iOS.
• Писали на четырех языках программирования (Java, Kotlin, SWIFT, JavaScript).
• Меньше чем за месяц реализовали настоящий боевой проект вместе со студентами других школ (фронтенд- и бэкенд-разработчиками, менеджерами, аналитиками, девопсами и дизайнерами).

Над проектом трудились более 50 коллег (менторы, лекторы, собеседующие, менеджеры, методисты).

Вам тоже хочется сказать огромное спасибо, без вас бы ничего не получилось, это точно 🙏


Сейчас готовим портфолио студентов и начинаем нанимать, то есть работа над ШОКом не заканчивается, а наоборот выходит на самый важный этап!

Скоро проведем ретро и обсудим, что было круто, а что можно улучшить, чтобы в следующем году сделать школу еще более полезной для студентов 🎉

… Слезы радости
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥321612🔥3👍1😭1
Media is too big
VIEW IN TELEGRAM
20 день моего погружения в автоматизацию на TS+Playwright и сегодня хочу поговорить про ожидания !

Это головная боль автоматизаторов из прошлого, потому что в Selenium были только явные ожидания, которые нужно прописывать и про это душили на собесах. 😡


Базово в Selenium используется Polling-based подход:
Selenium постоянно опрашивает DOM каждые 500мс

В Playwright же используется Event-driven подход:
Playwright слушает события браузера и реагирует мгновенно

И это уже жирнючий плюс к скорости PW автотестов!


Подготовил для себя и вас памятку по ожиданиям в PW , сохрани чтобы не потерять :

Явные ожидания элементов на странице:
test('явные ожидания элементов', async ({ page }) => {
await page.goto('https://example.com')
// Ожидание появления элемента
await page.locator('#dynamic-content').waitFor()
// Ожидание видимости
await page.locator('.modal').waitFor({ state: 'visible' })
// Ожидание скрытия
await page.locator('.loading-spinner').waitFor({
state: 'hidden',
timeout: 5000
})
// Ожидание присутствия в DOM
await page.locator('#new-item').waitFor({ state: 'attached' })
// Ожидание удаления из DOM
await page.locator('#removed-item').waitFor({ state: 'detached' })
})

Ожидания страницы:
test('ожидания состояния страницы', async ({ page }) => {
await page.goto('https://example.com')
// Ожидание полной загрузки
await page.waitForLoadState('load')
// Ожидание завершения сетевых запросов
await page.waitForLoadState('networkidle')
// Ожидание готовности DOM
await page.waitForLoadState('domcontentloaded')
// Ожидание конкретного URL
await page.waitForURL('**/dashboard')
})

Ожидание API запросов: (работает из коробки и постоянно использую в АТ)
test('ожидания API запросов', async ({ page }) => {
// Ожидание конкретного запроса
const responsePromise = page.waitForResponse('**/api/users')
await page.locator('#load-users').click()
const response = await responsePromise
expect(response.status()).toBe(200)
// Ожидание запроса с условием
const apiResponse = page.waitForResponse(response =>
response.url().includes('/api/data') && response.status() === 200
)
})

Ожидания событий:
test('ожидания событий браузера', async ({ page }) => {
// Ожидание новой страницы/вкладки
const [newPage] = await Promise.all([
page.context().waitForEvent('page'),
page.locator('#open-new-tab').click()
])
// Ожидание скачивания файла
const [download] = await Promise.all([
page.waitForEvent('download'),
page.locator('#download-btn').click()
])
await download.saveAs('./downloads/' + download.suggestedFilename())
})

И кастомные ожидания с waitForFunction:
test('кастомные ожидания', async ({ page }) => {
await page.goto('https://example.com')
// Ожидание изменения количества элементов
await page.waitForFunction(() => {
return document.querySelectorAll('.item').length > 5
})
})


На собесах, вопросы про ожидания в автотестах тоже часто присутствуют, поэтому сохраняй, чтобы не забыть !

С вас 🎉 если было полезно!

#воскрессобес
Please open Telegram to view this post
VIEW IN TELEGRAM
255👍3🔥3
Когда ты погружаешься в автоматизацию тестирования или только думаешь в эту сторону, голова взрывается от кучи вопросов 🙀

Как подойти к обучению?
На что делать упор в первую очередь?
Как не допустить ошибок?


Поэтому в этот четверг, 28 августа, в 19:00 я позвал на прямой эфир Всеволода Егорова из Яндекс.Музыки — профессионального автоматизатора на TS+Playwright и лектора летней школы обеспечения качества.

Также рекомендую к прочтению его статью на Хабре
как обучить ручных тестировщиков автоматизации
на проекте — просто бомба!
👍


Трансляцию, думаю, провести в «Телемосте». Мои тесты показали, что он ловит даже на парковке работает, но если знаете живые сервисы для стрима — пишите в комментариях!

Приносите свои вопросы, и мы, как всегда, лампово расспросим Севу обо всём, что нужно знать новичку в автоматизации тестирования!

Ставь 🎉, если придёшь и интересны такие эфиры! Увидимся ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
25🔥4👍1
Хотели бы посмотреть на штаб-квартиру Яндекса изнутри?

Пока был в командировке, заснял для вас один день в «Красной Розе».


Заценить тут

• Сделал обзор корпусов Розы
• Показал, что находится внутри
• Заглянул в музей Яндекса
• И был свидетелем редкого явления — «схватки вежливости 2 роверов» (природа Москвы прекрасна😅)

Если понравилось, ставьте 🎉

И не забывайте про эфир завтра в 19:00, где зададим вопросы по автоматизации настоящему гуру Playwright — Всеволоду Егорову!
Please open Telegram to view this post
VIEW IN TELEGRAM
167🔥6🤬1
Это мы тестируем телемост на стабильность, тест говорит что все работает как надо!


Напоминаю что через час встречаемся на эфире 👍

Ссылка на прямой эфир (Телемост)

Мы зададим вопросы по автоматизации , гуру Playwright, прекрасному лектору и просто приятному человеку Всеволоду Егорову 😅

Короткая повестка:
🔹 Старт с Playwright+TS: что учить сначала и минимум в языке для уверенного написания автотестов.
🔹 Архитектура: структура проекта, когда реально нужен Page Object
🔹 Стабильность: ожидания, ретраи, борьба с flaky
🔹 Приоритизация: что автоматизировать и как быстро приносить пользу
🔹 Инструменты экосистемы: Allure, ESLint, CI
🔹 Карьера: план на 2–3 месяца, критерии «готовности» автоматизатора, на что смотрят на собеседованиях
🔹 Будущее Playwright: стоит ли делать ставку?

Приходите и со своими вопросами — зададим их в прямом эфире! Подключайтесь через час, не опаздывайте. И расскажите коллеге, которому это может быть полезно. Увидимся🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
114👍2🔥1
Media is too big
VIEW IN TELEGRAM
Пока делал проект по требованиям от заказчика, осознал как не просто бывает разработчикам…

Как вам результат? Получилось похоже или не по требованиям и надо переделать?

Всем прекрасных выходных 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
42🔥2114👍9
Сегодня моя старшая дочь пошла в первый класс 😅

Очень волнительный момент: как будто вчера сам пошёл в школу, а уже дочь провожаю…

Желаю тебе лёгкой учёбы: будет непросто, но у тебя всё получится! ❤️


Но что это я — это же праздник, поэтому поздравляю всех с Днём знаний! 🎉

А ещё у меня стартует осенняя арка с обучающим контентом.

🔵Будет выходить много видео и материалов по обучению профессии QA-инженера.
🔵Готовится видео с базой по тестированию.
🔵Видео по программированию для ручных тестировщиков.
🔵И гайд по автоматизации — с нуля до полноценного проекта.
🔵Ну и, конечно, будут видео с разборами вопросов на собеседованиях и по поиску работы.

Через две недели — в отпуск, и как раз смогу сконцентрироваться на контенте.


Ещё раз — всех с праздником, прекрасной недели! 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
5223👍14🔥2👏1
Media is too big
VIEW IN TELEGRAM
Сегодня 28 день моего погружения в автоматизацию 🎉

Если интересны ежедневные отчеты моего 60-дневного марафона по автотестам, можно приобрести доступ в закрытое сообществе: QA-Profi
Там я и коллеги помогаем с разбором резюме, поиском работы и ответами на все вопросы новичков в тестировании!


Сегодня хочу поговорить про проверки в Playwright

Потому что это спрашивают как на собесах, так и в работе без этого никуда!😺


Главное преимущество: проверки в Playwright - это не статичные сравнения, а динамические ожидания, которые подстраиваются под реальное поведение веб-приложений.

Playwright повторяет проверки каждые несколько миллисекунд, пока условие не выполнится или не истечет таймаут. Это исключает flaky тесты из-за временных задержек DOM.

А еще информативные ошибки - это отдельный кайф 😅


Вместо AssertionError: false Playwright показывает:
• Что ожидалось vs что получили
• Скриншот момента ошибки
• Путь к элементу и его текущее состояние
• Лог всех действий до ошибки

Собрал для вас шпаргалку по проверкам в Playwright:

Проверки текста :

// Точное совпадение
await expect(page.locator('h1')).toHaveText('Добро пожаловать');

// Частичное совпадение
await expect(page.locator('.error')).toContainText('Ошибка');

// Регулярки для сложных случаев
await expect(page.locator('#phone')).toHaveText(/^\+7\s\d{3}\s\d{3}-\d{2}-\d{2}$/);


Проверки состояний элементов:

await expect(page.locator('#submit')).toBeEnabled();
await expect(page.locator('#terms')).toBeChecked();
await expect(page.locator('.modal')).toBeVisible();


Проверки атрибутов и стилей:

await expect(page.locator('#link')).toHaveAttribute('href', '/dashboard');
await expect(page.locator('.btn')).toHaveClass('btn-primary');
await expect(page.locator('#error')).toHaveCSS('color', 'rgb(255, 0, 0)');


Проверка количества элементов:

await expect(page.locator('.product')).toHaveCount(12);
await expect(page.locator('.review')).toHaveCount({ gte: 5 }); // минимум 5


Проверки страницы:

await expect(page).toHaveURL(/.*dashboard.*/);
await expect(page).toHaveTitle('Личный кабинет');


Soft assertions (не останавливают тест):

await expect.soft(page.locator('#optional')).toBeVisible();
await expect.soft(page.locator('#another')).toHaveText('test');
// Тест продолжится даже если проверки упадут!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥166👍52