Помните, что контент на этой странице не поддерживается активно, и Atlassian не может гарантировать его поддержку. Кроме того, скрипты тестирования производительности, которые вы можете загрузить из общедоступного хранилища Maven из Atlassian (через ссылку на этой странице), больше не поддерживаются.
Эта страница предоставляется только для вашей информации, и ее использование осуществляется на ваш страх и риск. Вместо использования описанных выше сценариев мы рекомендуем наше тестирование производительности JIRA с помощью Grinder
На этой странице содержатся сценарии и подсказки для тестирования нагрузки на вашей установке JIRA.
Прежде чем пользователи получат доступ к новой установкеJIRA и ее настройке, полезно понять, как она будет работать под ожидаемой нагрузкой. Скрипты, которые генерируют загрузку запроса ('request') (или использования), предоставляются в нашем общедоступном репозитории Maven (ссылка ниже). Используя эти скрипты, вы можете узнать, где, возможно, вам нужно будет заранее улучшить настройку, чтобы устранить узкие места.
Хотя такой тип тестирования не является точной наукой, описанные здесь инструменты и процессы должны быть простыми и настраиваемыми, а также предоставлять вам расширяемый способ оценки нагрузочного тестирования.
В тестах производительности, описанных на этой странице, используется JMeter. Хотя нет острой необходимости в изучении JMeter, все же рекомендуется короткое чтение документации JMeter, так как это может помочь вам решить любые задачи, связанные с JMeter.
Редко бывает, что эти скрипты будут выполнять репрезентативное тестирование для вас «из коробки». Тем не менее, имеется возможность построить соответствующий тест нагрузки путем настройки или расширения их сценариев.
Нельзя использовать сценарии тестирования загрузки на производственной установке JIRA!
Хотя мы рекомендуем использовать копию ваших производственных данных для тестирования нагрузки на использование, сценарии тестирования нагрузки ниже будут изменять данные в рамках целевой установки JIRA! Следовательно, эти сценарии не должны использоваться на производственной установке JIRA. Вместо этого используйте копию ваших данных JIRA на тестовой установке JIRA.
Если вы запускаете эти тестовые скрипты в соответствии с вашей производственной установкой JIRA, вы будете нести персональную ответственность за потерю данных и восстановление резервной копии!
Аналогичным образом, при внесении изменений в установку JIRA для устранения узких мест производительности полезно оценить влияние этих изменений в тестовой установке JIRA перед их внедрением в производство.
Предпосылки
Вам понадобится следующее:
- Установка JIRA, настройка и запуск с пользователем администратора. В сценариях предполагается, что комбинация имени пользователя и пароля этого пользователя - «admin» / «admin».
- Рекомендуется протестировать базу данных качества производства, например, одну из них, указанную на странице Поддерживаемые платформы. Не используйте HSQLDB.
- Apache JMeter (в настоящее время версия 2.3.4). Если вы собираетесь выполнять тестирование с высокой нагрузкой, используйте вместо этого нашу измененную версию JMeter (для которой требуется Java 1.6).
- Скрипты тестирования нагрузки и ресурсы, доступные в нашем общедоступном хранилище Maven - выберите версию, которая наиболее точно соответствует вашей версии JIRA, и загрузите файл ZIP или Gzip в этом каталоге. Если есть сомнения, загрузите архив ZIP-архива.
Быстро, просто скажите мне, как запускать эти тесты!
Если вы не хотите читать остальную часть этого документа, вот основные моменты:
- Создайте (Create) настройки testdata:
<jmeter location>/bin/jmeter -n -t jmeter-test-setup.jmx -Jadmin.user=<username> -Jadmin.pass=<password>
- Запустите (Run) тест с фиксированной нагрузкой (fixed load test):
<jmeter location>/bin/jmeter -n -t jmeter-test-fixedload.jmx
Остальная часть этого документа - это просто разработка этих двух этапов.
Тесты производительности
Тесты производительности JIRA состоят из двух частей:
- Тест установки - выполняется сначала и подготавливает установку JIRA для последующего теста с фиксированной нагрузкой (fixed load test)
- Тест с фиксированной нагрузкой - имитирует ряд пользователей, обращающихся к установке JIRA.
Тест установки
Тест установки отвечает за:
- Создание проектов
- Создание пользователей
- Создание и комментирование (и, возможно, решение) задач.
Выполнение теста установки:
После извлечения файла zip-теста производительности перейдите в каталог performanceTest. Из этого каталога запустите тест настройки производительности:
<jmeter location> / bin / jmeter -n -t jmeter-test-setup.jmx -Jadmin.user = <имя_пользователя> -Jadmin.pass = <пароль>
где <jmeter.location> является базовым каталогом JMeter
Если вы опустите ключ -n, JMeter будет работать как графический интерфейс. Затем вы можете запустить тест из GUI.
Как видно выше с параметрами admin.user и admin.pass, JMeter поддерживает -Jparameter = значение аргументов команды, чтобы контролировать выполнение. Следующие параметры контролируют выполнение теста установки:
Управление конфигурацией
Параметр |
По умолчанию |
Обьяснение |
jira.host |
localhost |
Имя хоста или адрес установки JIRA. |
jira.port |
8000 |
Сетевой порт, на котором запущена установка JIRA. |
jira.context |
/ |
Контекст веб-приложения JIRA |
admin.user |
admin |
Имя пользователя-администратора. |
admin.pass |
admin |
Пароль администратора. |
script.base |
. |
Расположение тестов производительности. Это следует устанавливать только в том случае, если вы запускаете тесты вне пределов каталога сценариев. |
remove.data |
false |
Запуск сценария с этим допуском приведет к удалению пользователей и проектов, созданных тестом. |
Пользовательский контроль
Параметр |
По умолчанию |
Объяснение |
create.users.enable |
true |
Создайте пользователей в целевой установке JIRA. Используйте false, если у вас уже есть пользователи, созданные в другом месте. |
browseissue.max |
250 |
Количество пользователей, которые будут созданы для просмотра установки JIRA (так называемые пользователи browseissue). |
createissue.max |
250 |
Количество пользователей, которые будут созданы для создания задач (например, пользователи «createissue»). |
editissue.max |
250 |
Количество пользователей, которые будут созданы для редактирования задач (например, пользователи «editissue»). |
search.max |
250 |
Количество пользователей, которые будут созданы для поиска задач (например, пользователей «поиска»). |
useraction.max |
250 |
Количество пользователей, которые будут созданы для просмотра пользовательской информации (так называемые пользователи useraction). |
browseissue.groupname |
никто |
Группа, в которую будут помещаться пользователи «browseissue». Используйте none для группы. |
createissue.groupname |
JIRA-разработчики |
Группа, в которую будут помещены пользователи «createissue». Используйте none для группы. |
editissue.groupname |
JIRA-разработчики |
Группа, к которой будут добавлены пользователи «editissue». Используйте none для группы. |
search.groupname |
никто |
Группа, в которую будут помещаться пользователи поиска. Используйте none для группы. |
useraction.groupname |
JIRA-разработчики |
Группа, к которой будут добавлены пользователи «useraction». Используйте none для группы. |
Контроль проекта
Параметр |
По умолчанию |
Объяснение |
create.projects.enable |
true |
Создавайте проекты. Используйте false, если вы хотите использовать существующие проекты (в существующих данных). |
project.max |
20 |
Количество проектов для создания в системе. |
Контроль задач
Параметр |
По умолчанию |
Объяснение |
create.issues.enable |
true |
Создает задачи в целевой установке JIRA. Используйте false, если вы не хотите, чтобы тест создавал примеры задач. |
issue.max |
3000 |
Количество задач, которые необходимо создать. |
issue.comment.enable |
true |
Контролирует, добавляются ли комментарии к задачам. |
issue.comment.max |
10 |
Если issue.comment.enable истинно, то количество фактических комментариев, созданных по задаче, выбирается случайным образом между 0 и этим значением. |
issue.close |
true |
Контролирует, хотите ли задачи автоматически закрываться после создания. |
issue.close.percentage |
60 |
Если параметр issue.close включен, то это значение определяет процент закрытых задач. |
issue.setupload.threads |
10 |
Количество потоков, используемых для создания задач. |
issue.setupload.pause |
50 |
Количество времени (в миллисекундах), для которого имитируемый пользователь хочет «бездействовать» между каждым запросом(request) во время создания задачи. |
resource.dir |
ресурсы |
Каталог, содержащий ресурсы данных CSV. |
Вывод теста
После того, как вы выбрали целевые настройки, запустите JMeter, и вы должны получить примерно следующее:
jmeter -n -t jmeter-test-setup.jmx
Created the tree successfully using jmeter-test-setup.jmx
Starting the test @ Mon Oct 26 23:53:28 CDT 2009 (1256619208435)
Generate Summary Results + 931 in 31.3s = 29.7/s Avg: 26 Min: 13 Max: 3256 Err: 0 (0.00%)
Generate Summary Results + 2948 in 180.0s = 16.4/s Avg: 31 Min: 8 Max: 1162 Err: 0 (0.00%)
Generate Summary Results = 3879 in 211.4s = 18.3/s Avg: 29 Min: 8 Max: 3256 Err: 0 (0.00%)
Generate Summary Results + 5048 in 179.9s = 28.1/s Avg: 44 Min: 7 Max: 936 Err: 0 (0.00%)
Generate Summary Results = 8927 in 391.4s = 22.8/s Avg: 37 Min: 7 Max: 3256 Err: 0 (0.00%)
Generate Summary Results + 3114 in 180.1s = 17.3/s Avg: 41 Min: 7 Max: 805 Err: 0 (0.00%)
Generate Summary Results = 12041 in 571.3s = 21.1/s Avg: 38 Min: 7 Max: 3256 Err: 0 (0.00%)
Generate Summary Results + 4956 in 179.8s = 27.6/s Avg: 45 Min: 7 Max: 1844 Err: 0 (0.00%)
Generate Summary Results = 16997 in 751.4s = 22.6/s Avg: 40 Min: 7 Max: 3256 Err: 0 (0.00%)
Generate Summary Results + 313 in 17.1s = 18.3/s Avg: 37 Min: 7 Max: 165 Err: 0 (0.00%)
Generate Summary Results = 17310 in 768.5s = 22.5/s Avg: 40 Min: 7 Max: 3256 Err: 0 (0.00%)
Tidying up ... @ Tue Oct 27 00:06:17 CDT 2009 (1256619977181)
... end of run
Этот вывод данных будет обновляться каждые 3 минуты, показывая самую последнюю активность, а также резюме для всего теста.
Журналы результатов
В дополнение к этим итоговым данным, которые выводятся в командной строке, файлы журналов создаются как для успешных (jmeter-results-setup.jtl), так и для неудачных (jmeter-assertions-setup.jtl) результатов. Эти файлы журнала сохраняются в формате JTL (который основан на XML). Существует несколько парсеров ( синтаксических анализаторов), которые будут генерировать графики из этих файлов журнала. Для получения дополнительной информации см. страницу вики JMeter в журнале Analysis.
Тест с фиксированной нагрузкой
После успешного запуска теста установки может выполняться тест с фиксированной нагрузкой. Этот тест будет имитировать ряд пользователей, обращающихся к установке JIRA.
Этот тест имеет ряд параметров для настройки поведения. По умолчанию тест имеет следующее поведение и стратегию:
-
Несколько групп пользователей, все работают одновременно в течение фиксированного времени, каждый из которых имеет небольшую задержку между задачами.
- Пользователи «Изменить задачу» (Edit Issue) (editissue) просматривают проект, а затем пытаются найти задачу. Они будут комментировать, редактировать или изменять рабочий процесс этой задачи.
- Пользователи (User Action) (useraction) User Action создают фильтры, просматривают часы и голоса.
- Пользователи «Обзор задач» (Browse Issue) (browseissue) просматривают проекты и проблемы.
- Пользователи «RSS» просматривают проект, а затем периодически берут RSS-ленту для этого проекта.
- Пользователи «Создать задачи» (Create Issues) (createissue) добавляют в экземпляр новые задачи.
- Пользователи «Поиск задач» (Search Issues) (search) ищут задачи, используя текстовое поле быстрого поиска.
Клиент JMeter не выполняет JavaScript. Производительность JavaScript зависит от нескольких факторов, таких как скорость вашего браузера и рабочей станции. JMeter не измеряет это.
Выполнение теста с фиксированной нагрузкой:
<jmeter location>/bin/jmeter -n -t jmeter-test-fixedload.jmx
Как и в случае теста установки (выше), эта команда будет запускать тест с фиксированной нагрузкой со значениями по умолчанию. Аналогичным образом, можно управлять выполнением JMeter с параметрами -J. Тест с фиксированной нагрузкой имеет следующие доступные параметры:
Управление конфигурацией
Параметр |
По умолчанию |
Объяснение |
jira.host |
localhost |
Имя хоста или адрес установки JIRA. |
jira.port |
8000 |
Сетевой порт, на котором запущена установка JIRA. |
jira.context |
/ |
JIRA контекст webapp. |
admin.user |
admin |
Имя пользователя-администратора. |
admin.pass |
admin |
Пароль администратора. |
script.base |
. |
Расположение тестов производительности. Это должно только быть установлено, если Вы выполняете тесты снаружи каталога скриптов. |
script.runtime |
1800 |
Количество времени для запуска (в секундах). |
resource.dir |
resources |
Подкаталог, содержащий файлы CSV ресурсов. Замените это, если вы хотите настроить внутренние данные. |
Редактировать задачу
Параметр |
По умолчанию |
Объяснение |
editissue.threads |
5 |
Количество одновременных пользователей «Редактировать задачу» для имитации. |
editissue.pause |
15000 |
Пауза между каждым запросом(request) пользователя «Редактировать задачу» (в миллисекундах). |
workflow.matchname |
(Закрыть | Разрешить) (Close | Resolve) |
Регулярное выражение для соответствия процессу рабочего процесса. |
editworkflow.percentage |
20 |
Процент запросов(requests) пользователя «Редактировать задачу» (Edit Issue), которые будут пытаться изменить рабочий процесс задачи. |
addcomment.percentage |
60 |
Процент запросов (requests) пользователя «Редактировать задачу» (Edit Issue) который попытается добавить комментарий к задаче. |
editissue.percentage |
20 |
Процент запросов (requests) пользователя «Редактировать задачу» (Edit Issue), который попытается редактировать задачу. |
editissue.issuestoown |
5 |
Количество задач, которые тест пытается назначить пользователю «Редактировать задачу» (Edit Issue). |
Действия пользователя
Параметр |
По умолчанию |
Объяснение |
useraction.threads |
1 |
Количество одновременных пользователей «Действия пользователя» (User Action) для имитации. |
useraction.pause |
40000 |
Пауза между каждым пользовательским запросом(request) «Действия пользователя» (User Action) (в миллисекундах). |
createfilter.percentage |
10 |
Процент запросов (requests) пользователя «Действия пользователя» (User Action) , который будет пытаться создать фильтр. |
viewwatches.percentage |
10 |
Процент запросов(requests) пользователя «Действия пользователя» (User Action), который будет пытаться «просматривать часы». |
viewvotes.percentage |
10 |
Процент запросов(requests) пользователя «Действия пользователя» (User Action), который будет пытаться просматривать голоса. |
Обзор задач и проектов
Параметр |
По умолчанию |
Объяснение |
browseissue.threads |
40 |
Количество одновременных пользователей «Обзор задачи» (Browse Issue) для имитации. |
browseissue.pause |
3000 |
Пауза между каждым запросом (request) пользователя «Обзор задачи» (Browse Issue) (в миллисекундах). |
userprofile.percentage |
10 |
Процент запросов пользователя «Обзор задачи» (Browse Issue), который попытается просмотреть профиль пользователя. |
browsedashboard.percentage |
20 |
Процент запросов пользователя «Обзор задачи» (Browse Issue), который попытается просмотреть панель управления. |
dashboard.category |
allprojects |
Категория проекта для запросов(requests) гаджета статуса проекта. |
RSS – новостная лента
Параметр |
По умолчанию |
Объяснение |
browserss.threads |
10 |
Количество одновременных пользователей RSS для имитации. |
browserss.pause |
60000 |
Пауза между каждым запросом (request) пользователя «RSS» (в миллисекундах). |
Создать задачи
Параметр |
По умолчанию |
Объяснение |
issue.create.threads |
10 |
Количество одновременных пользователей «Создать задачу» (Create Issues) для имитации. |
issue.create.pause |
15000 |
Пауза между каждым запросом(request) пользователя «Создать задачу» (Create Issues) (в миллисекундах). |
issue.comment.max |
2 |
Максимальное количество комментариев по задаче. Фактическое число выбирается случайным образом между 0 и этим значением. |
Поиск задач
Параметр |
По умолчанию |
Объяснение |
search.threads |
2 |
Количество одновременных пользователей «Поиск» (Search) для имитации. |
search.pause |
15000 |
Пауза между каждым запросом (request) пользователя «Поиск» (Search) (в миллисекундах). |
Вывод теста
После того, как вы выбрали целевые настройки, запустите JMeter, и вы получите результат, похожий на следующий:
jmeter -n -t jmeter-test-fixedload.jmx
Created the tree successfully using jmeter-test-fixedload.jmx
Starting the test @ Wed Oct 28 01:13:22 CDT 2009 (1256710402435)
Waiting for possible shutdown message on port 4445
Generate Summary Results + 568 in 97.9s = 5.8/s Avg: 62 Min: 1 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 3861 in 179.4s = 21.5/s Avg: 39 Min: 0 Max: 494 Err: 0 (0.00%)
Generate Summary Results = 4429 in 277.4s = 16.0/s Avg: 42 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 7356 in 180.0s = 40.9/s Avg: 37 Min: 0 Max: 481 Err: 0 (0.00%)
Generate Summary Results = 11785 in 457.3s = 25.8/s Avg: 39 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 10841 in 180.1s = 60.2/s Avg: 38 Min: 0 Max: 995 Err: 0 (0.00%)
Generate Summary Results = 22626 in 637.4s = 35.5/s Avg: 39 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 11821 in 180.3s = 65.6/s Avg: 37 Min: 0 Max: 507 Err: 0 (0.00%)
Generate Summary Results = 34447 in 817.3s = 42.1/s Avg: 38 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 11904 in 180.9s = 65.8/s Avg: 38 Min: 0 Max: 658 Err: 0 (0.00%)
Generate Summary Results = 46351 in 997.4s = 46.5/s Avg: 38 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 11697 in 180.3s = 64.9/s Avg: 38 Min: 0 Max: 488 Err: 0 (0.00%)
Generate Summary Results = 58048 in 1177.4s= 49.3/s Avg: 38 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 11731 in 180.0s = 65.2/s Avg: 39 Min: 0 Max: 810 Err: 0 (0.00%)
Generate Summary Results = 69779 in 1357.4s= 51.4/s Avg: 38 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 11646 in 180.0s = 64.7/s Avg: 39 Min: 0 Max: 776 Err: 0 (0.00%)
Generate Summary Results = 81425 in 1537.4s= 53.0/s Avg: 38 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 11810 in 180.0s = 65.6/s Avg: 39 Min: 0 Max: 798 Err: 0 (0.00%)
Generate Summary Results = 93235 in 1717.3s= 54.3/s Avg: 38 Min: 0 Max: 1534 Err: 0 (0.00%)
Generate Summary Results + 5453 in 109.1s = 50.0/s Avg: 42 Min: 0 Max: 858 Err: 0 (0.00%)
Generate Summary Results = 98688 in 1826.4s= 54.0/s Avg: 39 Min: 0 Max: 1534 Err: 0 (0.00%)
Tidying up ... @ Wed Oct 28 01:43:49 CDT 2009 (1256712229128)
... end of run
Этот вывод текста будет обновляться каждые 3 минуты, показывая самую последнюю активность, а также резюме для всего теста.
Журналы результатов
Как и ранее, в командной строке будет отображаться вывод, а файлы журнала будут созданы как для успешных (jmeter-results-setup.jtl), так и для неудачных (jmeter-assertions-setup.jtl) результатов. Эти файлы журнала сохраняются в формате JTL (на основе XML). Существует несколько парсеров (синтаксических анализаторов), которые будут генерировать графики из этих файлов журналов. Для получения дополнительной информации см. страницу вики JMeter в анализе журнала.
По материалам Atlassian JIRA Administrator's Guide: Performance Testing Scripts