Приложение Java для нагрузки / стресс-теста
Все,
У нас есть Java-приложение, построенное на HTTP-сервлетах, EJB и POJO. Клиенты получают доступ к приложению с помощью HTTP Servlet, а приложение использует веб-сервисы.
Мне нужно провести стресс-тестирование этого приложения, чтобы проверить нагрузку, безопасность потоков и время отклика. Веб-сервис используется с использованием HTTPURLConnection API и JAXB API.
Поскольку JAXB marshalling/unmarshalling имеет проблемы с безопасностью потоков, необходимо выполнить нагрузочный тест и безопасность потоков.
Я видел нагрузочное тестирование приложений, указав количество транзакций, а не потоков. Я хочу сделать то же самое с моим заявлением
Любой совет действительно ценится
3 ответа
Да, вы можете использовать JMeter для тестирования времени отклика, хотя я сомневаюсь, что с помощью JMeter вы обнаружите все проблемы параллелизма. JMeter отлично подходит для нагрузочного тестирования приложения, но не забывайте:
1 Убедитесь, что ваши тесты копируют ваши фактические варианты использования.
Вы не запускаете приложение и JMeter в одном окне.
Вы используете реалистичные новые и существующие данные.
Написание тестов на параллелизм может быть очень сложным. Лучшим способом может быть проверка кода, в котором очень тщательно используются известные небезопасные классы. Например, обходным путем для 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% чистотой, предназначенное для загрузки функциональных возможностей тестирования и измерения производительности. Первоначально он был разработан для тестирования веб-приложений, но с тех пор расширился до других функций тестирования.