Telegram Web
Forwarded from Viacheslav Smirnov
Дополню, чтобы рядышком лежало.
https://github.com/polarnik/gatling-report-example/tree/master/src/test/scala/io/qaload/gatling/reportExample/simulation

Проект с самыми разными профилями нагрузки на #Gatling.
Код снабжен полезными комментариями.

В составе проекта - открытая и закрытая модель нагрузки.
Тестовые_данные_для_нагрузки_Атака_не_клонов_Смирнов_Вячеслав_ВТБ.pdf
9.1 MB
Слайды "Тестовые данные для нагрузки. Атака не клонов" для митапа #9 Общества анонимных тестировщиков.

Спасибо, что пришли на митап. Запись велась, будет позже
Forwarded from Ekaterina Bono
QA-конференция QAASP 2020

16 октября в онлайн формате пройдет большая минская QA-конференция QAASP 2020: Quality Assurance, Automation, Security, Performance, Testing. На нее соберутся эксперты из успешных компаний, чтобы поделиться опытом тестирования не только software, но и hardware.

На конференции в формате онлайн вы сможете послушать доклады и пообщаться о наболевшем по насущным вопросам QA в следующих сферах:
• Ручное тестирование
• Автоматизация тестирования
• Нагрузочное тестирование
• Тестирование безопасности
• Серверное тестирование
• Мобильное тестирование
• Фреймворки и подходы
• Инструменты и тулы
• Usability-тестирование
• Построение процессов и команд в QA
• Управление тестированием
• Карьера в QA и после QA

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

Программа и доступы на сайте: https://qaasp.tech

Когда: 16 октября
Где: Везде, где есть интернет


Скидка 10% по промокоду QALOAD на все типы билетов (настоящие и будущие)
Forwarded from Sergei Chepkasov
Привет!
Релиз новой версии нашей библиотеки для gatling: https://github.com/TinkoffCreditSystems/gatling-picatinny/releases/tag/v0.6.0
Некоторые обновления:
* генерация jwt: добавить json шаблон для payload, добавить в сценарий одну строчку -> на каждой итерации генерируется jwt из шаблона с переменными из фидеров/сессии гатлинга. Актуально для всех у кого замокирована авторизация jwt на тесте.
* regex feeder: генерирует строку по регулярному выражению, дальше можно использовать в сценариях. Актуально для генерации id или других тестовых данных любого формата.
* обновления в модуле profile: теперь можно запускать тесты из yaml конфигурации.
* тест больше не падает при недоступности influxdb, только сообщает об ошибке, стоит учитывать.
Как пользоваться библиотекой можно узнать в ридми: https://github.com/TinkoffCreditSystems/gatling-picatinny/blob/master/README.md
Если создать новый проект из нашего шаблона, то библиотека уже подключена: https://github.com/TinkoffCreditSystems/gatling-template.g8
Вопросы по использованию можно задавать в этом чате или в личке, profile: @MaksSieve, любые вопросы по gatling-picatinny и giter8 шаблону: @chepk @jigarkhwar
Всем хорошего дня)
Привет всем! Все мы в мире нагрузки немного устали от разношерстной терминологии, абстрактной стандартизации и передачи опыта в формате Мастер Джедай -> Падаван.
Поэтому мы решили собрать инициативную группу людей, которая бы начала формирование общей базы знаний по нагрузочному тестированию.
В данную группу очень требуются люди, обладающие этими самыми знаниями в сфере нагрузочного тестирования или близко к ней.
Большая просьба к тем, кто хочет эти знания только получить или просто недостаточно уверен в своих знаниях - не вступать в инициативную группу. Вся база будет общедоступной и мы обязательно будем делать все необходимые анонсы по её реализации и наполнению. С очень большой вероятностью вы сможете дополнять её своими знаниями, но после её формирования.
Ссылка на чат: https://www.tgoop.com/LoadKnowledge
Большим плюсом будет если вы, при входе в чат, кратко расскажете о своей работе и опыте. Спасибо!
Forwarded from Vi
Коллеги, привет! Хочу сообщить вам о выпуске новой версии плагина для тестирования AMQP c помощью gatling. GitHub проекта https://github.com/TinkoffCreditSystems/gatling-amqp-plugin. В этой версии (0.0.4) наконец-то появилась поддержка топиков, обновлены версии gatling и rabbit-mq клиента. Изменён ДСЛ для задания пропертей и заголовков сообщений. Возможно кому-то пригодится, будем ждать вашего фидбека. #gatling #amqp #rabbit-mq #gatling3.4
Всем привет!
Обновил пример gatling-скриптов для демонстрации различных моделей нагрузки.

