Разница между открытыми и закрытыми инструментами нагрузочного тестирования

В чем разница между открытым и закрытым нагрузочным тестированием?
К какой категории относится инструмент нагрузочного тестирования на основе потоков?
Какие примеры инструментов нагрузочного тестирования в каждой категории?


person Stanly    schedule 10.05.2016    source источник
comment
Я занимаюсь нагрузочным тестированием 17 лет и никогда не слышал о терминах «открытый инструмент для нагрузочного тестирования» или «закрытый инструмент для нагрузочного тестирования». Можете ли вы сослаться на какое-нибудь определение?   -  person Kiril S.    schedule 12.05.2016
comment
термины могут вводить в заблуждение, но концепции существуют, посмотрите здесь: users .cms.caltech.edu / ~ adamw / paper / openvsclosed.pdf   -  person Gerald Mücke    schedule 20.09.2016


Ответы (2)


Похоже, вы говорите о закрытых и открытых моделях рабочей нагрузки.

Эта классификация основана на разделении закрытых / открытых систем:

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

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

  • thread-based model where each thread will wait for a response before sending another request - so request rate depends on response rate (load generator drives the load as fast as system can take it):
    • thread-based approach is VU [virtual user]-oriented while trying to simulate N users working together;
    • инструменты на основе потоков требуют отдельного потока для имитации пользователя;
    • примеры: JMeter;
  • hit-based model
    • hit-based approach is RPS [request per second]-oriented while trying to produce N hits per second load;
    • Инструменты на основе обращений используют асинхронный подход и всегда будут пытаться создать определенную частоту запросов, при необходимости ставя запросы в очередь;
    • примеры: tsung, Яндекс.Танк.
person Aliaksandr Belik    schedule 20.09.2016
comment
Я упомяну еще один инструмент с открытым исходным кодом: Gatling позволяет генерировать нагрузку любым способом - как с открытым, так и с закрытым циклом. - person Slavik; 07.05.2018
comment
Фактически, JMeter также может сгенерировать нагрузку на основе попаданий, используя таймер формирования пропускной способности. - person scormaq; 12.02.2020

Я в основном согласен с объяснением закрытой / открытой системы от Александра и привожу вам пример.

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

В открытых циклах скорость запросов постоянна, вне зависимости от времени отклика - обратной связи нет.

Обе модели демонстрируют разные характеристики производительности тестируемой системы, то есть пределы емкости / пропускной способности с замкнутым циклом, размеры очереди с разомкнутыми циклами. Легче перегрузить систему с разомкнутым контуром

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

Возьмем, к примеру, JMeter. Если вам нужна постоянная скорость 2 пользователя / с в течение 3600 секунд, вы используете время нарастания 3600 секунд и количество потоков 7200 без зацикливания.

Gatling - еще один бесплатный инструмент, который основан не на потоках, а на событиях. Вы можете моделировать замкнутые циклы (повторение, во время) или открытые циклы (constantUsersPerSecs)

person Gerald Mücke    schedule 20.09.2016