QA Family by Alexey – Telegram
QA Family by Alexey
1.55K subscribers
99 photos
6 videos
219 links
Команда:
- Иванов Алексей 2ГИС @alexey_qa
- Иванова Ксения Wink

Этот канал из моего лично трансформируется в канал онлайн сообщества QA Family

👥 Делаем митап @moscowqa
🎙Подкаст family-qa.mave.digital
Download Telegram
Фремворк vs библиотека 🙌

В чем разница между библиотекой и фреймворком?👀

Если коротко и просто👇

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

📌 Фреймворк — это уже целая структура, которая задаёт правила и порядок работы. Вы добавляете свой код внутрь этой структуры, но основная логика и жизненный цикл уже управляются фреймворком.


Представьте стройку 🔨
🛠 Библиотека — это как набор инструментов: молоток, пила, шуруповёрт. Вы решаете, какие из них и когда использовать.

🏠 Фреймворк — это как готовый каркас дома. Вам остаётся добавить окна, двери и мебель, но основные правила и процесс строительства уже заданы.


Playwright как пример:
Playwright сам по себе — это библиотека. Он предоставляет API для управления браузерами (запуск, навигация по страницам, работа с элементами). Вы решаете, как и где его использовать, а сам Playwright не навязывает структуру.

Playwright Test — это уже фреймворк. Он добавляет тестовый раннер, готовый жизненный цикл тестов, параллельный запуск, ассерты и отчёты. С ним вам не нужно думать о базовой организации тестов — фреймворк берёт это на себя.


Ключевое различие👇
В библиотеке вы управляете всем сами. В фреймворкевы следуете его правилам и структуре.

Какие еще примеры библиотеки/фреймворка знаете?🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
👎65🔥137👍2
Всем привет!🤓

Как вы знаете, у меня было много постов про js/ts. Так получилось, что теперь я буду писать на котлине, и, пока жду выхода, уже начал читать книгу о котлине. Для лучшего изучения и бОльшей практики, начал делать бэкенд для сайта MoscowQA, используя чат гпт (куда без него?)

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

Будет некоторые посты про котлин и мои открытия с ним в формате «о, прикинь, на котлине можно вот так»😲

Спасибо всем кто поддержал меня, кто-то рекомендовал на разные вакансии, вы лучшие!

Из первых открытий, kotlin можно компилить в js, и вот так писать на реакте в котлине
import react.*
import react.dom.*

external interface AppProps : Props {
var name: String
}

val App = FC<AppProps> { props ->
div {
h1 { +"Hello, ${props.name}!" }
p { +"This is a React component written in Kotlin!" }
}
}


А вы на чём пишите?✏️👀
Please open Telegram to view this post
VIEW IN TELEGRAM
👎54👍183🔥3
by lazy🤔
Как я писал ранее, сейчас я изучаю Kotlin, и для меня было много интересных открытий с этим языком.

Например, когда работаешь с тестами, нужно инициализировать большие наборы данных, к примеру, тестовых пользователей, сложные конфигурации страниц, загружаемые данные из базы и многое другое. Это может замедлить выполнение тестов.

📝Решение в Kotlin: by lazy
Этот подход позволяет откладывать создание объектов и данных до тех пор, пока они действительно не понадобятся.
Пример:
open class BaseTest {
// Ленивое создание страницы логина
protected val loginPage: LoginPage by lazy {
println("Инициализация страницы логина")
LoginPage(browser)
}

// Ленивое создание данных тестового пользователя
protected val testUser: User by lazy {
// Большой объект пользователя
User()
}

// Ленивое создание страницы дэшборда
protected val dashboardPage: DashboardPage by lazy {
DashboardPage(page)
}
}


Сравнение с TypeScript
TypeScript не имеет встроенного механизма для ленивой инициализации, но её можно реализовать вручную. Один из способов — использование геттеров (get).
Пример на TypeScript:
class LazyExample {
private _lazyValue?: string;

get lazyValue(): string {
if (!this._lazyValue) {
console.log("Инициализация свойства");
this._lazyValue = "Hello, TypeScript!";
}
return this._lazyValue;
}
}

