Моделирование нагрузки и типы тестов производительности

Медленная загрузка или неотвека на веб-страницы оказывают непосредственное влияние на финансовые поступления. Обеспечение правильной настройки тестов производительности с помощью правильного моделирования нагрузки имеет решающее значение. Если не сделать правильно, это может иметь катастрофические последствия. Разочарованные пользователи, скорее всего, отказаться от того, что они делали, а не вернуться. Даже если вы и ваша команда решили эту проблему, скорее всего, слишком поздно. Они, вероятно, уже нашли альтернативное решение. И как только они есть, вряд ли они будут переключаться обратно.

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

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

Моделирование нагрузки на основе HTTP

В первые дни нашей цифровой эры, http-тестирование было очень популярным. С ростом богатых веб-клиентов технологии, этот подход становится все более устаревшим. Типичный тест-драйвер на базе HTTP выполняет запросы на обслуживание и анализирует ответы. Современные web 2.0 приложения состоят из многих клиентских скриптов, которые полностью игнорируются и не измеряются в этом типе тестового исполнения. Из-за нехватки клиентских сгенерированных сгенерированных см.

Из-за их запроса и характера, основанного на ответах, накладные расходы на машину для впрыска нагрузки очень низки. Типичный тестовый сервер нагрузки может имитировать до 800 одновременных сеансов. Сложные случаи использования на основе протокола могут быть трудно реализовать. Инженеру по производительности необходимо иметь дело с файлами cookie, данными сеансов и другими динамическими параметрами. В зависимости от технологии тестируются системы, некоторые имена веб-форм часто меняются после развертывания новой версии, что приведет к свершу свершу с работой скрипта на основе HTTP.

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


//sample protocol level script
transaction TMain
var
hContext: number;
begin
WebPageUrl("https://lab3/st/", "Greetings");
WebPageStoreContext(hContext);
WebPageLink("Join the experience!", " - New Visitor");
WebPageSubmit("Continue", CONTINUE001, "Main menu");
WebPageLink("Products", "ShopIt - Products");
WebPageLink(NULL, "ShopIt - Product", 3);
WebPageSubmit("Search", SEARCH001, " - Search", 0, NULL, hContext);
end TMain;

dclform
CONTINUE001:
«имя» :» «Джек»,
«Новое имя-кнопка» : «Продолжить»;

SEARCH001:
«поиск» :» «загрузка»;

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

Безготовая моделирование нагрузки на основе браузера
С ростом технологий Web 2.0 испытательный бизнес столкнулся с серьезными проблемами. Богатые браузерные приложения больше не могут быть протестированы или смоделированы на уровне протокола из-за отсутствия логики на стороне клиента во время воспроизведения скрипта. Поэтому было представлено несколько безголёрных браузеров, таких как HtmlUnit, PhantomJS или SlimerJS. Они часто построены на вершине WebKit, двигатель за Chrome и Safari.

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

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

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

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

В примере ниже выполняется простой запрос на пост. Для настройки таких тестовых скриптов необходимы навыки программирования Java.


//sample phantomjs script
"use strict";
var page = require('webpage').create(),
server = 'https://posttestserver.com/post.php?dump',
data = 'universe=expanding&answer=42';

page.open (сервер, ‘пост’, данные, функция (статус)
если (статус! — «успех»)
консоль.log (‘Не удается разместить!’);
— еще один
консоль.log (page.content);
}

phantom.exit();
});

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

 

Реальное моделирование нагрузки на основе браузера

Web 2.0 приложения полны JavaScript, Flash, AJAX, CSS и т.д. Без полного браузера невозможно измерить фактическое время ответа на все приложение или веб-страницу. Реальное тестирование производительности на основе браузера позволяет проверить функциональность и скорость сайта, как это воспринимается конечный пользователь, который, как мы обсуждали выше, где он действительно имеет значение.

Типичное реальное решение для тестирования производительности браузера собирает время загрузки изображений, JavaScript, CSS и многое другое. Часто они обеспечивают водопад диаграммы, которые визуализируют время загрузки этих компонентов.

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

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


//sample real browser-based script
transaction TMain
begin
BrowserStart(BROWSER_MODE_DEFAULT, 800, 600);

перейти на сайт входа
BrowserNavigate («https://demo.com/TestSite/LoginForm.html»);
установить аутентификацию для безопасного сайта
BrowserSetText («//INPUT@name’пользователь», «Пользователь1»);
BrowserSetPassword («//INPUT@name’pwd'», «Password1»);
логин
BrowserClick («//INPUT @value»‘Login'», BUTTON_Left);
конец TMain;

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

 

Различные типы нагрузок и тестов производительности

Тесты скорости компонентов

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

Цели испытаний скорости компонентов:

  • Проверка и повторение поведения входных/выходных данных.
  • Автоматизированный интерфейс и все-таки проверки производительности.
  • Сравнение времени отклика с согласованными пороговыми значениями.

Нагрузочных тестов

Загрузка тестирует идеальную настройку, когда дело доходит до проверки нефункциональных требований. Одна из причин заключается в том, что время отклика может быть проверено в воспроизводимых условиях. Другое дело, что эти тесты позволяют проверить пороговые значения времени отклика. Реалистичное измерение времени отклика имеет важное значение в сценариях тестирования нагрузки. Поэтому инженеры-испытатели используют безготовное или реальное моделирование пользователей на основе браузера для своих настроек тестирования нагрузки.

Цели нагрузочных испытаний:

  • Воспроизводимая нагрузка моделирования.
  • Проверка пороговых значений времени отклика.
  • Выявление узких мест в условиях производственной нагрузки.
  • Создание реалистичных сценариев тестирования.

Стресс-тестирование

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

Цели стресс-тестирования:

  • Докажите масштабируемость и стабильность в пиковых условиях движения.
  • Наблюдайте, как система выходит из строя и возвращается в Интернет.
  • Воспроизводство не важно.

 

Сравнение

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

критерии HTTP Безготовный браузер Реальный браузер
Моделирование пользователя (1) Нет клиенто-стороны рендеринга (2) Некоторые элементы, со стороны клиента, моделируются (3) Моделирование реальных пользователей
Реализация сценария и настройка (1) Трудно, когда веб-сайты являются сложными (2) Навыки разработчика, необходимые для создания надежных скриптов (3) Простые скрипты, легко настроить
Повтор сценария (1) Требуется анализ низкого уровня (2) В зависимости от используемого двигателя возможно визуальное воспроизведение (3) Вы видите, что вы получаете
Обслуживание скрипта (1) Необходимы навыки программирования (2) Ошибки в не отрисованные разделы сложно решить (3) Легко, потому что вы видите сбои во время воспроизведения
Поддержка нескольких браузеров (1) Некоторые инструменты эмулируют веб-браузеры, но это несопоставимо (2) Да, но некоторые элементы часто отсутствуют (2) Некоторые поддерживают другие версии и различные браузеры
След на машине впрыска нагрузки (3) Низкий, до 800 сеансов на сервер (2) Средний, до 8 сеансов на сервер (1) Высокий, до 6 сеансов на сервер
Рекомендуется для DevOps (2) Зависит от фактического сценария тестирования (1) Нет, часто сложные скрипты (3) Да, проста в использовании и реалистичные цифры
Рекомендуется для нагрузочных тестов (1) Нет, обработка на стороне клиента пропущена (2) Да, лучше, чем моделирование HTTP (3) Да, реалистичное моделирование пользователя
Рекомендуется для стресс-тестов (3) Да, потому что есть низкие накладные расходы на машину генератора нагрузки (2) Нет, накладные расходы на машину генератора нагрузки слишком высока (1) Нет, самые высокие накладные расходы на машину генератора нагрузки
издержки (3) Низкий (2) Средний (1) Высокий
Общий балл 17 19 24

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