вторник, 5 октября 2010 г.

Listeners

1. Sample Result Save Configuration - приемник может быть сконфигурирован для сохранения различных пунктов в результирующий лог файл, посредством конфигурационного всплывающегося окна. Опции по умолчанию определены как описано в Listener Default Configuration. Пункты с (CSV) влияют только на CSV формат; пункты с (XML) влияют только на XML формат. CSV формат не может использоваться для сохранения пунктов, которые включают разделители.
2. Graph Full Results - что-то не работает.
3. Graph Results - формирует простые графики на которых изображены времена замеров (семплов). Черный - текущий семпл; синий - текущее среднее всех семплов; красный - текущее стандартное отклонение; зеленый - текущая интенсивность потока.
4. Spline Visualizer - представляет график времени прохождения по всем семплам, начиная с начала до конца, не взирая на то как много семплов было взято. Сплайновая кривая имеет 10 точек, каждая точка представляет 10% от всех семплов, и сойденены точки неприрывной кривой, используя сплайн логику.
5. Assertion Results - показывает лейблы (имена) всех прошедших семплов. Так же сообщает о неудачных высказываниях (assertions) содержащихся в тест плане.

Assertions

1. Response Assertion - позволяет добавить шаблон строки для сравнения с различными полями ответа от сервера. Шаблон может: совпадать или содержаться (Perl5-регулярные выражения), быть эквивалентным или подстрокой (простой текст с учетом регистра).
2. Duration Assertion - если ответ от сервера занял больше данного времени в миллисекундах, то он помечает его как неудачный.
3. Size Assertion - проверяет, что ответ от сервера имеет правильный размер.
4. XML Assertion - проверяет, что данные ответа от сервера составлены из корректного XML документа. Не проверяет на достоверность документы основанные на DTD или schema или какой-либо другом добавочном контроле данных TBD.
5. BeanShell Assertion - позволяет пользователю выполнять проверку используя BeanShell скрипт.

пятница, 10 сентября 2010 г.

Trouble shooting

Бывает так, что JMeter работает некорректно и странно, при прогоне теста, а именно количество активных юзеров начинает уменьшаться хотя этого происходить не должно. Тогда необходимо посмотреть на системное окошко, которое открывается при запуске jmeterа. Если в нем написано java.lang.OutOfMemoryError: GC overhead limit exceeded, тогда необходимо поменять один параметр в файле jmeter.bat в папке /bin. Откройте его и найдите параметр set HEAP и увеличьте максимально возможное значение этого параметра, например set HEAP=-Xms512m -Xmx1512m.

Logic Controllers

Мой перевод с английского ниже. Все замечания по поводу неправильности перевода приветствуются! Переводил пару лет назад.

1. Simple Controller - используется для группирования и установления порядка выполнения для Samplers и других Logic Controllers.
2. Loop Controller - выполнит все, что находится у него как child Count Loop раз.
3. Once Only Controller - исполняет свое содержимое только один раз и пропускает выполнение содержимого при последующих итерациях. Пример: Loop Controller настроен на пятикратное выполнение и содержит Once Only Controller, содержимое Once Only Controller выполнится только один раз.
4. Interleave Controller - если внутри него находятся Generative или Logic Controllers, то выполняется один из них по порядку для каждой итерации.
5. Random Controller - похож на Interleave Controller, только на каждой итерации выполняемая часть берется не по порядку, а в случайной последовательности.
6. Random Order Controller - больше похож на Simple Controller, выполняются все его "дети", только выполнение происходит в произвольном порядке.
7. Throughput Controller - регулирует как часто заданный блок будет выполняться. Может работать в режиме percent execution и в режиме total executions. При percent execution программа вычисляет процент от всех проведенных итераций и определяет выполнять или нет этот блок в следующий раз. При total executions выполнение блока прекращается после достижения количества разрешенных раз.

8. Runtime Controller - определяет как долго его "детям" позволено играть :).

Thread Group

В JMeter исполняется то, что находится внутри Thread Group. В Test Plan может быть несколько Thread Group. И все они будут выполняться независимо и одновременно.
Рассмотрим какие параметры имеет Thread Group.



Некоторые из них очевидные, а некоторые не очень :).

понедельник, 2 августа 2010 г.

Задержки между шагами (delays between steps)

Порой необходимо сктриптом эмулировать реальное поведение пользователя (или хотя бы приближенное к реальному). Для этого необходимо расставлять задержки (delay) в jmeter скрипте между логическими шагами. Я использую для этого Test Action (Add >> Sampler >> Test Action). Он очень удобен с той точки зрения, что в него величину паузы можно передавать в виде параметра, а уж этот значение этого параметра можно брать либо из файлика, либо генерировать, кому как удобно.

вторник, 1 июня 2010 г.

Важнейшее преимущество способа записи скрипта "BadBoy" над "Прокси-сервер" способом

Самое главное преимущество "BadBoy" способа - это возможность записи скрипта для https приложений. При помощи прокси-сервера запись запросов с секретным протоколом невозможна. На то и эта защита, что бы никакой посредник между клиентом и сервером не мог вклиниться. Зато "BadBoy" сам и есть клиент и он записывает все запросы и http и https.

четверг, 27 мая 2010 г.

Сохранять ответ от сервера на ошибку. - jmeter.save.saveservice.response_data.on_error

Очень полезная опция jmeter.save.saveservice.response_data.on_error. Используется она для сохранения ответа от сервера в случае ошибки. При проведении нагрузки в non-gui режиме нет смысла сохранять все ответы от сервера, так как это займет очень много места и разобраться в них будет очень сложно.
Для активации, выставляем значение параметра jmeter.save.saveservice.response_data.on_error в значение true. Для того, что бы эта опция действительно приносила пользу, необходимо использовать Assertions, которые и будут выдавать ошибку если ответ не верен.

суббота, 15 мая 2010 г.

jmeter.properties

Мало информации существует об ОЧЕНь полезном файлике jmeter.properties.

Всем необходимо знать о его содержимом. Вот например блок Results file configuration:

#---------------------------------------------------------------------------
# Results file configuration
#---------------------------------------------------------------------------

# This section helps determine how result data will be saved.
# The commented out values are the defaults.

# legitimate values: xml, csv, db. Only xml and csv are currently supported.
#jmeter.save.saveservice.output_format=xml


# true when field should be saved; false otherwise

# assertion_results_failure_message only affects CSV output
#jmeter.save.saveservice.assertion_results_failure_message=false
#
# legitimate values: none, first, all
#jmeter.save.saveservice.assertion_results=none
#
#jmeter.save.saveservice.data_type=true
#jmeter.save.saveservice.label=true
#jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
#jmeter.save.saveservice.response_data=false
# Save ResponseData for failed samples
#jmeter.save.saveservice.response_data.on_error=false
#jmeter.save.saveservice.response_message=true
#jmeter.save.saveservice.successful=true
#jmeter.save.saveservice.thread_name=true
#jmeter.save.saveservice.time=true
#jmeter.save.saveservice.subresults=true
#jmeter.save.saveservice.assertions=true
#jmeter.save.saveservice.latency=true
#jmeter.save.saveservice.samplerData=false
#jmeter.save.saveservice.responseHeaders=false
jmeter.save.saveservice.requestHeaders=true
#jmeter.save.saveservice.encoding=false
#jmeter.save.saveservice.bytes=true
#jmeter.save.saveservice.url=false
#jmeter.save.saveservice.filename=false
#jmeter.save.saveservice.hostname=false
#jmeter.save.saveservice.thread_counts=false
#jmeter.save.saveservice.sample_count=false

Assertions в JMeter

Если развивать тему усложнения скрипта, то необходимо расставлять Assertions после каждого запроса, который открывает новую страницу, либо делает какие-то полезные действия. Наиболее полезный Response Assertion. Принцип действия его интуитивно понятен. Полезность его в том, что если на некий запрос пришла не та страница, то jmeter не выдаст ошибку сам по себе, так как код ответа 200, но дальнейшее исполнение скрипта не имеет смысла. Для этого и используем Assertions.

среда, 10 февраля 2010 г.

JMeter 2nd page

Записки маленького тестировщика. Часть вторая.

Доработка JMeter скрипта.

После записи скрипта не важно каким способом или "прокси-сервер", или "BadBoy", он в любом случае нуждается в доработке для корректной работы с приложением. Его нужно параметризовать. В чем заключается параметризация я попытаюсь показать наглядно ниже.

Тестировать будем приложение
http://demo.flamingo.exadel.com/booking/home.seam

1. Запишем скрипт используя BadBoy способ.
Записываем следующие действия:

1.1. Вводим http://demo.flamingo.exadel.com/booking/home.seam.
1.2. Логинимся с данными Login Name: loaduser1 и Pas
sword: 12345.
1.3. Кликаем Find Hotels кнопку.
1.4. Кликаем на любой View Hotel ссылку.
1.5. Нажимаем Book Hotel кнопку.
1.6. Заполняем поля Credit Card и Credit Card Name значением 1231231231231231.
1.7. Жмем Proceed кнопку.
1.8. Кликаем Confirm кнопку.
1.9. Удаляем в таблице Current Hotel Bookings созданную запись, кликая Cancel.
1.10. Нажимаем Logout ссылку.

JMeter 1st page

Привет всем! Это мой первый блог так, что прошу не судить строго. Многое из того, что вы увидите плагиат, но я пытался расставлять ссылки на оригиналы. Данный блог не претендует на абсолютную истину. Я надеюсь он просто поможет начинающим в JMeter.
И так..... Записки маленького тестировщика. Часть первая.

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

Содержание:
1. Скачать, установить, запустить
2. Запись скрипта
2.1. Ручной способ
2.2. "Прокси-сервер" способ
2.3. "Bad Boy" способ
3. Доработка скрипта
3.1. После записи через прокси
3.2. После записи через BadBoy
4. Нагрузка баз данных
5. Нагрузка веб-сервисов
6. JMeter для регрессии и стресс-тестирования
7. Полезные ссылки по литературе

1. Скачать, установить, запустить

JMeter - это бесплатный продукт. А это значит, что его можно свободно скачать ничего не опасаясь. Качаем 2.3.x.zip и распаковываем.
Специальной установки он не требует так, что JMeter готов к работе.
Двойной клик по файлу JMeter.bat в директории jmeter/bin запустит приложение. И вот ОНО работает. :)