const example = new LazyExample();
console.log("До первого доступа");
console.log(example.lazyValue); // Выполнится инициализация
console.log(example.lazyValue); // Значение берётся из кеша


😉Итог
✔️Если вы используете Kotlin, by lazy — это мощный инструмент, который делает код лаконичным и удобным для тестирования.
✔️В TypeScript вам нужно вручную управлять ленивой инициализацией через геттеры или функции. Это требует больше усилий, но предоставляет больше гибкости.

P.S. Если вы думаете, что я буду говорить только о преимуществах Kotlin, то нет. Меня уже знатно пригорело от него, особенно от пакетных менеджеров Kotlin/Java😅

Полезно? Ставьте 👍 👎
Please open Telegram to view this post
VIEW IN TELEGRAM
3👎58👍245😁4
This media is not supported in your browser
VIEW IN TELEGRAM
Plumber🧐

Если вам нужно тестировать разные системы очередей, такие как Kafka, RabbitMQ и другие, и вы любите делать это прямо в консоли, то Plumber — это инструмент, который вас приятно удивит.

Он позволяет⬇️
Проверять сообщения в реальном времени.
Отправлять сообщения в очереди.
Делать подписки и отслеживать потоки данных.
Легко передавать данные между системами.

https://github.com/streamdal/plumber?tab=readme-ov-file

Полезно? Ставьте 👍 👎

#tools
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎6310👍8🔥1
Websocket как устроен💡💡

Из истории про собеседование, пару раз спрашивали как устроен WebSocket


WebSocket это протокол двустороннего соединения между клиентом и сервером. В отличие от традиционного HTTP, где запросы инициируются клиентом, WebSocket позволяет обеим сторонам отправлять данные друг другу в любой момент.

💬 Этапы работы WebSocket
1️⃣ Установление соединения (Handshake).
Соединение начинается с обычного HTTP-запроса. Клиент отправляет запрос на сервер с просьбой перейти на протокол WebSocket. Запрос содержит специальные заголовки, включая Upgrade и Connection, которые указывают, что клиент хочет использовать WebSocket.

Пример HTTP-запроса от клиента:
GET /socket HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade


Если сервер поддерживает WebSocket, он ответит (101 Switching Protocols) и подтверждает переход на WebSocket-протокол.

Пример ответа сервера:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade


2️⃣ После успешного хендшейка соединение переключается с HTTP на WebSocket и соединение становится постоянным.
3️⃣ Клиент и сервер могут отправлять сообщения друг другу в обоих направлениях без необходимости повторного запроса или ожидания ответа.

🤔Для чего использовать?
Низкая задержка, что позволяет не устанавливать соединение для каждого сообщения.
Сообщения отправляются без дополнительного HTTP-заголовка, что делает их лёгкими.
Мгновенная передача данных.

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

😉Как тестировать?
1️⃣ В постмане или insomnia есть поддержка websockek.
2️⃣ Мне нравится делать в devtools об это я рассказывал тут.
3️⃣ А посмотреть какие запросы отправляет приложение можно в network в фильтре ws⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
2👎59👍367🔥5
Полезно? Ставьте 👍 👎
Please open Telegram to view this post
VIEW IN TELEGRAM
👎61👍361
Делаю доклад связанный с отчетами, а тут такую вкусняшку подвезли

https://github.com/microsoft/playwright/releases/tag/v1.51.0

Кто будет на heisenbug https://heisenbug.ru/talks/57de2defdad04622b3b1f8335ec32521 приходите, если вдруг нужен вкусный промик пишите
👍13
Ребята, привет!
Я обычно тут не пишу про мероприятия которые организую в рамках MoscowQA
Но если будет интересно, я решил попробовать сделать сообщество и в Санкт-Петербурге

[Санкт-Петербург] Moscow QA #10 x ЮMoney

Куда: Санкт-Петербург
Пискарёвский проспект, дом 2, корпус 2, бизнес-центр «Бенуа» этаж 6
Когда: 27 марта 18:30

