Приложение Java для нагрузки / стресс-теста

Все,

У нас есть Java-приложение, построенное на HTTP-сервлетах, EJB и POJO. Клиенты получают доступ к приложению с помощью HTTP Servlet, а приложение использует веб-сервисы.

Мне нужно провести стресс-тестирование этого приложения, чтобы проверить нагрузку, безопасность потоков и время отклика. Веб-сервис используется с использованием HTTPURLConnection API и JAXB API.

Поскольку JAXB marshalling/unmarshalling имеет проблемы с безопасностью потоков, необходимо выполнить нагрузочный тест и безопасность потоков.

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

Любой совет действительно ценится

3 ответа

Решение

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

1 Убедитесь, что ваши тесты копируют ваши фактические варианты использования.

  1. Вы не запускаете приложение и JMeter в одном окне.

  2. Вы используете реалистичные новые и существующие данные.

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

Например

 public void handler(HttpServletRequest req) {
    Unmarshaller u = context.createUnmarshaller();
    u.unmarshal(...);
}

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

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

После сравнения Apache JMeter™ с Grinder я выбрал JMeter из-за графического интерфейса для создания планов тестирования. Кривая обучения плоская - легко создавать простые сценарии.

Если вы согласны с написанием планов тестирования в jython, эти инструменты, кажется, довольно близки. И то и другое

  • иметь графический интерфейс для запуска и координации распределенного тестирования (должен иметься для стресс-теста)
  • может создавать текстовые / XML отчеты для дальнейшего анализа
  • есть встроенные плагины отчетности

Перейдите по ссылкам how-to-get-my-website-load-test-with-jmeter для получения ссылок о стресс-тестах в jMeter и лучших плагинах для визуализации результатов.

У меня были проблемы с производительностью по умолчанию для плагинов графиков для больших наборов данных (>100000 записей). Следуйте предложениям и рецептам для анализа журналов, чтобы узнать, как создавать графики для таких объемов данных.

Use Apache JMeter:

Настольное приложение Apache JMeter™ - это программное обеспечение с открытым исходным кодом, Java-приложение со 100% чистотой, предназначенное для загрузки функциональных возможностей тестирования и измерения производительности. Первоначально он был разработан для тестирования веб-приложений, но с тех пор расширился до других функций тестирования.

Другие вопросы по тегам