Processor in JMeter: PreProcessor & PostProcessor
⚡ Smart sammanfattning
Processor in JMeter modifierar Sampler-förfrågningar före eller efter körning. PreProcessor förbereder förfrågningsdata, medan PostProcessor extracts-värden och styr testflödet, vilket möjliggör korrelation, dynamisk parametrisering och tillförlitligt prestandatestbeteende.

En processor i Apache JMeter är ett testplanelement som modifierar samplarna inom sitt omfång. Det körs automatiskt, antingen precis innan en begäran lämnar JMeter eller omedelbart efter att ett svar anländer, vilket gör det till den huvudsakliga mekanismen för att hantera dynamiska data under en utvärderingsprov.
Det finns 2 typer av processorer:
- Förprocessor
- Postprocessor
Omfattningen avgör hur långt en processor når. En processor placerad direkt under en Testplan eller en trådgrupp gäller för varje samplare under den, medan en processor som är kapslad inuti en enda samplare endast påverkar den begäran. Att förstå denna regel förhindrar konfigurationsfelen som tas upp i felsökningsavsnittet på den här sidan.
Förprocessor
Förbehandlare utför någon åtgärd innan gör en begäran om provtagare.
Tänk på ett enkelt exempel: låt oss säga att du ville JMeter att "spindel" genom webbplatsen som testas, parse länk (kolla alla länkar på sidan) och avkastning HTML. Du skulle lägga till någon åtgärd som "HTML-länkparser" till din kontroller innan du skapar en HTTP-förfrågan.
Diagrammet ovan visar förprocessorn som sitter mellan styrenheten och den utgående begäran. Eftersom den körs först är det rätt plats att bygga begärandedata: generera en tidsstämpel, läsa ett värde från en CSV-kolumn, skriva om en sessionsidentifierare till URLeller tilldela olika inloggningsuppgifter till varje virtuell användare.
Postprocessor
Efterbehandlaren utför en åtgärd efter att ha gjort en Sampler-begäran.
Tänk på ett enkelt exempel: JMeter skickar en HTTP-förfrågan till webbservern som testas (etc www.google.com) och få svaret. Du vill JMeter för att stoppa testet om serverns svar är ett fel. Du kan använda postprocessorn för att utföra ovanstående uppgift enligt följande:
Som det andra diagrammet illustrerar läser postprocessorn svaret efter att samplaren är klar. Detta är också standardsvaret på korrelation. När en server returnerar en token, ett sessions-ID eller ett ordernummer som ändras vid varje körning, lagrar en postprocessor det värdet i en JMeter variabel så att nästa samplare kan återanvända den.
Typer av förprocessorer i JMeter
Apache JMeter levereras med en kompakt uppsättning förprocessorer. Var och en förbereder en provtagare på olika sätt, så att välja rätt element gör testplanen läsbar och enkel att underhålla.
- Exempel på tidsgräns: Definierar en maximal varaktighet för en begäran. Alla samplare som körs längre än det konfigurerade värdet markeras som misslyckade.
- Användarparametrar: Tilldelar specifika värden till variabler per virtuell användare, så varje tråd skickar sin egen datamängd.
- HTML-länkparser: Söker igenom sidan som testas, analyserar länkarna den hittar och matar in dem i följande HTTP-begäran.
- HTTP URL Omskrivningsmodifierare: Injicerar en sessionsidentifierare i URL för applikationer som track-sessioner utan cookies.
- RegEx-användarparametrar: Fyller i begärandeparametrar med hjälp av värden som samlats in av ett reguljärt uttryck från ett tidigare svar.
- JDBC-förprocessor: Kör ett SQL-uttryck före samplaren, vilket är användbart för att seeda eller återställa databasposter.
- JSR223 förprocessor: Utför en Groovy or Java skript för all anpassad förberedelselogik. Den ersätter den äldre BeanShell PreProcessor och presterar betydligt bättre under belastning.
💡 Tips: Föredra JSR223-förprocessorn med Groovy språk över BeanShell. Groovy skript kompileras och cachas, så de förbrukar mycket mindre CPU när tusentals trådar körs parallellt.
Typer av postprocessorer i JMeter
Postprocessorer delas in i två grupper: t.ex.tractorer som hämtar värden från ett svar, och hanterare som reagerar på resultatet av en sampler. Tabellen nedan mappar varje element till det svarsformat det passar bäst.
| Postprocessor | Bäst lämpad för | Typisk användning |
| Reguljärt uttryck Exempeltractor | Alla textsvar | Hämta tokens eller ID:n från HTML och vanlig text |
| Gränsexempeltractor | Alla textsvar | Registrera ett värde med hjälp av en vänster- och högergräns istället för ett fullständigt reguljärt uttryck |
| JSON Extractor | JSON-svar | Läser fält från REST-nyttolaster under API-testning |
| CSS/jQuery Extractor | HTML-svar | Välja ett element med CSS-väljare |
| XPath Extractor | XML- och XHTML-svar | Navigera i ett strukturerat dokumentträd |
| JDBC Postprocessor | Databasresultat | Verifiera eller rensa rader efter en begäran |
| JSR223 Postprocessor | Vilket svar som helst | Anpassad skriptbaserad parsning och påståenden |
| Resultat Status Åtgärdshanterare | Vilket svar som helst | Slutaping en tråd eller hela testet när en sampler misslyckas |
Gränsexettractor anlände till JMeter 4.0 och är ofta det snabbaste alternativet att skriva, eftersom det bara frågar efter texten omedelbart till vänster och höger om värdet. Det reguljära uttrycket Exempeltractor förblir det mer flexibla valet när den omgivande markupen varierar mellan svaren.
Skillnaden mellan förprocessor och efterprocessor
Båda elementen delar samma omfattningsregler, men de löser motsatta problem. Jämförelsen nedan sammanfattar skillnaden före det bearbetade exemplet.
| Parameter | Förprocessor | Postprocessor |
| Utförande tid | Körs innan samplaren skickar sin begäran | Körs efter att samplaren har mottagit sitt svar |
| Huvudsakliga syfte | Förbereder och ändrar förfrågningsdata | Läser svarsdata och reagerar på den |
| Typiska element | Användarparametrar, HTML-länkparser, JSR223-förprocessor | Reguljärt uttryck Exempeltractor, JSON Extractor, Resultatstatus Åtgärdshanterare |
| Effekt på flödet | Kan inte stoppa testet, det formar bara begäran | Kan stoppa en tråd eller hela testkörningen |
| Gemensamt mål | Parametrisering | Korrelation och felhantering |
I praktiken fungerar de två som ett par. En PostProcessor hämtar en sessionstoken från ett inloggningssvar, och en PreProcessor injicerar den token vid nästa begäran innan anropet skickas. Exemplet som följer demonstrerar PostProcessor-halvan av det mönstret.
Exempel på efterbehandlare
Denna handledning visar dig steg-för-steg-instruktioner om hur du använder Post-processor i JMeter. Låt oss börja med det enkla testskriptet.
- JMeter skickar en HTTP-förfrågan till webbservern som testas www.google.com.
- JMeter får svar från Google servern.
- Om serverns svar är ett fel, JMeter kommer stoppa testet.
- Om serversvar OK (inget fel), JMeter kommer fortsätta testet.
Här är färdplan av detta exempel:
Förutsättning:
We återanvändning steg 1 och steg 2 i artikeln JMeter Prestandatester. Om JMeter inte är installerat än, följ instruktionerna JMeter installationsguide först.
Steg 1) Lägg till trådgrupp
Högerklicka på Testplan och lägg till en ny trådgrupp: Lägg till -> Trådar (användare) -> Trådgrupp
Men i Trådgruppens kontrollpanel anger du Trådegenskaper enligt följande:
Den här inställningen tillåter JMeter skapa 10 användarens begäran till http://www.google.com 10 gånger.
Steg 2) Lägg till JMeter element
- Lägg till standard för HTTP-begäran
- Lägg till HTTP-begäran
Vi gör fortfarande JMeter skicka förfrågan http://www.google.com till Google servern.
Steg 3) Lägg till Post-Processor Element
Högerklicka Trådgrupp -> Lägg till -> Postprocessor -> Resultat Status Åtgärdshanterare
Resultat Status Åtgärdshanterare tillåter användaren att stoppa tråden eller hela testet om användarens begäran misslyckades.
Välj i fönstret Resultatstatus Åtgärdshandtag Sluta testa nu. Detta val kommer att stoppa testet om JMeter få felet från serverns svar.
Steg 4) Konfigurera HTTP-förfrågan
Öppna HTTP-förfrågningspanelen. Stiga på "abc" till fältet Sökväg.
När du går in "abc" till stigen, JMeter kommer att skapa en URL begära att Google server: http://www.google.com/abc. Detta URL finns inte på Google servern. Det är oförrätter URL begäran så Google servern kommer att returnera ett fel.
Steg 5) Lägg till vyresultatträd
Högerklicka Trådgrupp -> Lägg till -> Lyssnare -> Visa resultatträd
Steg 6) Kör test
Välj Visa resultatträd, tryck på Kör-knappen på menyraden. Du kommer att se fel svar från Google servern och testet kommer att stoppas med ut slutföra 100 trådar.
Gå nu tillbaka till steg 4, öppna HTTP-begäran, ange "kalender” till rutan. Den gör JMeter skapa URL begära https://calendar.google.com/calendar/u/0/r till Google server. Detta är korrekt URL begäran så Google servern returnerar OK (inget fel).
Välj Visa resultatträd, tryck på Kör-knappen på menyraden. Du kommer att se OK svar från Google servern och testet fortsätter tills alla 100 trådar är klara.
Lägga till en påstående tillsammans med Result Status Action Handler gör kontrollen strängare, eftersom en assertion kan misslyckas med en samplare som returnerade HTTP 200 men levererade fel innehåll.
Felsökning
Om du stöter på problemet när du kör scenariot ovan ... gör följande:
- Kontrollera om du ansluter till internet via en proxy. Om ja, ta bort proxyn.
- Öppna en ny instans av Jmeter
- Öppna ProcessorTestPlan.jmx i Jmeter
- Double-klicka på Trådgrupp -> Visa resultatträd
- Kör testet
Om en postprocessor inte verkar göra någonting, kontrollera först dess position. En postprocessor som placeras utanför omfånget för den samplare den är riktad mot körs aldrig, vilket är den enskilt vanligaste orsaken till ett tomt ex.tracted variabel. Relaterade element som controllers och distribuerad testning följ samma omfattningslogik.









.gif)

.gif)