Регистрация
https://moscowqa.timepad.ru/event/3277648/

Ссылка на онлайн трансляцию будет в день мероприятия, регистрация не нужна!
👍15👎2
😈Почувствуй боль и не повторяй моих ошибок!

Делаю сайт для MoscowQA, прикручиваю админку и решаю довериться советам ChatGPT... 👹

Что из этого вышло? ⬇️

1️⃣ Прошу его выбрать подходящий инструмент
2️⃣ Устанавливаю в проект
3️⃣ Получаю ошибку 😡
4️⃣ Кидаю ошибку ИИ, он предлагает решение
5️⃣ Переделываю по его совету
6️⃣ Возвращаюсь к пункту №3 🔄

И так я промучился 6-8 раз, бегая по кругу от ошибки к ошибке!

📖🤍 Открыл документацию инструмента, и оказалось, что проблема решается абсолютно по-другому, а не так, как советовал ChatGPT.

🪟 Вывод простой:
Используя новый инструмент, сначала проверь официальную доку, а не слепо доверяйся ИИ!

Не повторяйте моих ошибок, друзья! 😳
Please open Telegram to view this post
VIEW IN TELEGRAM
18😁16👍12🤯2👎1
Как выбрать тест-раннер для юнит-тестов?

При написании юнит-тестов на фронтенд одна из главных задач разработчика или QA — подобрать правильный тест-раннер

Что делает тест-раннер?
🌸 запускает тесты и управляет их выполнением
🌸собирает результаты и генерирует отчёты об успехах и ошибках
🌸поддерживает дополнительные возможности (mocking, snapshots, анализ покрытия кода)

Основные библиотеки
🟣 Ava — выделяется скоростью, так как запускает тесты параллельно в отдельных процессах.
🟣 Jest — славится универсальностью, простотой настройки, встроенными возможностями (скорее всего ваша команда его использует)
🟣 Vitest — сочетает совместимый с Jest API и мощь инфраструктуры Vite, что обеспечивает отличную производительность и нативную поддержку ESM/TypeScript.


Моя рекомендация — Vitest! Он объединил удобство Jest и современные технологии Vite, что делает лучшим выбором для новых проектов.

А какой тест-раннер используете у вас на проекте и почему?

#automation #tools

🧑‍💻 Больше проо фронтенд тестирования и не только
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥21
Решил немного сделать интерактивным контент
Кто знает термин vibe кодинг?
Anonymous Poll
17%
Я знаю, практикую
56%
Не знаю
27%
Я знаю,но не использую
Привет всем! 🤚
По голосованию видно, что не все знают, что такое vibe coding.

Что это такое
Новый подход к программированию, где код пишет ИИ. 🙃🙃 Ты просто говоришь на обычном языке (например, «сделай сайт с кнопкой»), а ИИ (типа ChatGPT или Cursor) генерирует готовый код. Это реально работает и уже меняет подход к разработке.


Что это значит для QA?🤔
Для тестировщиков это одновременно и упрощение, и усложнение.

Плюсы:
Код появляется быстрее. Например, я написал сайт с фронтом и бэком за 2 вечера (без ИИ месяц бы разбирался).

Минусы:
ИИ часто выдаёт код с кучей ошибок и неочевидных косяков. QA приходится вылавливать то, что раньше было на разработчике.

Какие неудобства появляются?
Качество кода: ИИ может сгенерить неоптимизированный или уязвимый код — нагрузка на тестирование растёт.
Отладка: Баги находить сложнее, потому что логика ИИ не всегда очевидна.
Зависимость от ИИ: Если инструмент глючит или недоступен, всё стопорится.
Контроль: QA теперь проверяет не только функционал, но и безопасность и архитектуру — задачи, которые раньше были на разработчиках.

