Процесор в JMeter: Препроцесор и постпроцесор
⚡ Умно обобщение
Процесор в JMeter модифицира заявките на Sampler преди или след изпълнение. PreProcessor подготвя данните на заявката, докато PostProcessor извършваtracts определя стойности и контролира тестовия поток, което позволява корелация, динамична параметризация и надеждно поведение при тестове за производителност.
Процесор в Apache JMeter е елемент от тестовия план, който модифицира семплерите в рамките на своя обхват. Той се изпълнява автоматично, точно преди заявка да излезе JMeter или веднага след получаване на отговор, което го прави основният механизъм за обработка на динамични данни по време на тест за представяне.
Има 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. Нека започнем с простия тестов скрипт.
- JMeter изпраща HTTP заявка към тествания уеб сървър www.google.com.
- JMeter получава отговор от Google сървър.
- Ако отговорът на сървъра е грешка, JMeter ще Спри се Тестът.
- Ако отговорът на сървъра 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" към полето Път.
Когато влезете "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, но е доставил грешно съдържание.
Отстраняване на проблеми
Ако се сблъскате с проблема, докато изпълнявате горния сценарий... направете следното:
- Проверете дали се свързвате с интернет чрез прокси. Ако да, премахнете проксито.
- Отворете нов екземпляр на Jmeter
- Отворете ProcessorTestPlan.jmx в Jmeter
- Double-щракнете върху Thread Group -> View Results Tree
- Стартирайте теста
Ако даден постпроцесор изглежда не прави нищо, първо проверете позицията му. Постпроцесор, поставен извън обхвата на семплера, към който е насочен, никога не се изпълнява, което е най-честата причина за празен екземпляр.tracпроменлива, свързана с ted. Свързани елементи, като например контролери намлява разпределено тестване следвайте същата логика на обхвата.










.gif)

.gif)