Открытая модель нагрузки
Сценарий:
io.qaload.gatling.reportExample.simulation.OpenModel_IncrementUsersPerSec
* Gatling Grafana Report: Gatling - open model
* openmodel-incrementuserspersec

Обратите внимание, как при открытой модели нагрузки растет количество одновременно работающих сценариев после точки деградации

Закрытая модель нагрузки
Сценарий:
io.qaload.gatling.reportExample.simulation.CloseModel_IncrementConcurrentUsers + trottle
Который рекомендую использовать вместо открытой модели
* Gatling Grafana Report: Gatling - closed model
* closemodel-incrementconcurrentusers

Обратите внимание на ровный по RPS профиль нагрузки, это trottle. И что после точки деградации количество параллельных сценариев (а следовательно потоков в Gatling) не растёт.

Значит Gatling не упадет по Out Of Memory Error под конец теста. А нагрузка та же самая.

По ссылкам доступны отчёты: Grafana и HTML.

Репозиторий:
https://github.com/polarnik/gatling-report-example
Forwarded from Sergei Chepkasov
Всем привет!
Провели воркшоп на гейзенбаге по тестированию производительности с gatling и gitlab, для воркшопа подготовлено множество материалов, которые могут помочь в самостоятельном изучении этих инструментов.
Все материалы доступны в публичном репозитории: https://gitlab.com/tinkoffperfworkshop
Первую часть воркшопа можно повторить самостоятельно по шагам из шпаргалки: https://gitlab.com/tinkoffperfworkshop/part-1/cheat-sheet
Во второй части созданы отдельные репозитории, в них также есть ридми с инструкциями: https://gitlab.com/tinkoffperfworkshop/part-2

Что есть интересного:
1. Разворачиваем окружение для тестов локально в контейнерах: influxdb, vector, loki, prometheus, cadvisor, portainer, grafana, gitlab-runner
2. Создаем скрипты gatling для различных протоколов: http, jdbc, grpc
3. Создаем CI джобы для gitlab
4. Подключаем агент в gitlab.com
5. Проводим и мониторим тесты
TestTrend meetup
2 декабря 2020 года

Программа митапа:
1️⃣ Владимир Плизга, ЦФТ, “И мне ничего за это не будет.” Как внедрять тестовое поведение в чистовой код?
Рассказ с примерами, демoнстацией и сравнением
- AspectJ
- Byteman
- jMint
🗝 про Side Effect Injection
🖼 Слайды к докладу

2️⃣ Артём Козленко, ЦФТ, Атомарность в UI-тестах
Рассказ с примерами и демонстрацией того, как можно
- упростить тесты и ускорить их
- использовать Mock-и для этого
- сделать тесты более стабильными
🗝 про Целевую проверку

3️⃣ Вячеслав Смирнов, ВТБ, Три этапа поиска максимальной производительности
Рассказ с примерами реализации и схемами работы:
- Прогревающего теста
- Теста MaxPerf
- Теста стабильности
🗝 про применение таймеров для разных тестов в Apache.JMeter и Gatling
🖼 Слайды к докладу

🎥 Запись: https://youtu.be/rCHJ7iQr6To
Где есть и сами доклады и ответы на вопросы.
Часть ответов на вопросы осталась за кадром в чате: https://www.tgoop.com/testtrend_cft/884

Мне очень понравилось. Участникам тоже. Отзывы классные
Не так давно вышел новый jmeter 5.4. Добавили GraphQL Sampler и новый InfluxDBClient, который пишет "raw" results. Для тех кому интересно вот release notes и ссылочка на скачивание:
https://jmeter.apache.org/changes.html
https://jmeter.apache.org/download_jmeter.cgi
Forwarded from Viktor Ganeles
Ребята, я тут выступил на конфе от OTUS
Рассказываю, как мы поэтапно оптимизировали систему

https://m.youtube.com/watch?v=FU3zTrRqMys&t=11700s

Я начинаюсь в 03:15:00
Всем привет!
Обзор того, как мы делились опытом и помогали друг другу за две недели. #дайджест

Максим Евлентьев долго пытался получить в Grafana значения Percentile, такие как JMeter HTML Report, ему помогали все:
▫️ Попробовали backend_influxdb.send_interval=1
▫️ Строили гипотезы как считается статистика
▫️ Функции last("pct99.0"), mean("pct99.0"), percentile("pct99.0",99), percentile("mean",99) не дали нужной точности, минимальная погрешность - 20% у mean("pct99.0")
Пришли к необходимости использования сырых данных:
▫️ использовать Novatech-плагин, что шлет сырые данные
▫️ JMeter 5.4, который может писать сырые данные
▫️ Telegraf как Proxy для надежности вставки сырых данных
❗️Но помните - сырые данные замедляют InfluxDB, альтернативы сырым данным:
▫️ Clickhouse и InfluxDB Сontinious Querie для аггрегации сырых данных
▫️ Наоборот увеличить шаг отправки данных с 1с до 30с для точности и простоты аггрегаций