Каким будет инженер будущего?
🔵 «Vibe coding» ведёт к тому, что один человек сможет стать экспертом сразу в нескольких областях. Представь: ты «программируешь» через ИИ, тестируешь, придумываешь дизайн и даже бизнес-логику. Границы между фронтендом, бэкендом и QA размываются.
🔵 Один специалист сможет заменить целую команду — так же, как раньше веб-разработчик был одновременно дизайнером, кодером и SEO-шником.
🔵 Но есть нюанс: обычный человек дорастёт до какого-то уровня и упрётся в потолок, а инженер будущего сможет стать экспертом во всём, если освоит работу с ИИ.👩‍🍳


Что нас ждёт?🤔
Скоро появится много новых стартапов. Нас ждёт взрыв идей и проектов!

В следующем посте поговорим о том какие для этого есть инструменты

А вы что думаете по этому поводу? Поделитесь мнением в комментариях 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
1👎534👍4
Forwarded from Moscow QA
Media is too big
VIEW IN TELEGRAM
🥹 Всем привет! В выходные мы были на крутой конфе — Heisenbug, и я вспомнил, как в самом начале своей карьеры в ИТ мне было сложно попасть на такие мероприятия. А пообщаться с крутыми ребятами очень хотелось!

Когда я об этом рассказал Артему, он сразу предложил: "А давай сделаем что-то своё, открытую активность, где каждый сможет задать вопрос и получить ответ!" — И вот мы здесь 🧡

🔍 На старте хотим поднять тему отчётов в автотестах.

💬 Напишите в комментариях, что вам интересно обсудить:
— Какой репорт лучше использовать?
— Как визуализировать падения?
— Как сделать отчёт понятным не только тестировщику, но и разработчику или менеджеру?
— Или любые ваши вопросы по теме!

Котики, мы стараемся сделать для вас что-то классное и экспериментируем с форматами. Если формат зайдёт — будем продолжать, звать гостей, обсуждать другие темы и делать тусовку ещё теплее и полезнее ❤️

Так что проявляйте активность — очень ждём ваши вопросы и идеи в комментариях 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👎35🔥13👍64
Как начать автоматизировать?

Вокруг автоматизации крутится много мифов и пугающих стереотипов. Говорят, что автоматизация — это сложно, долго и дорого!

Но в этом есть лишь часть правды. Для того чтобы начать автоматизировать, нужно просто НАЧАТЬ АВТОМАТИЗИРОВАТЬ!

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


Практика — это самое главное, поэтому мы с
Алексеем Ивановым, спикером конференций SQA Days и Heisenbug, автором канала @dev_qa, проведем прямой эфир/воркшоп 17 апреля в 19:00 в этом телеграм-канале.

Мы напишем с нуля первые автотесты на самом популярном на текущий момент стеке
JS/TS и Playwright.

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

А еще ты узнаешь:

- Что спрашивают у автоматизаторов на собеседовании в 2025 году?
- Как готовиться к собеседованиям?
- Нужно ли знать алгоритмы?
И сколько зарабатывают автоматизаторы в 2025 году!

Приходи и ставь 🔥если интересна тема автоматизации и подписывайся на Лешин канал @dev_qa там ВСЁ об автоматизации тестирования 😻
🔥21👍43
Когда у тебя нету тайм-менеджмента, бывают такие ситуевены 😁

И потом надо как то все успеть

https://news.1rj.ru/str/dev_qa/254
https://news.1rj.ru/str/moscowqa/176


Все таки пора вести календарь
😁9🤯1
💻 Хотите попробовать вайб “кодить с ИИ”?

1⃣ Инструменты авто-дополнения
🟡GitHub Copilot
🟡Amazon CodeWhisperer
🇷🇺 РФ-аналоги (по ощущениям отстают на 2+ года):
🟡gigacode
🟡Yandex Assistant

2⃣ Чаты боты
🟡ChatGPT
🟡Grok (от X)
🟡Claude
🟡Gemini
🟡Perplexity
🟡DeepSeek

3⃣ Агенты / ассистенты
Работают за тебя 🧠

🧪 Пробовал сам:
🟡Cursor — противоречивые впечатления, от безумно круто, до а не все так просто
🧩 Другие (пока не пробовал, привел для примера):
🟡Cody
🟡Aider

Вместо вывода:

✍️ Хочешь сам писать код? — бери инструменты автодополнения
Хочешь понять / объяснить / спросить? — бери тут чат боты в помощь
🏗 Хочешь отключить мозг и нажимать кнопку принять, то что написал ИИ за тебя? — пробуй Cursor

Скоро сделаю практические посты о том как я применял ИИ в тестирование на практике!


Если интересна тема вайб кодинга и применения его в QA поставь 🔥или 👍

#automation #tools #ai #trends
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥21👍143🤯2
Тестировщики, общий сбор!

Мы часто видим исследования про разработчиков, продактов, аналитиков… А про QA? Почти ничего.

Пора это исправить.

Мы запускаем исследование сообщества QA, чтобы разобраться:
— что нас радует и раздражает,
— какие инструменты и практики мы выбираем,
— как меняется наша роль и работа.

Присоединяйся! Это важно и интересно 🔥

Пройти опрос → https://qa-25.testograf.ru

В анкете 45 вопросов, потребуется 15–20 минут времени.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85🔥4😁2🤯1
🔧 Метапрограммирование в действии

🔍 На новой работе при погружении в проект обнаружил, что в 2000+ тестах отсутствует привязка к Allure ID. В свободное время я быстро написал скрипт, который исправляет это автоматически.

🚀 Что нам нужно сделать?
1. 🗂 Собрать список тестов — пройтись по папкам и найти все файлы с тестами
2. 🛠 Запросить Allure TestOps API по названию теста и получить нужный ID
3. ✒️ Вставить над каждым тестом декоратор @allure.id(<ID>) и добавить импорт

⚡️ Итерация 1: Быстрый старт на регулярках
Сначала с помощью LLM (GPT) набросил решение на регулярных выражениях

⚠️ Выскочили проблемы:
🔵 Регулярка ловила строки внутри комментариев
🔵 Импорт вставлялся некорректно

🌳 Итерация 2: Надёжное решение через AST
Переписал скрипт на основе AST — теперь он устойчив к любым краевым случаям!

Выводы
💡 LLM отлично помогают прототипировать решения
🔄 Но идеальный код они не всегда выдадут с первого захода
🕒 Написание такого скрипта вручную заняло бы полный рабочий день
🎓 Если вы ещё учитесь — не используйте GPT для списывания домашних, учите основы программирования и базовую теорию разработки ПО

#automation #tools #ai
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍4
Media is too big
VIEW IN TELEGRAM
Так выглядит тест будущего #2
Я уже писал об интересном инструменте который помогает писать тесты по описанию

На конференции познакомился с ребятами которые делают стартап которые запускают в браузере E2E тесты на естественном языке

Обычные тесты можно сделать автоматизацией!

Есть бета тестирования

небольшое демо с кейсом поиска пивного бара 👇🏻

#automation #tools #ai
👍11🔥7
Что такое MCP (Model Context Protocol )?

Он нужен для того, чтобы языковая модель (например ChatGPT) могла не только разговаривать, но и делать действия
например, создавать тесты, запускать скрипты, обращаться к разным системам — и делать это структурированно.

- Раньше ИИ только отвечал на вопросы.
- С помощью MCP ИИ теперь может действовать, работать с инструментами и автоматизировать задачи.

Из чего состоит MCP?
🟡 MCP Host — Приложение, использующее MCP, например, Cursor IDE, VS Code
🟡MCP Client — Мост между хостом и MCP-сервером, например, VS Code Agent, Claude в Cursor. (маленький плагинчик).
🟡MCP Server — то место, где лежат инструменты и команды, которые ИИ может использовать.

Используя MCP его можно применить к любой модели llm

Применение MCP в тестировани
🟣 Генерация тестовых сценариев
Создание тестов на основе доменной специфики без необходимости писать код.
🟣 Автоматическое написание критериев приёмки Формирование критериев в определённом формате во время сессий
🟣Автоматическое обновление тестов с изменениями требований

Для playwright существует сервер mcp от команды разработчиков инструмента
https://github.com/microsoft/playwright-mcp
Демо: https://www.youtube.com/watch?v=CNzg1aPwrKI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52👍2