qaload | Unsorted

Telegram-канал qaload - 📢 Load & Performance

820

Избранные материалы о тестировании производительности. Чат и источник тем: @qa_load

Subscribe to a channel

📢 Load & Performance

Привет performance lovers!

Научился совмещать занятия нагрузкой и мониторингом. Раньше у меня не получалось, тесты быстро выполнялись и нужно было изучать результаты. Стал делать тесты подольше, на 2 часа. И пока они бегут — можно поработать в Grafana 😄

Не нашлось видео воды, но вот есть видео как дождь падает на озеро. Это вид с вершины горы. В оригинале я там говорю, но с ветер такой сильный, что слышно только порывы ветра. Поэтому наложил звук Infinite Perspective

Лицензия Creative Commons Attribution 4.0 на использование трека Infinite Perspective, исполнитель: Kevin MacLeod: https://creativecommons.org/licenses/by/4.0/

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Приоткрыл дверь в мир трассировки для себя через Grafana Tempo. Я уже открывал его через Zipkin и Jaeger. А теперь новая глава

Сначала не получалось и было все не так. Надо было заглянуть вглубь в API, в доку и в видео. И как пошло, что уух

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

select * from table where id in ($1, …, $1000) and name=$10001


И почти во всех инструментах вы увидите только начало запроса

select * from table where id in ($1, $2, $3

Что позволяет предположить — нужен индекс по полю id. A то что в нем есть часть с

and name=$10001

так и останется тайной — индекс по полям (id, name) без этого знания сложно создать. И в Grafana Tempo точно также, но только в UI. А если скачать трейс — там все есть. И это очень очень круто!!

Хотя бы ради этого стоит попробовать OpenTelemetry и Grafana Tempo

С завершением еще одной нагрузочный недели вас и отличных выходных 🤗

Читать полностью…

📢 Load & Performance

Привет Performance lovers!

❓ Вы запускаете тесты с ноутбука или в CI/CD?
❓ А как вообще лучше?

Кажется я теперь достаточно опытен, чтобы ответить что-то на опытном —

Это зависит от ...


Оказалось, что если я хочу запустить тест на 9 часов или на 19 часов, то в CI/CD такой тест может встретить ограничения
🤩 на длительность работы pipeline (а тест нужен долгий)
🤩 на максимальный объем output-лога, который может вместить запуск (а инструменты нагрузки много чего любят писать в консоль)
🤩 ...

И в таком случае вполне можно
🤩 создать станцию в надежном облаке и запускать тест оттуда (руками)
🤩 или использовать ноутбук и оставить его работать на ночь

Если интернет и VPN стабильны, а нагрузка небольшая, но долгая, то почему бы и да?

У всего есть лимиты, и лимиты CI/CD инструмента тоже есть. Интересная тема. Я как-то не сталкивался с ней, не приходилось. Не делал тесты стабильности огромной длительности и не генерировал тестовые данные через API с 🦆 утками, а вот теперь столкнулся и оказался новичком. А отвечаю на опытном 😄

Пусть тесты крутятся, пойду спать. И вам доброй ночи!

Читать полностью…

📢 Load & Performance

Заметил, что старую сине-фиолетовую рубашку я оставил дома и лет пять уже не носил, да и в Омске давно не был, да и бороду постриг 😊 — в общем много причин было сменить фото

Теперь в другой рубашке, когда встретимся — не перепутаете уже 🤗

Читать полностью…

📢 Load & Performance

Привет Performance lovers!

Сделал раскраску таблицы access logs по принципу — хорошие адреса 💙 синие, 💚 зеленые, 💛 желтые

А вот адреса разных DDoS-еров 💔 красные. Сделал за счет regexp в таблице в Grafana

Сначала вставил в таблицу 2900 правил, получил таблицу весом в 2.4 МБацт — и такая большая доска/таблица отказалась сохраняться в базу данных Grafana

❓ Вы знали что есть лимит на максимальный размер доски — а вот он есть 🤦‍♂️

Поэтому сжал правила — использовал больше правил вида

13.37.*.*


вместо списка правил под каждый диапазон:

13.37.1.*
13.37.2.*
13.37.3.*
…


Так таблица сжалась в 3 раза, доска сжалась тоже и все стало работать быстрее и лучше

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

Хостеры Web2Objects, UAB code200, Servers.com, … — основные источники проблем производительности. Можно их сразу заблокировать в правилах доступа ваших публичных проектов. Вряд ли ваши клиенты используют эти площадки для работы с вашим API, а вот проблем они создать могут

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Любите ли вы GDPR, "Data Protection Impact Assessment" (DPIA) и согласования с командой безопасности?

Середина года, время проходить и сдавать тесты по безопасности. И вот, в который раз, начал проходить и сдавать. Но только изучил вопрос чуть глубже, чем требовалось для прохождения теста. А все потому, что я подготовил CSV-файл с именами и фамилиями тестовых пользователей для целей тестирования производительности

Сначала я думал использовать Gatling Pikantiny / Faker — но там очень мало данных, а мне надо 10 000 пользователей

Потом думал взять Users.xml из дампа StackOverflow, но там такая лицензия, что мне надо будет опубликовать производный продукт (CSV-файл) и указать его лицензию

Потом думал взять "Liste de prénoms et patronymes" (INSEE, France), доступный через data.europa.eu под лицензией Etalab Open Licence 2.0, это разрешительная лицензия

А потом я прошел обучение и прочитал внутренние документы хорошо.

🌸 Даже если я возьму данные, которые доступны, но буду их хранить где-то в закрытом хранилище компании, и есть шанс что какая-то комбинация этих данных может совпадать с данными реального человека, то надо будет предпринять все действия по защите этих данных, и так далее — GDPR, "Data Protection Impact Assessment" (DPIA)

✅ Согласно курсам — надо прочитать документы и все отправить на согласование коллегам

❓ А что можно сделать заранее

1️⃣ Выбрать небольшой набор данных — 10 000 считается небольшим набором по меркам общего положения по хранению данных (это не 1 миллион), но это может быть большим списком по меркам компании. А какой у нас в компании лимит можно узнать у коллег

2️⃣ Можно и нужно применить Data Minimization practices — выбрать мало данных, извлечь только необходимые для работы данные (только Имя а Фамилию), перемешать данные (отдельно взять имена, отдельно фамилии и смешать их случайно)

3️⃣ Применить к данным мутации:
— пропустить некоторые гласные буквы
— продублировать некоторые согласные буквы
— добавить опечатки
— применить статистические замены

4️⃣ Ограничить доступ (только для использования скриптами тестов) и не хранить файл вечно (удалить после использования), но можно оставить код генерации для более долгого хранения и инструкции к нему

Интересная часть тут третья про мутации

1️⃣ Во первых можно взять изначально более синтические данные через библиотеку

https://github.com/joke2k/faker

2️⃣ Во вторых применить разные варианты опечаток, пропусков символов и обрезок:

https://github.com/makcedward/nlpaug/blob/master/example/textual_augmenter.ipynb

И когда все это применяется, то уже нет большого риска, что когда-то человек по имени Vaskramd (вместо Viacheslav) Dmitnob (вместо Smirnov) что-то как-то себя обнаружит в тестовых данных на тестовом стенде или кто-то его обнаружит и расстроится по этому поводу

Проходите тесты по безопасности, это интересно

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Покажи свои скиллы


На прошлой неделе коллега из другой команды пришел с вопросом про автоматизацию тестирования в нашей команде. Я ему рассказал разное, и в том числе что поменялся подход к оформлению дефектов

Ранее, в 2025-м году:
🤩 дефект должен был быть кратким, содержать только суть и чек боксы, коллегам было неудобно читать про узкие места в дефекте, информация про дату, связанные метрики, версии, … была лишней — они просили суть и ссылку на профилирование

Сейчас в 2026-м году:
💰 дефект должен быть детальным, структурированным, содержать профилирование в текстовом формате (collapsed-формат), содержать стек-трейсы и весь нужный контекст — дефект пишется для агентов коллег, и агентам нужна вся эта структура и история, предыстория, … в машиночитаемом формате, где каждая строка выверена

😂 Если в 2025-м, я получал обратную связь — пиши сокращай, то сейчас получаю обратную связь — Круто, а как это оформляется? Покажи свои скиллы!

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

Оказалось непросто, хотя казалось бы, ерунда и что-то очевидное, как дышать. А вот нет. Как отлажу их, то поделюсь

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Сегодня снова выходной, а значит можно перезагрузиться. Если у вас хорошая погода — это может быть вода, река, бассейн. А может быть и вкусный чай. Видео выше не передает ароматы, желаю вам найти такое же ароматное место рядом с домом ☕️

Я продолжаю упрощать свою работу до нажатия кнопки или строчки кода/промта. Почти всю неделю занимался инструкциями и пайплайнами. Еще посмотрел про ИИ в разработке aidevconf.org — понравилось, люди делают сложное простым с помощью новых технологий

💡Интересные мысли умных людей

Простая мысль была в рассказе от Андрея Бреслава (автор Kotlin, …, CodeSpeak) про то, что, когда инженерия программного обеспечения станет обычной вещью, то и зарплаты в разработке станут, как у многих других инженеров — это время близится. И за простую программу-таймер для iPhone он уже не готов платить, он ее сгенерирует

А другая простая мысль была в YouTube в рассказе дедушки с жемчужной сережкой (канал такой), что телефон — это современный социальный лифт, делаешь с помощью мозгов что-то хорошо, и получаешь рост, это может быть хорошее приложение

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

В этом что-то есть, звучит, как план

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Сегодня погода хорошая, но дома сижу. Решил проверить пределы LinkedIn и отправил приглашений коллегам, получилось 442. Мне понравилось тем, что все ждал как меня забанят в 📱, а оно не случилось

Возможно, при работе с мобильным приложением штрафы не так сильно начисляются, как при работе из браузера

Возможно, дело в том, что меня уже банили раза три, а я потом возвращался или подтверждал, что я живой человек

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

Еще поменял описание на
🔮 Most performance issues are predictable
давно уже поменял, но в поиске все еще пишется
💻 Performance engineer at JetBrains
а иногда
💻 Performance engineer at YouTrack
это использовал после JetBrains

Кеши в LinkedIn на столько суровы, что пока не прогрелись. И видимо, для комментариев, реакций и профиля разные кеши — по разному отображается потому что

💡 Возможно, и нам стоит быть смелее в кешировании

И раз уж мы про линк, то добавляйтесь, всем добра!

📱 https://www.linkedin.com/in/v8v

Чтобы это было вам полезно — напишите о себе в комментариях и оставьте ссылку на linkedin для взаимоконнектов

Читать полностью…

📢 Load & Performance

Привет, performance lovers!

Новая загадка с перцентилями

Было применено кеширование, в этом случае кеширование ответов на входящие HTTP запросы, и часть ответов теперь будут кешироваться в браузере, даже не на сервере. И после применения — числа на графиках с перцентилями серверных ответов пошли вверх

Это хорошо. Так и должно быть

Как вы думаете почему это на графике времени отклика есть такой эффект? И какой еще график стоит посмотреть для получения полной картины?

Читать полностью…

📢 Load & Performance

Привет performance lovers!

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

Несколько уроков этой недели

Порядок инструкции в NGinx конфиге важен, каждая следующая дополняет или переопределяет предыдущие. И например нельзя задать размер map-ов уже после определения любой map-ы

Правила NGinx location с регулярными выражениями имеют более высокий приоритет, чем правила location с точным совпадением. Это не было очевидно. В результате, все location правила переписал на регулярки

Если размер JVM MetaSpace недостаточно большой, то при выполнении GC для MetaSpace, эта область памяти очищается, и JVM начинает по новой компилировать код (это пока не 100% истина, но основная рабочая гипотеза отладки одного случая с очень активной компиляцией кода)

Отличных вам выходных! 🤗

Читать полностью…

📢 Load & Performance

Привет любители производительности! Участвую во взаимном продвижении IT-чатов и каналов — "IT в деле" В сборке есть разные тематики

Что внутри:

🧑‍💻 Каналы о программировании и разработке: Python, CSS, HTML, Java и Swift

👨‍💻 GameDev и каналы о QA тестироварии, создание игр и тестирование (мы туть)

🤖 Авторские каналы и вайбкодинг: IT & AI, простые заметки с проектов, работа с нейросетями

🤩 Информационная безопасность: многое узнаете о работе хакеров

Много интересного! Выберите интересные вам каналы или подпишитесь на всю сборку

Читать полностью…

📢 Load & Performance

https://performance.shopify.com/pages/services

Интересная бизнес модель у отличной платформы создания интернет магазинов shopify — можно нанять их команду производительности или команду партнеров 💡

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

Как они добились и как обосновывают?

https://www.shopify.com/enterprise/blog/store-speed-conversion

The trend is clear: for every 100 milliseconds slower a store loads, conversion tends to be about 3.5% lower.


Посчитали, что 100 ms задержки к LCP снижают конверсию (вероятность покупки) на 3.5%

For every 32 milliseconds slower a store responds to interactions, conversion tends to drop by about 1.5%.


А 32 ms к INP также снижают эту вероятность на 1.5%

И чтобы это посчитать они сделали сервис аналитики производительности (встроенный в систему)

https://help.shopify.com/en/manual/online-store/web-performance/web-performance-reports

Отчёт небольшой, использует хранилище Google и просто показывает метрики из него, эти метрики Google и так собирает со всех Google-устройств и Chrome-ов

💰 Их фишка, что они смогли собрать ключевую метрику Conversion rate по сайтам клиентов и соотнести ее с performance метриками

Для этого им скорее всего пришлось постараться и сделать непростой механизм сбора бизнес метрик. Сохранить и обогатить CrUX метрики. Выстроить сеть партнеров с perf-компетенциями. И запустить все

Крутой проект, сколько рабочих мест создано! И как же это красиво подано 🔥

Читать полностью…

📢 Load & Performance

Сегодня хорошая погода. И выходной день. Речка в такой день один из лучших способов отдохнуть, чтобы завтра продолжить тесты писать

Читать полностью…

📢 Load & Performance

Привет любители производительности!

Было ли такое что у вас есть какой-то важный лог в котором явно есть структура и поля в тексте сообщения. Но в Grafana вы можете показать лишь все сообщение целиком

🤩Выделить только часть
🤩Сгруппировать по подстроке
🤩Сделать возможность клика и фильтрации по подстроке
... не получается

В Grafana теперь есть Extract Fields трансформация с поддержкой регулярных выражений
как для однострочных сообщений
/Failed to perform (?<Action>[^ ]+) with unexpected Exception\: Connect timeout has expired \[url=(?<url>[^,]*),/

Так и для многострочных сообщений (заканчивается на /s)
/Failed to perform (?<Action>[^:]+): Status: (?<Status>[0-9]+). Message: Exception during request to (?<url>[^ ]*) with code (?<Code>[0-9]+)\: (?<Message>.*)\nGRAZIE traceID: (?<traceID>[0-9,a-f]+)\n(?<StackTrace>.*)/s

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

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Прошла еще одна нагрузочная неделя. У меня получилось разобраться в сборке мусора Go (GOGC: 1000 норм), автоматизировать сбор метрик от эфимерных тестовых стендов (использовал Prometheus Push Gateway и цикл с двумя curl-ами), от души поговорить с коллегами. И вот думаю, что полезного написать? Чтобы пригодилось многим и чтобы это еще не было написано в интернете и модели про это не знали?

Кажется самое интересное что сделал на этой неделе — выбрал в каком кабинете буду работать

Я оказался в интересной ситуации — мои коллеги в Чехии и Польше, а я в Германии. Есть коллеги с которыми часто общаюсь, но рядом с ними нет свободных столов. Это отличный повод выбрать рабочее место самостоятельно.

❓Куда пойти нагрузочнику

Команда производительности IDEA сидит плотно, рядом с ними мест не нашел. Подумал — а может к лучшему, да и я из другого проекта, но было бы круто поработать рядом с ними

Команда автоматизации тестирования тоже сидит плотно (трое в кабинете на троих). Подумал — а может и к лучшему

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

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

— на какие этажи ходил
— в каких кабинетах был
— где я видел друзей
— где сидит команда
— кого я знаю

И получилось не так много вариантов. А потом написал другу — не будет ли кто против, если перееду к нему? Там простой стол, без тумбочек и полочек, но зато есть вид из окна 🤩 это я люблю. Забронировал пока в Envoy свободный стол на две недели в вперед. Это оказался очень полезный сервис

Итого получается такая рекомендация

✔️ используйте внутренние сервисы чтобы найти свободные столы
✔️ работать рядом с друзьями это хорошая рекомендация
✔️ маленькие мелочи как вид из окна также важны
✔️ эти выборы можно сделать самостоятельно, а если что-то идет не гладко — может это к лучшему

Думаю, что следующая неделя будет еще лучше. Чего и вам желаю 🍀

А на видео водопад, который вытекает из горного озера и переходит в чистейший ручей. Это в городе 47.4808459,11.0804342,16z/data=!4m6!3m5!1s0x479d06b45958a075:0xeac4f23afb21b388!8m2!3d47.4808459!4d11.0804342!16s%2Fg%2F11f_p2wm3d?g_ep=Eg1tbF8yMDI2MDgwNF8wIJvbDyoASAJQAg%3D%3D">Garmisch-Partenkirchen. Если кто-то из вас проходит собеседование в YouTrack QA Performance с релокацией в Мюнхен, то напишите, как все получится — рабочее место освободил и все прибрал, красивые места вокруг разведал 🙂

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Снова выходной. И нашел вам реку с рыбками и лебедями.

Из нового — я стал Performance Engineer-ом, у-хуу. Был экспертом, software engineer-ом, SDET-ом, и вот стал Performance Engineer-ом. Опрос в чате показал, что это одно из самых популярных названий нашей профессии

Отличных вам выходных 😊

Читать полностью…

📢 Load & Performance

Привет Performance lovers!

Есть ли у вас Performance Review? Как часто это проходит?

Скорее всего есть, да. Скорее всего 1-2 раза в год

Сделал для себя еженедельное ревью и использую начиная с февраля этого года

На фото выше основные блоки такой системы

1️⃣ Как Perf-инженер занимаюсь очень разным, а по роли я SDET-инженер. Поэтому при составлении профиля компетенций взял за основу компетенции для самых разных ролей. В основе SDET, но добавил и SRE и Developer

2️⃣ Чтобы мои компетенции и навыки были актуальными добавил много требований из текстов вакансий. На сайте JetBrains Career коллеги описали уже много всего того что ожидают видеть в своих командах, технологии, приоритеты, решения

3️⃣ Полученные расширенные описания разделил на грейды, мой текущий это Senior 1, а следующий Senior 2 — поэтому им уделил максимальный приоритет

4️⃣ А потом сделал очень простого агента который по очень простому MCP получает тексты задач которые сделал за последнюю неделю и оценивает их на соответствие целям — цели согласованы с руководителем команды в начале года, то что в целях указано, то важно. А что не указано — не важно и стоит обсуждать, если оно появляется в задачах. Целей всего пять. Они написаны в коротком md-файле. Задач за неделю делаю тоже 5-6. Тоже немного текста

5️⃣ Каждую цель-задачу можно выполнять просто выполнив или же хорошо выполнив или же принеся пользу еще и другим командам — если кратко, так примерно и очень в общем разделяются грейды. И есть второй механизм оценки, который берет подробные описания каждого грейда для моей роли и сравнивает результат выполнения задачи с такими критериями. Чтобы это можно было оценить автоматически я стал при выполнении задач писать не просто — Done, а указывать результат, например, процент ускорения, экономию, ... разные метрики которые ранее пропускал — если не постараться и не описать их, то и у других людей не найдется времени этот результат увидеть

💡 Цель такая — делать 80% задач стабильно на текущий грейд и не ниже, а 20% задач делать на следующий грейд, принося пользу другим командам

6️⃣ Есть также очень простой слой-механизм который говорит — что эта задача кажется сделана на уровень Junior/Middle, а вот если бы были в ней вот такие признаки/результаты/... — то она бы была задачей следующего уровня. Получаются рекомендации. Я их читаю и стараюсь применять в задачах которые буду делать на следующей неделе. Выполненные уже не переделываю — что было то было

7️⃣ Все такие микро performance review делаются чтобы в конце года получилось хорошее performance review — получится ли оно хорошим посчитаю по осени, как говорится. А как промежуточный результат — стал гораздо лучше вести задачи, закрывать их быстрее, описывать результаты в них, а не просто выполнять

🔮 Использую для этого модель Google Gemini, она хорошо работает с вызовами MCP и получением моих задач, хорошо сравнивает тексты, выдает результат по шаблону. Стоит это недорого. Для меня ни сколько (у меня есть лимит на токены на месяц, ни разу за него не вышел) — писать код куда затратнее. А возможный экономический эффект от такого может окупить затраты

Тут используется три очень простых агента, у каждого своя роль — цели, оценка результатов по грейдам, оценка результатов оценки и выдача нескольких рекомендаций на следующую неделю. На вход они получают MD-файлы и мои задачи, а на выходе дают другой MD-файл в котором есть таблица а в ней колонка или с галочками — OK/не-OK или примерный Грейд или приоритет того, что стоит улучшить

Если все получится (пожелайте мне удачи 🤗) расскажу подробнее. Но вы такое повторить сможете за вечер. Чтобы организовать три агента/скила в pipeline можете использовать вот такой шаблон — https://github.com/DenisSergeevitch/agents-best-practices — очень удачный шаблон для создания pipeline-ов и согласования работы агентов/скилов

Читать полностью…

📢 Load & Performance

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

И у меня вырос уровень энергии, не упал, а вырос

Писал код вместе с Junie, ставил галочки в задачке и amend-ил коммит, который озеленял тесты

Делайте рефакторинг — это заряжает

Читать полностью…

📢 Load & Performance

Привет Performance lovers!

Знаете ли вы что в мире есть 100 млрд типов людей:
1️⃣ Хранят тесты в отдельном репозитории
2️⃣ Хранят тесты вместе с сервисом

Я был человеком типа 1️⃣, а стал 2️⃣. Все круто, но если сделать правку в самой свежей версии, например, поправить параметры приложения на тестовом стенде, то автоматически эти изменения в предыдущие ветки (релизы) не добавятся

И вот тесты в ветке develop (все последние изменения и продукта и тестов) проходят ✅ отлично, а в ветке release-2026.2 (релизный проект и чуть более старые тесты) изменения не дошли ❗️ нужно еще сделать 🍒 cherry-pick

🎚 Убедиться, что версии актуальны

git fetch origin


🎚 Сделать ветку на базе стабильной ветки (release-2026.2):
git checkout -b fix-perf-tests-2026.2 --no-track origin/release-2026.2

❓ Тут может быть скрытая угроза, когда внешней веткой для локальной fix-perf-tests-2026.2 станет не origin/fix-perf-tests-2026.2, а origin/release-2026.2. И вы очень не хотели бы случайно разломать релиз. Чтобы такой привязки не происходило добавлен флаг --no-track. В целом он не особо нужен для создания веток, но тут он для перестраховки


🍒 Перенести нужный коммит
git cherry-pick -x 89006ee2


Тут могут возникнуть конфликты, например, вы там меняли .gitignore и этот файл .gitignore также был изменен кем-то кто обновлял релизную ветку. У меня получилось, что конфликты в моих же файлах — я их правил

Без 💻 IDEA бы с трудом разбирался в консоли, как верно сделать git cherry-pick --continue — а тут есть удобный диалог. IDEA очень помогает

Можно нажимать Accept Yours (первую кнопку) почти всегда, но бывает интересно нажать Merge ... и посмотреть на изменения еще раз

🎚 Проверить, что все прошло хорошо
git log -n 1
git diff HEAD~1 HEAD --name-only

Что только тесты были перенесены, а не что-то лишнее.

🎚 А потом опубликовать ветку и сделать мерж:
git push -u origin fix-perf-tests-2026.2

❓ Тут для перестраховки явно добавлен флаг -u чтобы в origin точно создалась ветка origin/fix-perf-tests-2026.2, при настройках git по умолчанию такое не требуется, но при некоторых настройках просто git push origin мог бы попробовать залить все сразу в release-2026.2 (смотри предыдущий ❓), это почти никогда не возможно — но тут у нас двойная перестраховка от такого случая

Много плюсов от размещения тестов вместе с проектом, но есть вот такие 🎚 5-7 шагов. В которых есть ❓ нюансы еще.

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

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Я испытываю стресс во время планирования

История такая, что сплю нерегулярно, и стал измерять свой сон часами (устройством). Чтобы улучшить сон. Замеры показывают, что сон короткий, но отличный 🤩. Продолжаю мониторинг.

Но устройство также замеряет стресс. И вот он у меня не отличный. Особенно в начале дня. И это интересно

День у меня обычно такой, что я еду на велосипеде в офис, и там записываю на стикер 2-3 задачи на день. А потом делаю их. За день еще случится разное, но вот их надо сделать

🟠 А если одна из задач сложная, то начинаю ее планировать. И судя по метрикам, это самая стрессовая часть дня

🔵 Для сравнения. С 11 до 12 встреча/звонок. Где я что-то говорю и слушаю. Уровень стресса ниже 25. А я думал что тут будет высокий стресс, встреча на английском. Кажется мне легко на встречах на другом языке, а я думал, что наоборот

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

🟠 А потом я продолжил планирование. Это задача по разделению и сжатию трафика, ее надо спланировать хорошо заранее. И это снова было непросто — почти как утром

🔵 Где-то с 16:00 до 21:00 чинил и разбирал инциденты на проде, довольно такие сложные. Про вложения, workflow, новый проект, с обращениями пользователей. И я предполагал, что это стрессово для меня. А оказывается, это очень даже спокойная работа. Но с редкими всплесками, там надо было описать пользователю статус и обсудить с разработчиком

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

🟠 Например, попробовал планировать на балконе/терассе. В офисе есть балкон и там есть хорошие Wi-Fi и уличный стол — метрики пошли вверх, стресс стал выше. Может потому что там непривычно или холоднее или ветер или солнце

🔵 Попробовал парное программирование. У меня есть интерн. И мы просто сели рядом. Я делал что делаю, но рассказывал при этом, метрики получились более синими, с всплесками

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

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Как-то начал давать короткие советы-истории-опросы в общем чате @qa_load и один из таких был про проведение регулярных демо. В пятницу делал демо, надо было рассказать коротко, поэтому выбрал тему которая рассказывается за 50-60 секунд

Показал, что добавил архив с профилированием и вкладку в TeamCity для быстрого доступа к отчету

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

Рассказ на 50-60 секунд был такой:
• Hook
• Action
• Result
• Next / Question
по всем правилам презентаций

Говорил примерно так:

Hello performance lovers! Analyzing YouTrack performance tests in TeamCity was quite difficult. We didn't have a fast way to see profiling and test results.

I added new profiling formats for better analysis of different performance cases. I also created a separate, convenient archive for all YourKit snapshots. Finally, I implemented a dedicated report tab in TeamCity that shows all test results in one place.

As a result, troubleshooting performance regressions is now much faster. It takes only one click to find a YourKit snapshot instead of several minutes of searching. This saves our team an hour every week.

I want to add new tabs with flame graphs and log based reports. Do you have any suggestions for the new report tab? Fell free to ping me

Вступление
Hello performance lovers!

использую. Мне нравится. Команде тоже

Читать полностью…

📢 Load & Performance

Привет performance lovers! Перефразируя классику:

Performance review близко

(ближе к зиме), но так далеко

И, часто, только на Performance Review мы получим объективную обратную связь о себе. Это как запускать тесты раз в год или пару раз

❓ Как бы получить обратную связь побыстрее, подумал я

✅ И применил вот эти руководства 📱 https://github.com/DenisSergeevitch/agents-best-practices от 📱 @denissexy для создания агентов, которые будут делать критическое ревью моих performance issues (пока только этого)

Получилось очень хорошо. Я прямо очень доволен. На вход агенту подал описание грейдов и мои текущие цели, о которых есть явная договоренность с менеджером. И теперь мои дела оцениваются агентом на соответствие этим целям

Агент принимает на вход как я описал проблему производительности, и я получаю оценку — достойная ли это проблема, хорошо ли описана

Я заметил, что появились коллеги, которые читают дефекты и ставят лайки. Лайки от коллег это отлично 🤗, а теперь будет и критика от Junie, описание задачи передаю просто ссылкой на задачу, а агент через MCP к 💻 YouTrack получает детали

Рекомендую эти скилы
📱 https://github.com/DenisSergeevitch/agents-best-practices
для создания агентов

Просто по инструкции сделал. Получилось хорошо. А потом повторно написал — а теперь обнови агента и критически оцени его — и получилось еще лучше

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Это моя мастерская по настройке переключателей скоростей. Состоит из стульев и метелки 🤦‍♂️

Начинал настройку я на балконе, но там холодно 🥶 и света нет. Поэтому постепенно мастерская переехала в комнату

Переключатели настраиваются так, что сначала задний, а потом передний. Но чтобы настроить задний, передний тоже нужен — на среднюю звезду надо как-то поставить все. Разных зависимостей масса

При настройке переднего есть гайды 👨‍💻 с 10-ю шагами, но без описания того а какое состояние вообще исходное — когда все работает, но что-то не так или оно какое-то конкретное — в таких гайдах не хватает еще шагов 0, 1.5, 2.5, ... и их должно быть 21 а не 10

А к чему это я тут ворчу?

В сообществе бывают задают вопросы не про настройку такой "простой" ерунды как переключатель скоростей. А про настройку параметров сложной системы где десятки зависимых элементов, или про инструмент где тоже десятки параметров. В вопросах почти никогда нет всего контекста и текущего состояния. Или исходного состояния. И на такие вопросы как-то отвечают, и ответы даже годные и даже помогают

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

А как я настроил эти перeключатели?

1️⃣ Посмотрел несколько видео, раз 10 посмотрел (часы)
2️⃣ Покрутил, собрал, разобрал, собрал, разобрал (десятки раз)
3️⃣ Снова посмотрел руководства
4️⃣ Вот начало что-то получаться, но все равно не уверен, что правильно
5️⃣ Надо будет поездить и потом перенастроить

Читать полностью…

📢 Load & Performance

Привет performance lovers!

Представьте, что вы применили оптимизацию, но через минуту стало только хуже, и через пять минут — тоже, и через десять...

🫣 Что это, почему так?

🤓 Все хорошо. Это кеши, и первое время они прогреваются и наполняются. Вот видно, что через 17-20 минут они заработали

☺️ Но первые 10 минут я хотел их выключить. Решил, что уже вечер и надо перекусить перед таким откатом, и пошёл за чаем. А когда вернулся — всё уже работало как надо

🤗 Пейте чай!

Читать полностью…

📢 Load & Performance

Привет performance lovers!

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

🔴 Видно что все потоки красные и заблокированы
🟡 Но на Flame Graphs и в стрек-трейсах ничего нет — как будто базовый метод-обертка взял и затормозил

Как такое возможно?

А возможно — профайлер не показывает в данных профилирования сам себя и накладные расходы на профилирование

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

Удачного профилирования!

Читать полностью…

📢 Load & Performance

Привет performance lovers! Я начал забывать

Двадцать лет назад я зачитывался историями про ученых Греции, про физиков и математиков. Поражала их память и объёмы информации в их голове

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

И это помогало быстро вспоминать что было вчера и неделю назад и месяц

Были и специальные заучивания. В университете у меня была специальная книжка куда я выписывал номера телефонов всех своих знакомых. Я фанат блокнотов и ручек и записей. А выписывание помогало запоминать их

Как-то работая в НПО я заучил и запомнил всех коллег по фото и имени. Не помню сколько человек это было, думаю пару недель учил просматривая карточки в SharePoint снова и снова. Там можно было делать что-то типа SQL запросов к данным и создавать отчёты — только с фото, только с именем, и с фото и с именем

А сегодня мне друг напомнил про поход к водопаду рядом с Иджеваном, а я не помню где это, где Иджеван? Какой из походов это был?

Буду снова ходить домой пешком и по пути вспоминать весь свой день в деталях. И записки надо будет вести активнее, рисунки и схемы рисовать, не полагаться на Google, который найдет.

Надеюсь, когда мы встретимся с вами и возникнет вопрос — а помнишь … — буду помнить

Читать полностью…

📢 Load & Performance

Привет performance lovers! Сегодня снова выходной, снова принес вам водицы. Это уже озеро в горах, холодное, чистое, красивое — чтобы вы отдохнули, подумали свои мысли и были готовы к любым алертам завтра, встречая их с улыбкой 🤗

Из нового — готовили с Мишей Жилиным доклад на Heisenbug и узнал из него как использовать git bisect с тестами производительности. Шел 40-й год жизни, я узнал про эту команду, которая была в git чуть ли не с начала времен 🤦‍♂️

# Вместо good/bad задаём свои слова: fast и slow
# Для поиска регрессий производительности
git bisect start --term-old fast --term-new slow
git bisect fast v5.17 # эта версия быстрая
git bisect slow v5.18 # эта — медленная

git bisect run ./bench.sh # exit 0 = fast, exit 1 = slow

# → 56a4d67c264e — коммит, замедливший систему

В рассказе Миши столько прикольных нагрузочный историй! Если вы будете на конференции завтра, то зайдите к нему, привет передайте

Читать полностью…

📢 Load & Performance

Привет любители производительности!

Собрал промежуточные результаты наших опросов /channel/qa_load/170588. Картина получается интересная: местами предсказуемая, а местами заставляющая задуматься, куда мы идем. 🤩

1️⃣ Кто мы и где находимся
Большая часть нашего сообщества (более 85%) это специалисты из РФ и РБ. Рынок повзрослел: сеньоров и лидов у нас почти столько же, сколько мидлов, а вот джунов совсем мало, меньше 5%. Это подтверждает мысль: простые задачи уходят в AI, и порог входа становится выше

2️⃣ Про деньги и полярность
Медиана нашего рынка — $2 000-$3 500. Но разброс колоссальный:

👑 Верхушка айсберга: Всего 3 человека (около 1.5%) пробили планку в $15 000-$22 000+. Это почти 100% корреляция с рынком США и позициями Staff-уровня.

🦾 Эффект Overemployment: 19 человек работают на 2+ проектах одновременно. Скорее всего, это они сидят в вилке $7 500-$12 000, превращаясь в индивидуальное Performance-агентство за счет AI, экономящего им 40% времени.

📉 Зона турбулентности: 33 человека получают меньше $2 000. При этом работу ищут 27 человек. Рынок насыщен специалистами с опытом 2–3 года, которые конкурируют за все чеки и за низкие чеки тоже

#статистика_нт #карьера_2026

Читать полностью…

📢 Load & Performance

Привет любители производительности!

У меня уходило ~ $10 в день на токены для AI агентов при кодинге. А вчера я запустил тесты агентом, где агент анализировал результаты. Ушло $137, на примерно 11 запусков коротких тестов для разных версий, анализ логов и результатов и сравнительный анализ

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

Сегодня переделал подход, где вместо чтения и анализа логов просто assert
🤩один раз сгенерировал код, который делает тесты на логи и метрики по результатам запуска, это стоило $2-3
🤩теперь JUnit сам дожидается и проверяет все что нужно
🤩запустил все в CI для разных версий, а потом посмотрел на результаты (да вручную, но было недолго)

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

Читать полностью…
Subscribe to a channel