Processor erin JMeter: Preprocessor en postprocessor
⚡ Slimme samenvatting
Processor erin JMeter Wijzigt Sampler-verzoeken vóór of na de uitvoering. De PreProcessor bereidt de verzoekgegevens voor, terwijl de PostProcessor deze verwerkt.tracts-waarden en -besturingen voor de testflow, waardoor correlatie, dynamische parameterisering en betrouwbaar prestatiegedrag tijdens tests mogelijk worden.

Een processor in Apache JMeter Dit is een onderdeel van het testplan dat de Samplers binnen zijn bereik wijzigt. Het wordt automatisch uitgevoerd, vlak voordat een verzoek wordt verzonden. JMeter of direct nadat een reactie binnenkomt, waardoor het het belangrijkste mechanisme is voor het verwerken van dynamische gegevens tijdens een prestatie test.
Er zijn 2 soorten processoren:
- Pre-processor
- Post-processor
Het bereik bepaalt hoe ver een processor reikt. Een processor die direct onder een Testplan Ofwel is een threadgroep van toepassing op elke sampler eronder, terwijl een processor die binnen een enkele sampler is genest, alleen van invloed is op die specifieke aanvraag. Het begrijpen van deze regel voorkomt de configuratiefouten die in het gedeelte over probleemoplossing op deze pagina worden behandeld.
Pre-processor
Pre-processor voert een actie uit vaardigheden het indienen van een Sampler-verzoek.
Overweeg een eenvoudig voorbeeld: laten we zeggen dat je wilde JMeter om door de te testen website te ‘spinnen’, ontleden link (controleer alle links op de pagina) en terugkeer de HTML-code. U zou een actie zoals “HTML-linkparser” aan uw controller toevoegen voordat u een HTTP-verzoek maakt.
Het bovenstaande diagram toont de preprocessor tussen de controller en het uitgaande verzoek. Omdat deze als eerste wordt uitgevoerd, is dit de juiste plek om de verzoekgegevens samen te stellen: het genereren van een tijdstempel, het lezen van een waarde uit een CSV-kolom en het herschrijven van een sessie-ID naar de gewenste gegevens. URL, of het toewijzen van verschillende inloggegevens aan elke virtuele gebruiker.
Post-processor
De postprocessor voert een bepaalde actie uit na het maken van een Sampler Request.
Beschouw een eenvoudig voorbeeld: JMeter verzendt een HTTP-verzoek naar de te testen webserver (enz www.google.com) en ontvang het antwoord. Jij wil JMeter De test stoppen als de server een foutmelding geeft. Je kunt hiervoor de postprocessor gebruiken, zoals hieronder beschreven:
Zoals het tweede diagram illustreert, leest de postprocessor het antwoord nadat de sampler klaar is. Dit is ook het standaardantwoord op correlatie. Wanneer een server een token, een sessie-ID of een ordernummer retourneert dat bij elke uitvoering verandert, legt een postprocessor die waarde vast in een JMeter zodat de volgende Sampler deze opnieuw kan gebruiken.
Soorten voorverwerkers in JMeter
Apache JMeter Wordt geleverd met een compacte set voorverwerkers. Elk ervan bereidt een sampler op een andere manier voor, waardoor het selecteren van het juiste element het testplan leesbaar en gemakkelijk te onderhouden houdt.
- Voorbeeld van een time-out: Definieert een maximale duur voor een verzoek. Elke sampler die langer dan de geconfigureerde waarde draait, wordt als mislukt gemarkeerd.
- Gebruikersparameters: Wijs specifieke waarden toe aan variabelen per virtuele gebruiker, zodat elke thread zijn eigen dataset verzendt.
- HTML-linkparser: Het programma doorzoekt de te testen pagina, analyseert de gevonden links en voert deze in het daaropvolgende HTTP-verzoek in.
- HTTP URL Herschrijven van de modifier: Voegt een sessie-ID toe aan de URL voor toepassingen die track sessies zonder cookies.
- RegEx-gebruikersparameters: Vult de verzoekparameters in met waarden die zijn vastgelegd door een reguliere expressie uit een eerder antwoord.
- JDBC-voorverwerker: Voert een SQL-statement uit vóór de Sampler, wat handig is voor het vullen of resetten van databasegegevens.
- JSR223-voorprocessor: voert een . uit Groovy or Java Script voor elke gewenste voorbereidingslogica. Het vervangt de oudere BeanShell PreProcessor en presteert aanzienlijk beter onder belasting.
💡Tip: Geef de voorkeur aan de JSR223-voorprocessor met de Groovy taal via BeanShell. Groovy Scripts worden gecompileerd en in de cache opgeslagen, waardoor ze veel minder CPU-kracht verbruiken wanneer duizenden threads parallel worden uitgevoerd.
Soorten postprocessors in JMeter
Postprocessors vallen in twee groepen uiteen: bijvoorbeeldtracSamplers halen waarden uit een respons, en handlers reageren op het resultaat van een Sampler. De onderstaande tabel koppelt elk element aan het responsformaat dat er het beste bij past.
| Postprocessor | Best geschikt voor | Typisch gebruik |
| Reguliere expressie voorbeeldtractor | Elke tekstreactie | Tokens of ID's vastleggen uit HTML en platte tekst. |
| Grens Extractor | Elke tekstreactie | Een waarde vastleggen met behulp van een linker- en rechtergrens in plaats van een volledige reguliere expressie. |
| JSON-voorbeeldtractor | JSON-reacties | Velden uit REST-payloads lezen tijdens API-testen |
| CSS/jQuery voorbeeldtractor | HTML-reacties | Een element selecteren met een CSS-selector. |
| XPath Extractor | XML- en XHTML-reacties | Navigeren door een gestructureerde documentboom |
| JDBC-nabewerker | Databaseresultaten | Rijen controleren of opschonen na een verzoek. |
| JSR223 Postprocessor | Elke reactie | Aangepaste scriptmatige parsing en beweringen |
| Resultaat Status Actie Handler | Elke reactie | stopping een thread of de hele test wanneer een Sampler faalt |
De grens Extractor arriveerde in JMeter 4.0 en is vaak de snelste optie om te schrijven, omdat er alleen wordt gevraagd om de tekst direct links en rechts van de waarde. De reguliere expressie ExtracTor blijft de meest flexibele keuze wanneer de omringende opmaak tussen reacties varieert.
Verschil tussen preprocessor en postprocessor
Beide elementen delen dezelfde bereikregels, maar lossen tegengestelde problemen op. De onderstaande vergelijking vat het verschil samen vóór het uitgewerkte voorbeeld.
| Parameter | Preprocessor | Postprocessor |
| Uitvoeringstijd | Wordt uitgevoerd voordat de Sampler zijn verzoek verzendt. | Wordt uitgevoerd nadat de Sampler zijn reactie heeft ontvangen. |
| Primair doel | Bereidt aanvraaggegevens voor en wijzigt deze. | Leest responsgegevens en reageert daarop. |
| Typische elementen | Gebruikersparameters, HTML-linkparser, JSR223-preprocessor | Reguliere expressie voorbeeldtractor, JSON Extractor, Resultaatstatus Actiehandler |
| Effect op de stroming | Kan de test niet stoppen, alleen het verzoek vormgeven. | Kan een thread of de hele testrun stoppen. |
| Gemeenschappelijk doel | parametrering | Correlatie en foutafhandeling |
In de praktijk werken de twee samen. Een PostProcessor onderschept een sessietoken uit een inlogreactie, en een PreProcessor voegt dat token toe aan het volgende verzoek voordat de aanroep wordt verzonden. Het volgende voorbeeld illustreert het PostProcessor-gedeelte van dat patroon.
Voorbeeld van een postprocessor
Deze tutorial toont u stapsgewijze instructies voor het gebruik van Post-processor in JMeter. Laten we beginnen met het eenvoudige testscript.
- JMeter verzendt een HTTP-verzoek naar de te testen webserver www.google.com.
- JMeter krijgt een reactie van de Google server.
- Als de serverreactie is een foutmelding, JMeter wil stoppen de test.
- Als serverreactie OK (geen fout), JMeter wil voortzetten de test.
Hier is de roadmap van dit voorbeeld:
Voorwaarde:
We hergebruik de Stap 1 en Stap 2 in het artikel JMeter Performance Testing. Indien JMeter Als het nog niet geïnstalleerd is, volg dan de instructies. JMeter installatie gids kopen.
Stap 1) Discussiegroep toevoegen
Klik met de rechtermuisknop op de Testplan en voeg een nieuwe threadgroep toe: Toevoegen -> Onderwerpen (gebruikers) -> Discussiegroep
Maar voer in het Thread Group-configuratiescherm Thread Properties als volgt in:
Deze instelling laat toe JMeter en je merk te creëren 10 gebruikersverzoek aan http://www.google.com 10 tijden.
Stap 2) Toevoegen JMeter geeft je de mogelijkheid
- Voeg standaard HTTP-verzoek toe
- HTTP-verzoek toevoegen
Wij maken nog steeds JMeter Verzend verzoek http://www.google.com naar Google server.
Stap 3) Voeg een postprocessorelement toe
Right Click Discussiegroep -> Toevoegen -> Postprocessor -> Resultaat Status Actie Handler
Resultaat Status Actie Handler Hiermee kan de gebruiker de thread of de hele test stoppen als het gebruikersverzoek mislukt.
Kies in het deelvenster Resultaatstatus Actiehandle Stop nu met testen. Deze selectie stopt de test als JMeter krijg de fout van de serverreactie.
Stap 4) Configureer het HTTP-verzoek
Open het HTTP-verzoekpaneel. Binnenkomen "abc" naar het padveld.
Wanneer je binnenkomt "abc" naar het pad, JMeter zal een URL verzoek aan Google server: http://www.google.com/abc. Dit URL bestaat niet op Google server. Het is verkeerd URL verzoek dus Google De server zal een foutmelding geven.
Stap 5) Voeg weergaveresultatenboom toe
Right Click Discussiegroep -> Toevoegen -> Luisteraar -> Resultatenboom bekijken
Stap 6) Voer de test uit
Selecteer Resultatenboom bekijken en druk op de knop Uitvoeren op de menubalk. Je zult de zien fout reactie van Google server en de test zullen stoppen zonder 100 threads voltooien.
Keer nu terug naar stap 4, open het deelvenster HTTP-verzoek en voer “kalender' naar het venster. Het maakt JMeter en je merk te creëren URL te vragen https://calendar.google.com/calendar/u/0/r aan de Google server. Dit is te corrigeren URL verzoek dus Google De server zal OK retourneren (geen foutmelding).
Selecteer Resultatenboom bekijken en druk op de knop Uitvoeren op de menubalk. Je zult de zien OK reactie van Google De server en de test zullen doorgaan totdat alle 100 threads voltooid zijn.
Een bewering Het gebruik van de Result Status Action Handler maakt de controle strenger, omdat een bewering kan leiden tot een fout bij een Sampler die HTTP 200 retourneerde maar de verkeerde inhoud leverde.
Problemen oplossen
Als u dit probleem ondervindt tijdens het uitvoeren van het bovenstaande scenario … doet u het volgende:
- Controleer of u via een proxy verbinding maakt met internet. Zo ja, verwijder de proxy.
- Open een nieuw exemplaar van Jmeter
- Open de ProcessorTestPlan.jmx in Jmeter
- Double-klik op Discussiegroep -> Resultatenboom bekijken
- Voer de test uit
Als een postprocessor niets lijkt te doen, controleer dan eerst de positie ervan. Een postprocessor die buiten het bereik van de sampler waarop hij is gericht is geplaatst, wordt nooit uitgevoerd. Dit is de meest voorkomende oorzaak van een lege uitvoer.tracted variabele. Gerelateerde elementen zoals controllers en gedistribueerd testen Volg dezelfde logica voor het bereik.









.gif)

.gif)