Процесор в JMeter: Препроцесор и постпроцесор

⚡ Умно обобщение

Процесор в JMeter модифицира заявките на Sampler преди или след изпълнение. PreProcessor подготвя данните на заявката, докато PostProcessor извършваtracts определя стойности и контролира тестовия поток, което позволява корелация, динамична параметризация и надеждно поведение при тестове за производителност.

  • Основна дефиниция: Процесорът модифицира Sampler-а в рамките на неговия обхват, изпълнявайки го или преди заявката, или след отговора.
  • 🔍 Роля на предпроцесора: Предпроцесорите задават променливи, пренаписват URLs, анализират HTML връзки и прилагат потребителски параметри преди изпълнението на Sampler.
  • 📤 Роля на постпроцесора: Отговори на четене от постпроцесорите, напр.tract динамични стойности в променливи и решава дали изпълняващият се тест продължава.
  • 🧩 ExtracИзбор на тор: Регулярни изрази, граници, JSON, CSS/jQuery и XPath extracВсеки от торите отговаря на различен формат на отговор.
  • 🛑 Контрол на потока: Обработчикът на действие за състояние на резултата спира една нишка или целия тест, когато семплерът се провали.
  • 🧪 Приложено ръководство: Шест стъпки изграждат план, който спира автоматично, след като невалиден път върне грешка на сървъра.

Процесор в JMeter

Процесор в Apache JMeter е елемент от тестовия план, който модифицира семплерите в рамките на своя обхват. Той се изпълнява автоматично, точно преди заявка да излезе JMeter или веднага след получаване на отговор, което го прави основният механизъм за обработка на динамични данни по време на тест за представяне.

Има 2 вида процесори:

  1. Предварителен процесор
  2. Постпроцесор

Обхватът определя докъде достига процесорът. Процесор, поставен директно под План за тестване или група от нишки се прилага към всеки семплер под нея, докато процесор, вложен в един семплер, засяга само тази заявка. Разбирането на това правило предотвратява грешките в конфигурацията, обхванати в раздела за отстраняване на неизправности на тази страница.

Предварителен процесор

Препроцесорът изпълнява някакво действие преди правейки заявка за вземане на проби.

Помислете за прост пример: да кажем, че сте искали JMeter за „паяк“ през тествания уебсайт, синтактична връзка (проверете всички връзки на страницата) и връщане HTML. Бихте добавили някакво действие като „аналогичен анализатор на HTML връзки“ към вашия контролер, преди да създадете HTTP заявка.

Предварителен процесор

Диаграмата по-горе показва предпроцесора, разположен между контролера и изходящата заявка. Тъй като той се изпълнява първи, той е правилното място за изграждане на данни от заявката: генериране на времева маркировка, четене на стойност от CSV колона, презаписване на идентификатор на сесия в URLили присвояване на различни идентификационни данни на всеки виртуален потребител.

Постпроцесор

Постпроцесорът изпълнява някакво действие, след като направи заявка за семплер.

Помислете за прост пример: JMeter изпраща HTTP заявка до тествания уеб сървър (и др www.google.com) и получете отговора. Вие искате JMeter за да спрете теста, ако отговорът на сървъра е грешка. Можете да използвате постпроцесора, за да изпълните горната задача, както следва:

Постпроцесор

Както е показано на втората диаграма, постпроцесорът прочита отговора, след като семплерът завърши. Това е и стандартният отговор на корелацията. Когато сървърът върне токен, идентификатор на сесия или номер на поръчка, който се променя при всяко изпълнение, постпроцесорът записва тази стойност в JMeter променлива, така че следващият семплер да може да я използва повторно.

Видове предпроцесори в JMeter

Apache JMeter Доставя се с компактен набор от предварителни процесори. Всеки един от тях подготвя семплера по различен начин, така че изборът на правилния елемент прави тестовия план четлив и лесен за поддръжка.

  • Време за изчакване на пробата: Определя максимална продължителност за заявка. Всеки Sampler, който работи по-дълго от конфигурираната стойност, се маркира като неуспешен.
  • Потребителски параметри: Присвоява специфични стойности на променливи за всеки виртуален потребител, така че всяка нишка изпраща свой собствен набор от данни.
  • HTML анализатор на връзки: Преглежда тестваната страница, анализира намерените връзки и ги подава в следната HTTP заявка.
  • HTTP URL Модификатор за пренаписване: Вмъква идентификатор на сесия в URL за приложения, които track сесии без бисквитки.
  • Потребителски параметри на RegEx: Попълва параметрите на заявката, използвайки стойности, получени от регулярен израз от по-ранен отговор.
  • JDBC предпроцесор: Изпълнява SQL команда преди Sampler-а, което е полезно за задаване на ниво или нулиране на записи в базата данни.
  • JSR223 предпроцесор: Изпълнява Groovy or Java скрипт за всяка персонализирана логика за подготовка. Той замества по-стария BeanShell PreProcessor и се представя значително по-добре под натоварване.

