В докладе я расскажу об использовании yandex.tank с BFG и locustio для нагрузочного тестирования.
Докладчик: Иван Гребенщиков
Видео: https://youtu.be/-kWm5V9pyCY
2. О себе
● В тестировании 2 года.
● С недавних пор присоединился к числу
разработчиков.
● Интересуюсь веб-разработкой, инструментами
для тестирования и автоматизации.
3. О компании
● БАРС Груп - ведущий российский разработчик
решений для государственного и
корпоративного секторов.
● С 2016 г. присоединились к структуре
госкорпорации «Ростех».
4. О нагрузочном тестировании
Вид автоматизированного тестирования,
имитирующее работу определенного количества
пользователей продукта.
6. На что обратить внимание при
тестировании
● Корректность отправки запроса
● Корректность отправки данных
● Корректность принятых данных
● Анализ ошибок
7. На что обратить внимание при выборе
инструмента
● Тип создаваемых тестов
● Возможность сбора метрик
● Возможность формирования результатов
тестирования
11. Яндекс.Танк
● Является оберткой над генераторами
нагрузки.
● В качестве генераторов нагрузки могут
выступать: Phantom, JMeter, BFG, Pandora.
● Имеет большое количество плагинов для
сбора метрик, анализа и формирования
результатов.
● Расширяем путем написания и подключения
собственных плагинов.
15. Яндекс.Танк Тест
# loadtest.py
import logging
import requests
log = logging.getLogger(__name__)
class LoadTest(object):
def __init__(self, gun):
self.gun = gun
def setup(self, param):
log.info("Setting up LoadTest: %s", param)
16. Яндекс.Танк Тест
# Продолжение class LoadTest
def case1(self, missile):
with self.gun.measure("case1"):
log.info("Shoot case 1: %s", missile)
requests.get(missile)
with self.gun.measure("case1_step2") as sample:
log.info("Shoot case 1, step 2: %s", missile)
sample["proto_code"] = 500
def case2(self, missile):
with self.gun.measure("case2"):
log.info("Shoot case 2: %s", missile)
requests.get(missile)
20. Яндекс.Танк Резюме
● Поддерживает как сценарный тип тестов, так
и hit-based
● Сборка метрик подключается плагином из
поставки
● Полученные данные отправляются в Overload,
формируя отчет
23. locust.io
● Пользовательское поведение описывается в
коде.
● Поддерживает запуск в распределенном
режиме.
● Минималистичный веб-интерфейс.
● Расширяем путем добавления обработчиков
событий.
32. locust.io Резюме
● Поддерживает как сценарный тип тестов, так и
hit-based
● Сборка метрик возможна путем использования
дополнительных приложений/скриптов
● Полученные данные могут быть сформированы в
отчет отдельными приложениями/скриптами*