📊 Обсудили сравнение двух запусков тестов :
▫️ Проект influxdb-timeshift-proxy
▫️ Просто настройку Query Option / Time Shift в Grafana
▫️ Язык Flux + функцию timeshift
▫️ Хранилище ClickHouse + timeshift
▫️ Плагин MetaQuery для Grafana имеет функцию TimeShift
▫️ По сырым CSV-данным и заливкой сырых логов SendLogToInfluxDB (от Степана)
▫️ По сырым данным заливаемым с jsr223-listner-ом
▫️ Roman указал на проект autohome-compareQueries-datasource который работает с Grafana 6.5.3
▫️ Простой вариант с MergeResults + стандартный html отчёт + готовый скрипт для Jenkins
▫️ Предложен проект carrier-io, в котором есть Grafana-доска со сравнением


😀 Шутили


Разработки:
🆕 Sergey Bronnikov реализовал свой perfmon-agent на языке C. Если кому нужно - обращайтесь к @ligurio
🆕 Степан реализовал SendLogToInfluxDB для отправки JTL/CSV логов JMeter в InfluxDB

Доклады:
🎥 Виктор выступил с докладом "Пример оптимизации производительности в 32 раза"

Gatling:
▫️Отладка HTTP-запросов в Gatling логированием и через проксирование в Fiddler
▫️Разделение Gatling-статистики по двум системам:
▫️по двум базам данным InfluxDB через разные порты
▫️ по двум разным серверам InfluxDB
JMeter:
▫️обсуждали как на связке Grafana + InfluxDB сделать отчеты для JMeter такие же как в Yandex.Tank, Кирилл предложил свой jmeterReports.
▫️поняли, что плагин jp@gc - Transactions per Second учитывает подзапросы, и значения TPS получаются выше, чем в Summary Report / Throughput для TOTAL
▫️получали дату из интервала через ${__RandomDate(,2020-12-09,2021-12-09,,)}
▫️настройка профиля нагрузки со стандартной Thread Group
▫️скачивание огромного ответа на SQL-запрос с OS Process Sampler
▫️подбирали количество потоков в JMeter для увеличения TPS
▫️выбирали сайт и способ для поиска пределов JMeter
▫️выясняли причины Response code:Non HTTP response code: org.apache.http.conn.HttpHostConnectException
▫️заливали Connect Time из сырых JTL/CSV-логов JMeter в InfluxDB c помощью проекта SendLogToInfluxDB
▫️игнорировали ошибку NullPointerException: null при использовании openJDK 15.0.1 и JMeter 5.3, 5.4 на MacOS, которая исправилась с переходом на AdoptOpenJDK
▫️осваивали работу с HTTP(S) Test Script Recorder, Fiddler, Proxyman и конверторами для записи скриптов
▫️убирали ошибку java.lang.OutOfMemoryError: Metaspace in thread удалением -XX:MaxMetaspaceSize=256m из параметров запуска и профилировали JMeter c JProfiler, Java Flight Recorder и AsyncProfiler
▫️меняли Xmx Xms без правки jmeter.bat
▫️беуспешно пытались сделать дробный малый RPS с ThroughputShapingTimer (это невозможно, тут нужен Constant Throughput Timer)
▫️удивлялись, что в JMeter есть Autosave и отмена редактирования Ctrl+Z

Также интересные обсуждения:
1️⃣ Выстраивание коммуникации на проекте НТ, советы бывалых
2️⃣ Рассчет количества WebSocket-подключений с одной станции AWS
3️⃣ Расчет модели нагрузки, поиск ПЧ (пиковый час)
4️⃣ Разбор AWR для Oracle
5️⃣ Спор нужна ли загрузка статики?
Она не влияет на backend в некоторых системах
Она может загружать сеть и диск
Может отдаваться самим беком и даже приводить к OutOfMemory
Может быть не настроено клиентское кеширование на сервере и статика - узкое место
Всем привет! Выпускаем очередной краткий #дайджест обсуждений за неделю (21-28 декабря):

▫️Успешно реализовали дробные РПС с двумя видами таймеров в JMeter. Получили очень точные результаты, но на dummy sampler'ах. Даже провели небольшое исследование! Пришли к тому, что гнаться за супер точными РПСами - ни к чему.
▫️Узнавали умеет ли JMeter работать с local storage. Ответ: нет, не умеет, но умеет его имитировать.
▫️Разобрались с тем, как вручную собрать отчет в Gatling, если тест был прерван.
▫️Мимолетно заметили, что появился Gatling 3.5.0 со Scala 2.13.
▫️Делились опытом по поводу того, на тему учета неуспешных запросов в РПС.
▫️Пытались решить проблему с запуском фреймоврка и плавно перетекли в обсуждение docker'a.
▫️Ремонтировали дашборд для Gatling от @smirnovqa.
▫️Разбирались в реализации SSE на Gatling.
▫️Помогали решать тестовое задание. История без успеха, зато тестовое оптимизировали!
▫️Настраивали задержку в персентилях на wiremock.
▫️Закладывали время выполнения сценария с помощью интуиции.
▫️Учились читать readme к генератору отчетов и дашбордам (но еще была проблема в кириллице в пути к jmeter).
▫️Составляли чек-лист для общения с заказчиком нагрузки.
▫️Обсудили разницу "виртуалок" и "железных" машин.
▫️Искали целые числа, которые потерялись при запросе из Grafana в Prometheus.
▫️Оптимизировали потребление памяти при загрузке файлов на сервер в JMeter. Спойлер: косяк был в нагружаемой системе (но не только!).

Полезности:
1️⃣ @instaHipsta рекомендует инструмент для сравнения больших xml .
2️⃣ И снова @instaHipsta заметил интересную особенность Module Controller в JMeter.
3️⃣ Рекомендация @smirnovqa с автоматическим контролем SLA.
4️⃣ @smirnovqa поделился шаблоном методики нагрузочного тестирования.
5️⃣ У @annabella0131 родился опросник по серверным характеристикам для клиента.
6️⃣ @eugenis поделился методом обхода fileUpload, как следствие - экономия памяти в JMeter
Всем привет! Выпускаем очередной краткий #дайджест обсуждений за две недели (29 декабря-12 января):

▫️Разбирали JMeter и формат времени в Java:
YY, YMD - магические константы, а yyyy - формат для года
m - малое, минуты, M - большое, месяцы
▫️Заметили, что галочка Generate Parent Sample в Transaction Controller не дает возможности записать статистику по вложенным запросам в Elasticsearch Backend Listener(delirius325)
▫️Разбор результатов нагрузки Microsoft Exchange через JMeter и MS Graph API, где со временем замедляется работа. На графиках прослеживается как при закрытой модели нагрузки снижается RPS 📉при увеличении времени отклика 📈
▫️Когда лучше фиксировать результат, в момент отправки запроса, а когда в момент получения ответа:
# Save the start time stamp instead of the end
# This also affects the timestamp stored in result files
sampleresult.timestamp.start=true
▫️И более общий вопрос: RPS - это Request Per Second или Responce Per Second?
▫️Почему запуск тестов JMeter Non-GUI лучше JMeter GUI:
* разная работа кода, таймеров
* меньший расход оперативной памяти
* CI/CD-запуск
* меньше шансов сломать большой JMX-файл
▫️Случайно удалились записи от Виктора 🤷‍♂️
▫️Обсуждали подход к тестированию асинхронного сервиса, в котором есть ограничение сверху на интенсивность операций
▫️Анализ аномалий в результатах Yandex.Tank и гипотеза по ускорению теста: нужна настройка станции
▫️Составление методики тестирования REST API интерфейсом с учетом генерации, использования и восстановления данных системы
▫️Обсуждение статьи Нагрузочное тестирование выполнять сложно, а инструменты далеки от совершенства. Почему?, в которой автор задался целью повторения действий пользователя с максимальной реалистичностью при подаче нагрузки. Обсуждение интересно историями, когда действительно стоит отказаться от готового инструмента нагрузки в пользу разработки своего, а когда нет
▫️Интересное обсуждение о совмещении ролей ФТ, АТ, НТ на проекте.
▫️Жаркое обсуждение того, как лучше хранить, редактировать и запускать исходный код проекта JMeter, с учетом особенностей:
* в команде несколько человек и удобны Include Controller
* когда удобно собирать свой дистрибутив
* когда удобно использовать maven
* когда неудобно генерировать JMX/XML-файл, а когда можно
▫️Что делать если хочется отрисовать в Grafana более 3400 точек на графике, а не получается

Спасибо, что делитесь опытом!
Пишите в @qa_load, читайте @qaload
2025/07/12 20:33:20
Back to Top
HTML Embed Code: