Тестирование нагрузки на сайт

Яндекс.Танк

Не секрет, что в компании Яндекс имеется своя экосистема различных
инструментов для абсолютно разных задач. Некоторые говорят, что если есть
возможность написать свой инструмент, то Яндекс обязательно это сделает (иногда
без оглядки на уже имеющиеся решения).  Не обошла стороной эта тема и инструменты для
нагрузочного тестирования.

После своего создания в 2006 году, Танк прошёл длинный путь своего
развития и сейчас позволяет использовать разные типы генераторов нагрузки. Если
нужно протестировать http-сервис на высокую нагрузку, то
используется Phantom (C++). Интеграция Танка с JMeter в свою очередь позволяет реализовать
сценарный тип тестирования со всеми протоколами, которые поддерживаются JMeter.

Кроме того, можно использовать BFG-Python-генератор и написанный на Go Pandora.

Сам Танк реализован на Python и может использоваться только в Unix-системах.

Плюсы

  • функция автоматической остановки теста;
  • встроенный мониторинг серверов по ssh-протоколу;
  • открытая конфигурация для создания собственных модулей;
  • доступна интеграция с Graphite.

Минусы

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

Кому подходит

Яндекс.Танк хорошо подходит в сочетании с phantom, если отсутствует
необходимость в сценарном тестировании и требуется высокая производительность.

Ключевые преимущества

  1. Оценка возможностей системы и определение максимальной производительности

  2. Выявление ошибок (например, утечка памяти, некорректные настройки или распределение ресурсов)
  3. Предупреждение отказов системы в промышленной эксплуатации
  4. Поиск оптимального комплекса технических средств (КТС)

Протестируем системы любой сложности: поисковые, биллинговые, процессинговые, SAP и многие другие

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

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

Нагрузочное тестирование требует обстоятельных знаний специфики различных серверов, сетевых протоколов, практических навыков в программировании и т. д.

Основные этапы нагрузочного тестирования

Подготовка

Проведение

Отчет

Подготовка

Проводится анализ целей и статистики эксплуатации системы. Определяются бизнес-операции, имеющие значение с точки зрения нагрузки на систему. Создается и согласуется документ «Методика нагрузочного тестирования», который включает: стратегию тестирования, список и описание тестов, критерии успешного завершения, описание средств мониторинга и инструментов нагрузочного тестирования. Осуществляется подготовка тестовых данных, настраивается мониторинг, наполняется база данных.

Проведение

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

Отчет

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

Инструменты

Высококвалифицированные инженеры-тестировщики компании «IBS AppLine» при выполнении нагрузочного тестирования используют продукты ведущих вендоров отрасли: HP LoadRunner, Apache JMeter, IBM Performance Tester, MS Visual Studio Ultimate.

Категории тестирования

Тесты существенно различаются по задачам, которые с их помощью решаются, и по используемой технике.

Категории тестирования Описание категории Виды тестирования
Текущее тестирование Набор тестов, выполняемый для определения работоспособности добавленных новых возможностей системы.
  • нагрузочное тестирование;
  • тестирование бизнес циклов;
  • стрессовое тестирование.
Регрессионное тестирование Цель регрессионного тестирования заключается в проверке того, что добавления к системе не уменьшили ее возможностей, т.е. тестирование проводится согласно требованиям, которые уже были выполнены перед добавлением новых возможностей.
  • нагрузочное тестирование;
  • тестирование бизнес циклов;
  • стрессовое тестирование.

Подкатегории тестирования

Подкатегории тестирования Описание вида тестирования Подвиды тестирования
Нагрузочное тестирование Применяется для тестирования всех без исключения функций приложения. В данном случае последовательность тестирования функций не имеет значения.
  • unit-тестирование (модульное тестирование);
  • функциональное тестирование;
  • тестирование интерфейса;
  • тестирование БД
Тестирование бизнес циклов Применяется для тестирования функций приложения в последовательности их вызова пользователем. Например, имитация всех действия бухгалтера за 1 квартал.
  • unit-тестирование (модульное тестирование);
  • функциональное тестирование;
  • тестирование интерфейса;
  • тестирование БД.
Стрессовое тестирование

Применяется для тестирования