💡 Съвет: Предпочитайте JSR223 PreProcessor с Groovy език над BeanShell. Groovy Скриптовете се компилират и кешират, така че консумират много по-малко процесорна мощност, когато хиляди нишки се изпълняват паралелно.

Видове постпроцесори в JMeter

Постпроцесорите се разделят на две групи: напр.tracинструменти, които извличат стойности от отговор, и обработчици, които реагират на резултата от Sampler. Таблицата по-долу съпоставя всеки елемент с формата на отговор, който му подхожда най-добре.

Постпроцесор Най-подходящ за Типична употреба
Регулярен израз ExtracTor Всеки текстов отговор Заснемане на токени или идентификатори от HTML и обикновен текст
Граничен ексtracTor Всеки текстов отговор Заснемане на стойност с помощта на лява и дясна граница вместо пълен регулярен израз
JSON ExtracTor JSON отговори Четене на полета от REST полезни товари по време на API тестване
CSS/jQuery ExtracTor HTML отговори Избиране на елемент чрез CSS селектор
XPath примерtracTor XML и XHTML отговори Навигиране в структурирано дърво на документи
JDBC постпроцесор Резултати от базата данни Проверка или почистване на редове след заявка
JSR223 постпроцесор Всеки отговор Персонализирано скриптово парсиране и твърдения
Манипулатор на действие за състояние на резултат Всеки отговор Спиранеping нишка или целият тест, когато Sampler се провали

Граничният бившtracТор пристигна в JMeter 4.0 и често е най-бързият вариант за писане, защото изисква само текста непосредствено отляво и отдясно на стойността. Регулярният израз Extractor остава по-гъвкавият избор, когато заобикалящата го маркировка варира между различните отговори.

Разлика между препроцесор и постпроцесор

И двата елемента споделят едни и същи правила за обхват, но решават противоположни проблеми. Сравнението по-долу обобщава разликата преди разглеждания пример.

Параметър Предпроцесор Постпроцесор
Време за изпълнение Изпълнява се преди Sampler да изпрати заявката си Изпълнява се след като Sampler получи отговора си
Основна цел Подготвя и променя данните от заявката Чете данните от отговорите и реагира на тях
Типични елементи Потребителски параметри, HTML анализатор на връзки, JSR223 препроцесор Регулярен израз Extractor, JSON Extractor, Манипулатор на действие за състояние на резултата
Влияние върху потока Не може да спре теста, само оформя заявката Може да спре нишка или цялото тестово изпълнение
Обща цел Параметризиране Корелация и обработка на грешки

На практика двете работят като двойка. PostProcessor улавя токен за сесия от отговор за вход, а PreProcessor при следващата заявка инжектира този токен, преди да бъде изпратено повикването. Следващият пример демонстрира PostProcessor-а, част от този шаблон.

Пример за пост процесор

Този урок ще ви покаже инструкции стъпка по стъпка как да използвате постпроцесор в JMeter. Нека започнем с простия тестов скрипт.

  1. JMeter изпраща HTTP заявка към тествания уеб сървър www.google.com.
  2. JMeter получава отговор от Google сървър.
  3. Ако отговорът на сървъра е грешка, JMeter ще Спри се Тестът.
  4. Ако отговорът на сървъра OK (няма грешка), JMeter ще продължи Тестът.

Тук е пътна карта от този пример:

Пример за пост процесор

Предварително условие:

We повторна употреба Стъпка 1 и Стъпка 2 в статията JMeter Тестване на производителността. Ако JMeter все още не е инсталиран, следвайте JMeter ръководство за инсталиране на първо място.

Стъпка 1) Добавяне на група нишки

Десен бутон на План за тестване и добавете нова група нишки: Добави -> Нишки (потребители) -> Група теми

Но в контролния панел на Thread Group въведете Thread Properties, както следва:

Добавяне на група теми

Тази настройка позволява JMeter създаване на 10 потребителска заявка към http://www.google.com 10 пъти.

Стъпка 2) Добавете JMeter елементи

  • Добавяне на HTTP заявка по подразбиране
  • Добавете HTTP заявка

Все още правим JMeter изпрати заявка http://www.google.com да се Google сървър.

Стъпка 3) Добавяне на постпроцесорен елемент

Кликнете с десния бутон Група теми -> Добави -> Пост процесор -> Манипулатор на действие за състояние на резултат

Манипулатор на действие за състояние на резултат позволява на потребителя да спре нишката или целия тест, ако потребителската заявка е неуспешна.

Добавяне на постпроцесорен елемент

В панела за манипулатори на действие за състояние на резултат изберете Спрете теста сега. Този избор ще спре теста, ако JMeter получите грешката от отговора на сървъра.

Добавяне на постпроцесорен елемент

Стъпка 4) Конфигурирайте HTTP заявката

Отворете панела за HTTP заявки. Въведете "abc" към полето Път.

Конфигурирайте HTTP заявката

Когато влезете "abc" към пътя, JMeter ще създаде URL искане до Google сървър: http://www.google.com/abc. Това URL не съществува на Google сървър. Той е погрешно URL поискайте така Google сървърът ще върне грешка.

Стъпка 5) Добавяне на дърво за преглед на резултатите

Кликнете с десния бутон Група теми -> Добави -> слушател -> Преглед на дървото на резултатите

Добавяне на дърво за преглед на резултатите

Стъпка 6) Изпълнете тест

Изберете View Result Tree, натиснете бутона Run в лентата с менюта. Ще видите грешка отговор от Google сървърът и тестът ще спре без завършване на 100 теми.

Изпълнете теста

Сега се върнете към стъпка 4, отворете прозореца HTTP заявка, въведете „календар” към прозореца. Това прави JMeter създаване на URL поиска https://calendar.google.com/calendar/u/0/r към Google сървър. Това е коригира URL поискайте така Google сървърът ще върне OK (няма грешка).

Изпълнете теста

Изберете View Result Tree, натиснете бутона Run в лентата с менюта. Ще видите OK отговор от Google сървър и тестът ще продължи, докато всичките 100 нишки не бъдат завършени.

Изпълнете теста

Добавяне на твърдение заедно с обработчика на действие за състоянието на резултата прави проверката по-строга, защото твърдение може да не успее при Sampler, който е върнал HTTP 200, но е доставил грешно съдържание.

Отстраняване на проблеми

Ако се сблъскате с проблема, докато изпълнявате горния сценарий... направете следното:

  1. Проверете дали се свързвате с интернет чрез прокси. Ако да, премахнете проксито.
  2. Отворете нов екземпляр на Jmeter
  3. Отворете ProcessorTestPlan.jmx в Jmeter
  4. Double-щракнете върху Thread Group -> View Results Tree
  5. Стартирайте теста

Ако даден постпроцесор изглежда не прави нищо, първо проверете позицията му. Постпроцесор, поставен извън обхвата на семплера, към който е насочен, никога не се изпълнява, което е най-честата причина за празен екземпляр.tracпроменлива, свързана с ted. Свързани елементи, като например контролери намлява разпределено тестване следвайте същата логика на обхвата.

Въпроси и Отговори

Предварителен процесор (PreProcessor) променя съдържанието на заявката, преди тя да бъде изпратена. Таймерът (Timer) само спира нишката за определен интервал. И двата се изпълняват преди Sampler-а, но таймерът никога не променя данните на заявката.

Бившиятtractor запазва стойността в JMeter име на променлива, което дефинирате. Всеки по-късен Sampler в същата нишка я препраща със синтаксиса ${variableName}, в път, заглавка или тяло на заявката.

Да. Няколко асистенти с изкуствен интелект вече прочитат записан отговор и предлагат регулярен израз или гранична двойка за корелация. Предложението все още се нуждае от преглед, защото изкуственият интелект не може да знае кои стойности са наистина динамични.

Да. Асистентите с изкуствен интелект сравняват суровия отговор с предишния.tracизраз на tor и посочване на несъответствия в escaping, groupingили обхват. Проверете корекцията в „View Results Tree“, преди да ѝ се доверите при изпълнение на зареждане.

Процесорите се изпълняват веднъж за всяко изпълнение на Sampler в рамките на техния обхват. С десет нишки looping пет пъти, процесор, свързан към този Sampler, се изпълнява петдесет пъти и всяка нишка запазва собствените си стойности на променливите.

Обобщете тази публикация с: