Jmeter. Debug. Debug. Debug.

Со времён моего знакомства с Jmeter прошло довольно много времени и на основе сделанных работ и пойманных ошибках, могу сделать вывод, что комфортная отладка в этой утилите даёт наиболее высокий результат в созданий тестов. По сути, я считаю, что кроме как знать все хитрости отладки в Jmeter, больше знать не обязательно, ибо дальше простая логика и некоторые особенности организации самих тестов.
Итак, начнём.

Debug Sampler – основной элемент для отладки, покажет вам все значения переменных. Главный минус: вывод ограничен, т.е. если у вас много переменных или вы сохраняете в них целые страницы текста, то в основном интерфейсе увидите лишь часть, полная информация сохраняется в лог файле.
Вот пример, как использую этот элемент я. В стандартный simple controller упакованы сам Debug Sampler, Dummy Sampler и Test Action, названный STOP (не сложно догадаться что он делает)




Логика работы проста: во время обнаружения ошибки я делаю элемент FOR DEBUG активным, перетаскиваю в нужное место тест плана, и смотрю что покажет элемент дебаг.
При отладки регулярных выражений просто вставляю вывод в Dummy Sampler (XML документ, к примеру) и отыскиваю косяки.
Вывод в консоль
Полезная опция, но недооцененная в наше время. Зачастую, после нескольких часов кропотливой отладки, глаза просто устают искать в интерфейсе в куче переменных одну ту единственную и неповторимую или ещё хуже две-три! Можно идти на хитрость, обзывать их A1_name, A2_name итп. Тогда в выводе Debug Sampler мы увидим их первыми, главное потом не забыть переименовать их обратно…
Тут нам может помочь вывод в консоль:
  • запускаете Jmeter из терминала
  • добавляете JSR223 Sampler (или любой другой удобный)
  • выбираете знакомый вам язык программирования (мне комфортнее использовать jython)
  • выводите нужные вам переменные, вот пример:
  • myvar = vars.get("status")
    OUT.print(myvar)
Можете вывести сколь угодно интересных вам переменных, задать форматирование, вывести в файл. Все возможности jython в ваших руках.
У JSR223 Sampler довольно много возможностей, не рекомендую использовать его в нагрузочных тестах, но при отладке или тестировании функционала он бесподобен.
JSR223 Listener
Это моё любимое средство! Если вы только начинаете знакомство с Jmeter, то я напомню вам фрагментом из документации в каком порядке выполняются элементы:
  • Configuration elements
  • Pre-Processors
  • Timers
  • Sampler
  • Post-Processors (unless SampleResult is null)
  • Assertions (unless SampleResult is null)
  • Listeners (unless SampleResult is null)
Что это нам даёт? Что к моменту выполнения нашего JSR223 Listener все операции уже прошли и мы имеем дело с конечным результатом, который уже ничто не поменяет, можете называть это “дебаг в абсолюте”.
Что же делать с ним? Вам достаточно кинуть его в свой тест план и он будет выполняться после каждого элемента! Объединив эти знания с выводом в консоль. можно получить удобное средство он-лайн слежки за результатом тестирования, простенький пример:
import time

tmp = sampleResult.assertionResults

if sampleResult.isSuccessful() == False:
 for i in tmp:
  OUT.print("\nWe have error in sampler \""+sampleResult.sampleLabel+"\":"+i.getFailureMessage()+"at:"+time.ctime())
Стандартные элементы Jmeter такие как vars, ctx, sampler содержат в себе много интересного. Подробно рассказывать о каждом не вижу сейчас смысла, т.к. все они хороши в нужный момент.
Если интересно узнать поподробнее про них, то у вас всегда есть средства интроспекции jython и JSR223 Sampler:
OUT.print(str(dir(ctx)))
OUT.print(str(dir(vars)))
OUT.print(str(dir(sampler)))
Все примеры, я прилагаю в отдельном jmx файле:
DebugDebugDebug.jmx

Комментариев нет:

Отправить комментарий