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.

  • ⚙️ Kerndefinitie: Een processor wijzigt de Sampler binnen zijn bereik, door deze uit te voeren vóór het verzoek of na het antwoord.
  • 🔍 Rol van de voorverwerker: Preprocessors stellen variabelen in en herschrijven deze. URLs, parseer HTML-links en pas gebruikersparameters toe voordat een Sampler wordt uitgevoerd.
  • 📤 Rol van de nabewerker: Postprocessors lezen reacties, bijvoorbeeldtracDe dynamische waarden worden in variabelen opgeslagen en er wordt bepaald of de test verdergaat.
  • 🧩 Extractor Selectie: Reguliere expressies, grenzen, JSON, CSS/jQuery en XPathtracTors passen elk bij een ander antwoordformaat.
  • 🛑 Datatransportbesturing: De Result Status Action Handler stopt één thread of de hele test wanneer een Sampler mislukt.
  • 🧪 Toegepaste stappenplan: In zes stappen bouw je een plan dat automatisch stopt zodra een ongeldig pad een serverfout oplevert.

Processor erin JMeter

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:

  1. Pre-processor
  2. 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.

Pre-processor

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:

Post-processor

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.

  1. JMeter verzendt een HTTP-verzoek naar de te testen webserver www.google.com.
  2. JMeter krijgt een reactie van de Google server.
  3. Als de serverreactie is een foutmelding, JMeter wil stoppen de test.
  4. Als serverreactie OK (geen fout), JMeter wil voortzetten de test.

Hier is de roadmap van dit voorbeeld:

Voorbeeld van een postprocessor

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:

Discussiegroep toevoegen

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.

Post-processorelement toevoegen

Kies in het deelvenster Resultaatstatus Actiehandle Stop nu met testen. Deze selectie stopt de test als JMeter krijg de fout van de serverreactie.

Post-processorelement toevoegen

Stap 4) Configureer het HTTP-verzoek

Open het HTTP-verzoekpaneel. Binnenkomen "abc" naar het padveld.

Configureer het HTTP-verzoek

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

Weergaveresultatenboom toevoegen

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.

Voer de test uit

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).

Voer de test uit

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.

Voer de test uit

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:

  1. Controleer of u via een proxy verbinding maakt met internet. Zo ja, verwijder de proxy.
  2. Open een nieuw exemplaar van Jmeter
  3. Open de ProcessorTestPlan.jmx in Jmeter
  4. Double-klik op Discussiegroep -> Resultatenboom bekijken
  5. 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.

Veelgestelde vragen

Een preprocessor wijzigt de inhoud van een verzoek voordat het wordt verzonden. Een timer pauzeert de thread alleen gedurende een vooraf bepaald interval. Beide worden uitgevoerd vóór de sampler, maar de timer wijzigt nooit de verzoekgegevens.

De extracTor slaat de waarde op in een JMeter De naam van de variabele die u definieert. Elke latere Sampler in dezelfde thread verwijst ernaar met de syntaxis ${variabelenaam}, in een pad, header of request body.

Ja. Verschillende AI-assistenten lezen nu een opgenomen antwoord en suggereren een reguliere expressie of een paar grenswaarden voor correlatie. De suggestie moet nog wel worden gecontroleerd, omdat AI niet kan weten welke waarden daadwerkelijk dynamisch zijn.

Ja. AI-assistenten vergelijken het onbewerkte antwoord met de extractor-uitdrukking en wijs op discrepanties in escaping, grooping, of bereik. Controleer de oplossing in de resultatenboomweergave voordat u deze in een laadtest vertrouwt.

Processors draaien één keer voor elke Sampler-uitvoering binnen hun bereik. Met tien threads...ping Vijf keer wordt een processor die aan die Sampler is gekoppeld vijftig keer uitgevoerd, en elke thread bewaart zijn eigen variabele waarden.

Vat dit bericht samen met: