Давать метрики командам, важнее, чем отчет и баги по производительности
Запускать тесты с разными профилями на разных стендах, с разных агентов и локально
docker, docker-compose
Параметризация тестовых данных, стенда и профиля
k6_test_accounts:image:grafana/k6:0.40.0restart:"no"volumes:-"./src/test/config/:/tmp/src/test/config/:ro"-"./src/test/k6/:/tmp/src/test/k6/:ro"-"./results/k6_test_account:/tmp/results/:rw"environment:-TEST_CONFIG=perf-environment-1.big-workload.json# Стенд и тестовые данные -K6_RPS=20# Интенсивность (профиль)-K6_VUS=20# Время отклика (SLA)-K6_ITERATIONS=10000# Длительность тестаworking_dir:"/tmp/results/"command:"run --insecure-skip-tls-verify
--out influxdb=http://influxdb:8086/k6
/tmp/src/test/k6/test_accounts.js
"
Для Taurus надо будет получить ENV с профилем скриптом
k6_test_accounts_taurus:image:blazemeter/taurus:1.16.17restart:"no"volumes:-"./src/test/config/:/tmp/src/test/config/:ro"-"./src/test/k6/:/tmp/src/test/k6/:ro"-"./results/k6_test_accounts:/tmp/results/:rw"-"./src/test/bzt-configs/:/bzt-configs"-"./results/k6_test_accounts_taurus:/tmp/artifacts:rw"-"./src/test/k6/lib/taurusOpts.js:/tmp/src/test/k6/lib/commonOptions.js:ro"environment:-TEST_CONFIG=perf-environment-1.big-workload.json# Стенд и тестовые данные -K6_RPS=20# Интенсивность (профиль)-K6_VUS=20# Время отклика (SLA)-K6_ITERATIONS=10000# Длительность тестаworking_dir:"/tmp/results/"command:"/bzt-configs/test_accounts.yaml"
В Docker можно монтировать и каталог и файл в каталоге
environment:-TEST_CONFIG=perf-environment-1.big-workload.json# Стенд и тестовые данные -K6_RPS=20# Интенсивность (профиль)-K6_VUS=20# Время отклика (SLA)-K6_ITERATIONS=10000# Длительность тестаworking_dir:"/tmp/results/"command:"/bzt-configs/test_accounts.yaml"
Запуск тестов из Docker удобен и перспективен
Автоматизация нагрузки по расписанию или кнопке
Jenkins, Pipeline, Python, Ansible, Terraform
Работа со стендом и метриками наиболее сложны
Восстановление системы из снимка
Обновление версии системы
Запуск и подготовка системы к тестированию
Запуск тестов производительности
Запомнить время старта
Запустить профилирование до старта
Тест, скрипт подачи нагрузки
Сохранить результаты теста
Сохранить системные метрики за тест
Сохранить логи, результаты профилирования и ссылки
Сравнить метрики и отправить нотификации о деградации
Остановка системы
Остановка окружения
Облачный тестовый стенд автоматически создается для тестирования
Написать регрессионные нагрузочные тесты-метрики frontend'а, как замена Jaeger
sitespeed.io
Потрясающие отчеты
Просто потрясающие отчеты
А если нужна аутентификация?
В конфиге теста настроим использование user-data-dir
Тесты фронта с sitespeed.io делаются просто, приносят массу пользы
Что нового в нагрузке сделали другие?
Андрей Похилько, UP9, быстрый mock server, Mockintosh
UP9, сетевой отладчик k8s, Mizu
Андрей Сатарин, исследование сбоев при обновлениях
Mark Tomlinson, Performance Exploration For Testers
Андрей Акиньшин, Профессиональный бенчмарк
Будущее будет быстрым
AWS, своих датацентров никто не строит, специфика Украины - все хостится в облаках, в России - все хостятся у себя.
Облачные реалии наступают.
В связи с переездом многие вещи. Изменились.
Вот я никогда не работает с AWS и тестирование нагрузки в облаках это другое. Вы не понимаете - это другое.
Иллюстрация
Тестирование обновления кластера. 1000 - 2000 нод.
Squisse, тестирование одной ноды на проде до ее пределов.
Потом две ноды.
Проверка линейности масшабирования системы.
Берем простые вещи и тестируем сложную систему.
Берем ото всех по чуть-чуть и получаем исследование, которое находится на стыке Test и Ops.
Написание тестов на узкое место. Написание маленького теста на проблему.
Команды пугают другие вещи - мы делали-делали, подали нагрузку, а тут вот ... медленно стало.
Команды хотят Feature toggle.
Тестированеи производительности
1) Проверка по факту
2) Метрики на проде, трейсинг, который покажет, в чем узкое место
Arrange, Act, (Assert)
!!!!!
Сделать более яркий переход между слайдами голосом. Интонацией.
Почему раньше не запускали тесты из Docker? Были проблемы производительности самого Docker. Сейчас он позволяет.
Istio, Envoy, balancer, ...
Особенно, когда тестируются сервисы развернутые в k8s
Разработчик может запустить нагрузку локального с локальной машины разработчика
Много денег надо будет за облако. И для нагрузки становится важно развертывать и свертывать конрут нагрузки.
lithhouse -- для ручной проверки.
А тут как LH с мониторингом
- Андрей Похилько - новый инструмент для нагрузки и Mizu.io - отличная утилита для разбора проблем в Kubernetes
- Илья Бровкин - новая платформа для Web3 https://www.linkedin.com/in/iliyabrovkin/
- Олесь Писаренко - новый инструмент для нагрузки на GoLang https://www.linkedin.com/in/doctornkz/
- Андрей Сатарин - https://www.linkedin.com/in/asatarin/ тестирование корректности распределенных систем во время обновления и отката версиий в дополнение к стресс-тестированию в помощью unit-тестов, выполняемых во время обновления или масштабирования системы https://asatarin.github.io/talks/2022-09-upgrade-failures-in-distributed-systems/
- Андрей Акиньшин - новая книга Профессиональный бенчмаркинг
- Антон Серпутько - работает в США, участвовал в подкасте по производительности https://t.me/dou_qa/484
- Mark Tomlinson - сделал курс по эксплуатационному тестированию производительности, тестирование цель которого в поиске узких мест и записал много новых выпусков подкаста PerfBytes https://www.linkedin.com/in/mtomlins/
- Paul McLean - предоставляет API для тестовых данных, https://www.youtube.com/watch?v=bFAICy5j35M https://www.linkedin.com/in/paulmclean2/ интересные материалы, тестирование производительности Starlink и геораспределенное тестирование с помощью Gatling, тренды тестирования приоизводительности в 2021 году https://www.youtube.com/watch?v=z3yvh4syuqw и https://www.mammoth-ai.com/top-performance-engineering-trends-5-things-your-team-needs-to-know/
- Joe Calantonio, Performance & SRE Podcast https://testguild.com/podcasts/performance/ и https://www.linkedin.com/in/joecolantonio/
- Andreas Grabner https://www.linkedin.com/in/grabnerandi/ OpenTelemetry, Keptn
- Federico Toledo, jmeter-java-dsl https://www.linkedin.com/in/federicotoledo/
- Vitaly Friedman, https://www.linkedin.com/in/vitalyfriedman/,
- Alex Xu, https://www.linkedin.com/in/alexxubyte/ System Design
- 🤠Leandro Melendez (Señor Performo) https://www.linkedin.com/in/leandromelendez/ интервью с разными инженерами
- Henrik Rexed https://www.linkedin.com/in/hrexed/ Observability, Dynatrace, OpenTelemetry, eBPF
- Jason Arbon, test.ai, https://www.linkedin.com/in/jasonarbon/
Batch вставка результатов тестов, после выполнения всех тестов это быстрее, чем вставка результатов тестов после каждого теста
- Mehdi Daoudi, Cachpoint https://www.linkedin.com/in/mdaoudi/
- Kent Beck,
- Stephen Townshend, https://www.linkedin.com/in/stephentownshend/
- Jeff Barr,
- Delvis Echeverria, https://www.linkedin.com/in/delvisecheverria/recent-activity/
- Denis Bakhvalov, https://www.linkedin.com/in/dendibakh/
-