Рубрики
Без рубрики

Саранча на лазуре: сквозной опыт

Locust.io – это простая и мощная структура тестирования нагрузки, основанная на Python, идеально подходящей для Deve … Tagged с саранчкой, лазурной, тестированием, Python.

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”