производительности приложения. Цель данного тестирования — определить рамки стабильной работы приложения. При данном тестирование производится вызов всех доступных функций.

  • unit-тестирование (модульное тестирование);
  • функциональное тестирование;
  • тестирование интерфейса;
  • тестирование БД.

Что оценивает тест

Тест оценивает производительность всей совокупности серверного оборудования и серверного программного обеспечения с точки зрения задач, типичных для систем, работающих на платформе «1С:Предприятие 8». То есть полученная оценка отражает не производительность какого-то одного серверного компонента системы (например, рабочего сервера кластера «1С:Предприятия»), а всей серверной конфигурации в целом. Серверная часть системы, производительность которой измеряется данным тестом, включает в себя:

  • все рабочие серверы, использованные для развертывания кластера «1С:Предприятия» и серверы СУБД
  • операционные системы всех рабочих серверов;
  • настройки операционных систем, «1С:Предприятия» и СУБД.

При проведении тестирования тест будет автоматически увеличивать количество одновременно работающих пользователей до тех пор, пока один из аппаратных или программных компонентов системы не перестанет справляться с нагрузкой. Это приведет к получению плохой оценки производительности, и тест остановится, выдав последнее хорошее значение в качестве результата. При этом остальные компоненты могут оказаться в той или иной степени недогруженными.

Таким образом, тест оценивает производительность серверной части системы по самому узкому месту, то есть ее наименее производительному компоненту.

Если серверная часть системы недостаточно хорошо сбалансирована для работы с «1С:Предприятием», то при устранении узкого места (замене или апгрейде наименее производительного компонента) можно будет получить более высокую оценку производительности.

Следует обратить внимание на то, что тест никак не оценивает производительность клиентской части системы, поэтому этот фактор должен быть полностью исключен. Иначе говоря, клиентские рабочие места не должны стать узким местом системы

Этот вопрос более детально обсуждается в главе «Подготовка клиентской части тестового стенда».

BlazeMeter

BlazeMeter – компания-производитель одноимённого программного
обеспечения для тестирования, предоставляющая пользователям тестирование
производительности и нагрузочное тестирование как услугу. Служба содержит
инновационную и всеобъемлющую платформу непрерывного тестирования.
Веб-интерфейс приложения эффективен для создания статических нагрузочных тестов
и использования сценариев JMeter для выполнения динамических нагрузочных
тестов.

BlazeMeter известен широчайшим использованием одного из лучших
инструментов нагрузочного тестирования с открытым исходным кодом – Apache
Jmeter. Он предоставляет различные корпоративные функции для бесплатной
платформы. То есть пользователи могут получить доступ ко многим расширенным
функциям, таким как мониторинг производительности приложений (APM), создание
отчетов в режиме реального времени, распределенное тестирование и интеграция с
инструментами разработчика для непрерывной интеграции (CI).

Плюсы

  • 100% совместимость с Apache JMeter
  • Создание масштабных тестов – до 1 миллиона одновременно
    работающих пользователей.
  • Настройка тестов в течение нескольких минут
  • Запуск тестов без сценариев или загрузка списков URL
  • Запуск из облака или локально
  • Запуск тестов из нескольких географических местоположений
  • Имитация мобильного тестирования с реальных устройств
  • Облегчает командное сотрудничество с помощью сценариев и
    обмена отчетами
  • Поддержка нескольких инструментов
  • Интеграция с ведущими инструментами CI и APM
  • Поддержка и профессиональные услуги
  • Подробный отчет о результатах нагрузочных испытаний в режиме
    реального времени
  • Установка КПЭ поведения тестируемого приложения
  • Мониторинг собранного пользовательского опыта на компьютере
    и мобильных устройствах

Минусы

  • Отчеты Blazemeter довольно простые и не детализированные
  • Blazemeter дорог для нагрузочных тестов больше чем с 1000
    пользователей.

Ценообразование (годовые планы)

  • Бесплатно (50 одновременных пользователей)
  • Базовый: $ 99 / мес (1000 одновременных пользователей)
  • Pro: $ 499 / мес (5000 одновременных пользователей)

Кому подходит

BlazeMeter – отличный инструмент для
нагрузочного тестирования для организаций, которые уже используют Apache Jmeter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *