Locust.io это простая и мощная структура тестирования нагрузки, основанная на Python, идеально подходящей для разработчиков и API.
Саранча может быть установлен локально на вашей рабочей станции Dev, развернутой на облачной виртуальной машине или в кластере Kubernetes. ИМО лучший сценарий, идеально подходящий к идее, что нагрузочное тестирование должно быть простым и повторяющимся задачей, обеспечивается отличной работой Давиде Маури для развертывания конфигурации саранчи с мастером-раб на экземплярах контейнеров в лазурных контейнерах, что было моей отправной точкой.
Бегущий саранча на лазуре
Davide Mauri для Microsoft Azure ・ 17 февраля 2020 года читать
Варианты развертывания
Этот проект предоставляет вам столько же рабов, сколько и пользователей Lacust, которые вы настраиваете: сценарий развертывания, настройка хранилища Azure, общее между экземплярами контейнеров Azure, загрузите тестовые сценарии и через шаблон Azure развертывает все другие ресурсы. Как только саранча выполнила тесты, и вы собрали результаты, вы можете удалить тестирующую инфраструктуру, не затрагивая никаких дополнительных затрат. Чтобы дать перспективу тестового затраты на эту инфраструктуру, согласно к общественным ценам на экземпляры контейнеров Azure 1 -часовой тест с 4 рабами может стоить около 0,24 €.
yorek/locust-on-azure
Запуск распределенной Locust.io на экземплярах контейнеров Azure
Осознавать хранение
Напоминание: скрипт развертывания копирует все, от папки Local/Locust до файлов Azure, поэтому ваша саранча будет иметь сценарии и файлы/полезные нагрузки для тестирования на экземплярах контейнера Azure Как только мой первый тест попытался совести функцию Azure, разместив изображения, я заметил, что он не выполнялся, как я ожидал. Мне потребовалось некоторое время, чтобы понять влияние моего кода Python Python Lacust Python: я читал изображение из монтируемого файла Azure, общего с каждым выполнением задачи саранчи, поэтому я тратил впустую ресурсы для тестирования (рабов) в повторяющихся Задача, не выдвигая достаточных запросов, пропустив всю смысл теста загрузки, и № 2 я не учитывал, что Azure Files имеет свою собственную цель масштабируемости Анкет Это был мой код:
from locust import HttpUser, TaskSet, task, between class APICalls(TaskSet): @task() def analyzeimage(self): image = open('/locust/sample_face.png', 'rb').read() self.client.post("Analyze", files={"shot": image}, name="/analyzeimage") class APIUser(HttpUser): tasks = [APICalls] wait_time = between(0.05, 0.1) # seconds
Я изменил код Python, загрузив полезную нагрузку в глобальную переменную AT Определение пользователя саранчи Поэтому изображение читается из Azure File Share один раз для каждой из нескольких сотен саранчи, которые я вылупил, вместо нескольких тысяч в минуту.
from locust import HttpUser, TaskSet, task, between, events global image class APICalls(TaskSet): @task() def analyzeimage(self): global image self.client.post("Analyze", files={"shot": image}, name="/analyzeimage") class APIUser(HttpUser): tasks = [APICalls] wait_time = between(0.05, 0.1) # seconds def on_start(self): global image image = open('/locust/sample_face.png', 'rb').read()
После этого столь необходимых изменений тесты, свободные от ненужных ограничений на поведение рабов, выполняемые, как и ожидалось: я всегда поражен силой Функции Azure ! Есть, безусловно, есть другие более эффективные варианты для определения тестов: пожалуйста, обратитесь к Документация саранчи Для деталей.
Как записать тест саранчи
В то время как мой поиск структуры нагрузочного тестирования был основан на определенной потребности (в первую очередь тестирование нагрузки API), это обычно определяет набор тестирования, записывая просмотр сложного ресурса, такого как веб -сайт, поэтому избегая необходимости вручную записать тесты. А именно jmeter является чемпионом этого варианта использования: если вы заинтересованы в Jmeter, пожалуйста, проверьте отличную работу по Паоло Сальватори на тестировании нагрузки на jmeter на Azure . Можно также достичь одной и той же цели с саранчой: с помощью MITM , Интерактивный проект с открытым исходным кодом, просмотр веб -сайта записан и Саранча. Replay Позволяет вам экспортировать захваченные потоки в формат сценария саранчи. Опыт DEV завершен браузером Firefox, так как он позволяет вам иметь отдельный прокси из общесистемной конфигурации, поэтому не влияет на остальные приложения и услуги на вашей локальной машине DEV. Так выглядит поток разработчика: Мне нравится, насколько немедленная саранча в определении простого сценария тестирования и сложных. Начните сейчас, чтобы использовать Саранча на azure В вашем плане тестирования!
Оригинал: “https://dev.to/bedindavide/locust-on-azure-an-end-to-end-experience-48f7”