Граничные Эквивалентности


Гео и язык канала: Россия, Русский
Категория: Карьера


Авторский канал тестировщиков 2ГИC: QA, автоматизация, инженерная культура.
Если интересно, как делать качественные продукты и не страдать — добро пожаловать!

Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Карьера
Статистика
Фильтр публикаций


💚 Дайджест свежих релизов: сентябрь

Сентябрь закрыл лето мощными апдейтами для автотестов, браузерных инструментов и всего QA-стека — вот что стоит не пропустить:

➡️ Playwright 1.63 — Test Locks и новые API
Вышли именованные lock для тестов: теперь сценарии, которые используют одни и те же ресурсы, не будут пересекаться в параллели. В локаторах появился .visible() — теперь искать только видимые элементы проще, а работа с фреймами стала интуитивнее благодаря новому page.frameLocator(). Ещё добавлены step params и обновился trace viewer.
Debian 11 и Ubuntu 20.04 больше не поддерживаются, а сами браузеры получили свежие версии. Полный список изменений: docs.

➡️ Selenium 4.50
Относительные локаторы теперь работают не только от driver, но и от элементов и теневых корней (Java, .NET). Много чистки - удалены старые методы, улучшена работа с ошибками, появился кросс-компил по всей инфраструктуре.
Для Python расширена типизация опций и коннектов, обновились тест-сценарии на GitHub Actions.
Все детали тут: release notes.

➡️ Cypress 16.1.1
Оптимизирована работа .closest() с Shadow DOM, исправлен важный баг с cy.clock() и cancelIdleCallback.
TypeScript поддерживает больше вариантов опций, документация ошибок стала информативнее, обновлены зависимости для закрытия найденных уязвимостей.
Подробности: changelog

➡️ Robot Framework Browser 20.6.0
Главное — теперь аргументы ключевых слов оформлены по синтаксису Robot Framework 7.5, читать документацию стало проще и для инженеров, и для авторов библиотек.
Из исправлений: сделали диагностику навигации при ошибках и устранили баги с таймаутами и закрытием страниц.
Читать: release

Что из этих апдейтов уже попробовали? У кого lock-и в Playwright реально спасли от рандомных падений? Делитесь опытом — кто с чем уже столкнулся, а кто только планирует внедрять новинки!

#qahub_tools #qahub_automation #qahub_rubrics


🎨 Рубрика «Нетипичный QA», в которой мы рассказываем истории инженеров, чей путь в тестирование был далек от классического сценария, и показываем, что в этой сфере есть место творчеству, нестандартному мышлению и опыту из совершенно разных областей.

#qahub_rubrics


📝 Python 3.15 уже здесь

Сегодня выходит Python 3.15 — новая версия Python с несколькими изменениями, которые могут быть интересны и в разработке, и в автоматизации тестирования.

Что заметного:

• Распаковка в comprehensions — теперь * и ** можно использовать прямо внутри comprehensions и generator expressions. Например, несколько списков можно собрать в один без дополнительного вложенного цикла: [*items for items in lists].

• Lazy imports — импорты можно загружать не сразу при старте программы, а только в момент первого обращения к модулю. Для больших проектов это может сократить время запуска.

• frozendict и sentinel — в стандартной библиотеке появились новые встроенные типы. frozendict — неизменяемый словарь, а sentinel удобно использовать как специальное значение, которое нельзя перепутать с обычными данными.

• JIT продолжает развиваться — в Python 3.15 улучшили экспериментальный JIT-компилятор. Это ещё не «магическая кнопка ускорения», но направление явно движется в сторону более производительного Python.

• Меньше зависимости от настроек окружения — Python продолжает переход к более предсказуемой работе с UTF-8 и локалью, что особенно полезно для CI и разных окружений разработки.

И вот тут возникает вопрос: а стоит ли уже обновляться?
Новые возможности — это интересно, но в реальном проекте важнее понять, что произойдёт со всем остальным. Как поведут себя автотесты, зависимости и плагины? Совместимы ли используемые инструменты с новой версией? Такой апгрейд можно воспринимать не только как переход на новый Python, но и как небольшую проверку здоровья тестового окружения.

Подробнее → Python 3.15 — What's New

Если уже попробовали 3.15 — 💚
Если пока не торопитесь обновляться — 🔥

#qahub_tools #qahub_automation


➡️ Lightpanda: headless-браузер на Zig вместо Chromium

Обычно, когда нужен headless-браузер, вариантов немного: Chrome, Chromium или что-то на их базе. И почти всегда это тяжело — по памяти, по времени старта, по ресурсам в CI.

Lightpanda — попытка сделать браузер для автоматизации с нуля, а не очередную обёртку над Chromium. Написан на Zig, без графической части, заточен именно под headless-сценарии: рендер не нужен, нужен быстрый разбор страницы и выполнение JS.

Чем интересен:

• Разработчики заявляют существенно более низкое потребление памяти и более быстрое выполнение сценариев, чем у headless Chrome. В их crawler-бенчмарке при 25 параллельных задачах Lightpanda показал 123 MB peak memory и 4,81 с против 2,0 GB и 46,70 с у Chrome. Это результаты самого проекта, поэтому перед внедрением их стоит воспроизвести на своих страницах, версиях Playwright/Puppeteer и CI-раннерах.

• Есть поддержка CDP, так что привычные Puppeteer/Playwright-сценарии можно подключить без переписывания всего с нуля.

• Запускается как обычный бинарь или в Docker — удобно встраивать в пайплайны и в агентские сценарии.

Где может пригодиться тестировщику:

• Массовые проверки страниц, где не нужен реальный рендеринг и пиксель-перфект.
• Быстрые smoke-прогоны и сбор данных в CI, где важна скорость и экономия ресурсов.
• Скрейпинг и задачи для AI-агентов, которым нужен «браузер», но не нужен полноценный движок.

Важный нюанс: это не замена Chrome для UI-тестов. Если тесты зависят от реального layout/paint-пайплайна, скриншотов, visual regression, canvas/WebGL или Chromium-специфичного поведения, оставляйте их на Chromium. Для кроссбраузерной проверки по-прежнему нужны и другие целевые движки, например Firefox и WebKit. Lightpanda скорее про другой класс задач: там, где браузер нужен как быстрый исполнитель, а не как полноценная среда.

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

Ссылки:
🔗 https://lightpanda.io/
🔗 https://github.com/lightpanda-io/browser

Пробовали что-то подобное в своих пайплайнах — ❤️
Only Chromium, другого не предлагать — 🤔

#qahub_tools #qahub_automation


💻 pip или uv?
С Python-зависимостями часто одна и та же история: код меняется быстро, а окружение собирается медленно.

Поэтому рядом с привычным pip всё чаще смотрят в сторону uv.

Если коротко:
• pip — стандартный способ ставить пакеты
• uv — инструмент, который быстрее работает с зависимостями, lock-файлом и синхронизацией окружения
• с pip установка, фиксация версий и поддержание одинакового окружения часто живут в нескольких отдельных шагах
• uv пытается собрать это в более цельный сценарий: pyproject.toml, lock-файл и предсказуемая сборка

Что это даёт на практике:

➡️локальное окружение поднимается быстрее
➡️CI тратит меньше времени на пересборку
➡️проще держать одинаковые зависимости у всех
➡️меньше сюрпризов в стиле «у меня работает»

При этом pip никуда не делся: для простых сценариев его часто более чем достаточно.
Но если в проекте начинают болеть скорость сборки и воспроизводимость окружения, у uv быстро появляются сильные аргументы.

Совсем недавно мы это проверили на нашем проекте: перевели сборку на uv, и время подготовки e2e-окружения сократилось с 10+ минут примерно до полутора. При этом сам переход оказался довольно простым — большую часть текущего workflow удалось сохранить. А ещё заметили, что сборка на Ubuntu проходила быстрее, чем на Alpine, из-за различий в доступных Python wheels для glibc и musl.

Подробнее: https://github.com/astral-sh/uv

Если тоже устали ждать сборку зависимостей — 🔥
Если pip пока полностью устраивает — 💚

#qahub_tools #qahub_automation


Эффект бабочки в программировании. Делимся историями, где, казалось бы, небольшая ошибка в коде привела к масштабным последствиям.

1️⃣ Ариан-5. 64-битное число, которое не влезло в 16 битную переменную.
64-битное значение горизонтальной скорости с плавающей запятой переполняло 16-битную переменную. В Ариан-4 такой скорости никогда не было и ошибка перетекла в Ариан-5. По итогу в программном обеспечении ракеты произошло целочисленное переполнение.
Из-за ошибки ракета-носитель была подорвана на 34-й секунде полёта, что стало одной из самых дорогостоящих компьютерных ошибок в истории.

Вывод: даже если в новой системе используется работающий код из старой, его всё-равно необходимо тщательно проверять

2️⃣ Cloudflare: регулярное выражение, которое съело все CPU
Инженер Cloudflare написал правило для WAF (Web Application Firewall). В нём было неудачное регулярное выражение, которое на определённых входных данных вызывало катастрофический возврат (catastrophic backtracking) — время выполнения росло экспоненциально На сложных запросах движок начинал перебирать миллиарды вариантов вместо одной проверки.
Последствия: 2 июля 2019 года CPU всех серверов Cloudflare по всему миру встали на 100%. 27 минут половина сайтов на Cloudflare возвращали ошибку 502. А защита от превышения CPU была случайно удалена за несколько недель до этого

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

3️⃣ Knight Capital: старый тестовый код, который ожил Разработчики обновляли торговую систему SMARS. В одном из серверов случайно остался старый тестовый код Power Peg, написанный ещё в 2003 году. Этот код должен был проверять работу алгоритма, но никогда не использовался в реальной торговле. Ошибка в деплое: одна из восьми машин не получила новую версию и продолжила работать со старым кодом. А в старом коде была функция, которая не распознавала, когда заявки уже исполнены, и продолжала отправлять их снова и снова.
В результате 1 августа 2012 года, в 9:30 утра, бот отправлял заявки (скупал акции) быстрее, чем они исполнялись, и не видел, что они уже исполнены. За 28 минут Knight Capital потеряла $440 млн. Инженерам пришлось топорами выдергивать сетевые модули серверов в дата-центре, чтобы остановить алгоритм. Компания потеряла 53% капитализации и вскоре обанкротилась.

Вывод: Мёртвый тестовый код, оставленный в продакшене, — это бомба замедленного действия. Тщательно проверяйте, что именно уходит в деплой, и не храните старые версии там, где они могут случайно запуститься.


Сегодня День программиста!

Поэтому на минутку забываем про «а у меня не работает» и поздравляем своих разработчиков💚

Любимых. Тех самых, которые говорят: «это не баг».

А если не сегодня - завтра тоже считается. Хороший понедельник сам себя не сделает 🏆




💚 Дайджест свежих релизов: август

➡️ Python
Документация Python официально на русском. Перевод опубликован на docs.python.org и сделан сообществом. Теперь джуниоры могут ссылаться на официальный русский источник. Также появился общий стандарт переводной терминологии. Перевод будет обновляться параллельно с оригинальной документацией.

➡️ Polars 1.44.0
Основные улучшения в SQL: кэширование общих табличных выражений, корректная обработка join и подзапросов. Поддержка Iceberg расширена за счёт эволюции схем и других возможностей. Исправлены проблемы с вложенными списками в Arrow. Частично deprecated устаревшие параметры.

➡️ pip 26.2
Теперь учитывается Cache-Control индекса, что влияет на обновление недавно опубликованных пакетов. Добавлены флаги для изолированных сборок, поддержка Python 3.15, а также исправления безопасности.

➡️ Playwright 1.63
Test Locks и новые API. Появилась возможность создавать именованные lock для тестов. Тесты с одним lock не запускаются параллельно. Улучшен поиск элементов во фреймах. Добавлен метод .visible() в локаторы, расширены параметры тестовых шагов и отчётов. Обновлены браузеры и исправлены баги.

Кто уже попробовал работать с lock в Playwright? А кто впервые увидел python docs на русском? Дайте знать, что оказало влияние именно на вашу практику!

#qahub_tools #qahub_automation #qahub_rubrics


🤩Рубрика «Нетипичный QA», в которой мы рассказываем истории инженеров, чей путь в тестирование был далек от классического сценария, и показываем, что в этой сфере есть место творчеству, нестандартному мышлению и опыту из совершенно разных областей.

#qahub_rubrics


🏆 Иногда лучшая оптимизация — это не новый тул, а пара хоткеев в старых добрых Confluence и Jira

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

📝 Confluence: редактирование и форматирование

Основное:
E — редактировать страницу
Ctrl + S — сохранить
/ — Поиск

Заголовки и текст:
Ctrl + 1..6 — заголовки H1–H6
Ctrl + B — жирный
Ctrl + I — курсив
Ctrl + K — ссылка

Навигация:
G, затем D — перейти на дашборд Confluence
Shift + ? — открыть встроенную подсказку всех хоткеев

⏱️ Jira: навигация и работа с задачами
Навигация:
G, затем D — дашборд
G, затем I — список задач (Issues)
G, затем P — проект
/ — фокус в поиске

Работа с задачей:
C — создать задачу
E — редактировать
A — назначить на пользователя
M — добавить комментарий L — добавить метку
S — поделиться
. (точка) — окно быстрых действий/Поиск (transition, assign, log work и др.)

Если вы уже пользуетесь хотя бы половиной из этого — 💚
Если открыли для себя что-то новое — 🔥

А какими хоткеями в Jira/Confluence вы пользуетесь чаще всего? Закидывайте свои must have в комменты — дособерём шпаргалку вместе

#qahub_tools #qahub_edu


Подборка для ручного тестирования

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

Скриншоты и запись экрана
1️⃣ Scrnli — быстро зафиксировать баг с видео и сразу вложить в тикет.

Тестовые данные
2️⃣ Bug Magnet — граничные значения под рукой, не нужно каждый раз придумывать их в голове.
3️⃣ Fake Filler — заполняет форму с учётом типа поля. Спасает, когда полей много, а времени мало.
4️⃣ Fake File Generator — файл нужного размера за пару кликов. Проверка лимитов на загрузку перестаёт быть болью.

Нагрузка и безопасность
5️⃣ Catch Point — смотрим, как продукт ведёт себя под нагрузкой, до того как это заметят пользователи.
6️⃣ OWASP Penetration Testing Kit — тестовые атаки на продукт, чтобы не было сюрпризов в проде.
7️⃣ OWASP ZAP — ищем уязвимости, в том числе в промптах.

Чек-листы
8️⃣ TestPad — инструмент для создания чеклистов, он платный, но если ручных проверок много, окупается быстро.

Если выбирать одно — начните с Bug Magnet: оно экономит время с первого дня.

#qahub_tools


👀 Открываем ваши закрома!

Какой инструмент, расширение или сервис вы используете в работе и теперь не понимаете, как жили без него?

Для тестирования, дебага, работы с API, тестовыми данными - вообще чего угодно.

Кидайте в комментарии: название (ссылка) + в двух словах чем полезен ↙️


Репост из: Dev2GIS


🏆 Разбор рубрики «Найди баг»: что сломалось в соцсети Looksy?

Вчера мы просили вас найти ошибки на экране новой соцсети. Вы отлично справились! В следующий раз сделаем посложнее.
Делимся ответами:

1️⃣ Z-Index и наложение в Stories (верстка)
В верхней панели сторис аватарка пользователя alinamoon наложилась прямо на соседний профиль. Сломался gap / margin в горизонтальном скролле.

2️⃣ Ошибка UX-логики (самоподписка)
Пост выложен от имени «Вы», но справа отображается активная синяя кнопка «Подписаться» - система позволяет подписаться на самого себя.

3️⃣ Баг видеоплеера (таймер)
Прогресс-бар показывает время 03:45 / 01:20. Текущее время воспроизведения превышает общую длину ролика.

4️⃣ Time-Travel / серверная ошибка
Под плеером написано: «Опубликовано через 2 часа». Метка времени ушла в будущее - похоже на сбой часовых поясов: сервер записал время в UTC, а клиент отобразил его в локальной зоне без конвертации.

5️⃣ Аномалия метрик (логика данных)
У поста 14.2 тыс. лайков, но при этом 0 просмотров. Асинхронный счетчик просмотров «залип» или отвалился микросервис аналитики.

6️⃣ Несовпадение аватарок (данные профиля)
В историях у текущего пользователя одна аватарка, а в публикации - другая. Профиль подтягивает данные из разных источников, и они не синхронизированы.

📝 Какой баг вы заметили первым и почему именно он бросился в глаза?
Ждём ваши версии в комментариях ↙️

#qahub_fun #qahub_rubrics


🔍 Сколько багов видишь на экране? | Выпуск #3

Представь: готовим к релизу соцсеть Looksy. Перед закрытым бета-тестом разработчики были уверены, что учли всё, и заверили: лента работает идеально.

Наш QA-инженер открыл приложение и на одном экране нашёл 6 багов.

📸 Скриншот ниже - это лента постов, ошибки спрятаны в ней.
Задача: найди все 6 багов на скриншоте. Код уходит на прод завтра - успеешь?

Пиши в комментариях, что нашёл 👇

Полный разбор с ответами выложим завтра.
Нашёл все шесть — 🔥 Нашёл меньше — 🤔

#qahub_fun #qahub_rubrics


Сегодня — 20 августа — Международный день лени!

План был амбициозный: подготовить историю праздника, рассказать про пользу лени для изобретений, привести примеры «ленивых» инноваций…

Но нам лень.
Так что просто: с праздником.
Устали, пока печатали.


🤩Искали способ эмулировать движение пользователя — нашли его в Chrome

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

Для большинства задач достаточно встроенных возможностей Chrome.

В DevTools → More tools → Sensors можно:

• Выбрать готовую локацию или задать свои координаты;
• Сменить часовой пояс и регион;
• Настроить Accuracy (начиная с Chrome 138) и проверить, как приложение ведёт себя при неточном GPS. Это полезно для сценариев, где приложение реагирует на местоположение пользователя. Например, даже погрешность в несколько десятков метров может изменить работу геофенса или повлиять на определение ближайших объектов.
⚠️ Подмена геолокации работает только пока открыты DevTools.

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

Для этого есть бесплатное open source-расширение DevTools Advanced Location Override. Оно позволяет:

• Загружать заранее подготовленные маршруты в форматах KML, GPX и GeoJSON;
• Воспроизводить движение по маршруту в реальном времени;
• Менять скорость движения — от 0.5× до 10×;
• Добавлять случайную погрешность GPS, скорости и высоты, чтобы приблизить сценарий к реальным условиям.
Например, можно загрузить GPX-трек маршрута, ускорить его воспроизведение и проверить, как приложение реагирует на вход в геозоны, перестроение маршрута или обновление ближайших объектов по мере движения.

Если узнали что-то новое — 💚
Если уже используете эти возможности в работе — 👍

#qahub_tools


💚QA + ИИ: как использовать нейросети для практики, а не только для поиска ответов

Часто нейросети используют как продвинутый поиск. Но для QA иногда полезнее другой режим: ИИ как наставник, который не дает готовое решение сразу, а ведет вопросами и дает практику под ваши пробелы.

Вот 4 идеи, как превратить ИИ в тренажер:

🟢Интерактивный код-ревьюер
Вместо запроса «напиши код» попросите ИИ работать как строгий тимлид. Отправьте свой вариант (например, обработка исключений или циклы), а ИИ пусть критикует архитектуру, читаемость и PEP 8, задает наводящие вопросы и не показывает финальный код сразу.

🥸 Капризный продакт-менеджер
Одна из сложных частей тестирования — находить «серые зоны» в ТЗ. Дайте ИИ описание фичи и попросите играть роль заказчика, который сам до конца не определился. Вы предлагаете эквивалентные классы и границы, а ИИ проверяет логику вопросами: «Что будет, если пользователь сделает вот так?».

🟢 Эмулятор «сломанной» базы данных
Написать учебный SQL просто. Сложнее — понять, почему в реальной консоли все падает. Попросите ИИ симулировать СУБД: вы присылаете запрос, а он возвращает ошибку или показывает «битую» выборку. Дальше чините запрос итеративно, как в реальной отладке.

😲 Симулятор технического собеса
Вместо статичных списков попросите ИИ провести интерактивный скрининг по QA, сетям или API. Пусть задает вопросы по одному, оценивает ответы и углубляется там, где вы плаваете — как это делает лид на интервью.

Лайфхак
В конце обучающего промпта часто помогает добавить:
«Не пиши готовый правильный ответ и код, пока я сама тебя об этом не попрошу. Задавай наводящие вопросы».
Обычно это переключает фокус с копирования на реальную тренировку мышления.

Если такой формат тренировки откликается — 💚
Если пока ближе классические разборы — 👍

#qahub_ai #qahub_edu #qahub_blogpost


😲 Навигация по каналу

Если хотите найти посты на конкретную тему — просто нажмите на нужный хештег

🛠 Инструменты и технологии
#qahub_tools — инструменты, библиотеки, IDE и полезный тулинг
#qahub_automation — автоматизация тестирования
#qahub_ai — AI, ML и нейросети в работе тестировщика

📖 Материалы для развития
#qahub_edu — обучающие материалы и теория
#qahub_blogpost — статьи, лонгриды и разборы
#qahub_podcast — подкасты и интервью
#qahub_videotalk — доклады и записи выступлений

🎤 События и сообщество
#qahub_conference — конференции, митапы и события
#qahub_live — стримы и прямые эфиры
#qahub_hackaton — хакатоны и соревнования
#qahub_career — карьера, софт-скиллы и профессиональный рост

💚 Жизнь QA
#qahub_insider — внутрянка команды и QA-жизнь
#qahub_fun — мемы, атмосфера и лёгкий контент
#qahub_rubrics — постоянные рубрики и тематические подборки

Показано 20 последних публикаций.