Sök…


Introduktion

I JMeter-prestandatestning betyder korrelationer möjligheten att hämta dynamisk data från serversvaret och att posta dem till efterföljande förfrågningar. Den här funktionen är kritisk för många aspekter av testning, till exempel tokenbaserade skyddade applikationer.

Korrelation med hjälp av den reguljära uttrycksextraktorn i Apache JMeter

Om du behöver extrahera information från ett textsvar är det enklaste sättet att använda Regular Expressions. Matchningsmönstret är väldigt likt det som används i Perl. Låt oss anta att vi vill testa ett arbetsflöde för köp av flygbiljetter. Det första steget är att skicka inköpsoperationen. Nästa steg är att se till att vi kan verifiera alla detaljer med köp-ID, som ska returneras för den första begäran. Låt oss föreställa oss att den första begäran returnerar en html-sida med den här typen av ID som vi behöver extrahera:

<div class="container">
  <div class="container hero-unit">
    <h1>Thank you for you purchse today!</h1>
       <table class="table">
           <tr>
             <td>Id</td>
             <td>Your purchase id is 1484697832391</td>
           </tr>
           <tr>
             <td>Status</td>
             <td>Pending</td>
           </tr>
           <tr>
             <td>Amount</td>
             <td>120 USD</td>
            </tr>
         </table>
    </div>
</div>

Denna typ av situation är den bästa kandidaten för att använda JMeter Regular Expression-extraktor. Regular Expression är en speciell textsträng för att beskriva ett sökmönster. Det finns många online-resurser som hjälper till att skriva och testa vanliga uttryck. En av dem är https://regex101.com/ .

ange bildbeskrivning här

För att använda denna komponent öppnar du JMeter-menyn och: Lägg till -> Postprocessorer -> Regular Expression Extractor

ange bildbeskrivning här

Regular Expression Extractor innehåller följande fält:

  • Referensnamn - namnet på variabeln som kan användas efter extraktion
  • Regular Expression - en sekvens av symboler och tecken som uttrycker en sträng (mönster) som kommer att söka i texten
  • Mall - innehåller referenser till grupperna. Eftersom en regex kan ha mer än en grupp tillåter den att specificera vilket gruppvärde som ska extraheras genom att ange gruppnumret som $ 1 $ eller $ 2 $ eller $ 1 $$ 2 $ (extrahera båda grupperna)
  • Match nr - anger vilken matchning som ska användas (0 värde matchar slumpmässiga värden / vilket positivt tal N betyder för att välja Nth matchning / negativt värde måste användas med ForEach Controller)
  • Standard - standardvärdet som kommer att lagras i variabeln om inga matchningar hittas, lagras i variabeln.

Kryssrutan "Använd på" behandlar prover som gör begäranden om inbäddade resurser. Denna parameter definierar om Regular Expression ska tillämpas på huvudprovresultaten eller på alla förfrågningar, inklusive inbäddade resurser. Det finns flera alternativ för den här parametern:

  • Huvudprov och delprover
  • Endast huvudprov
  • Endast delprover
  • JMeter Variable - påståendet tillämpas på innehållet i den nämnda variabeln, som kan fyllas med en annan begäran

Kryssrutan "Fält att kontrollera" gör det möjligt att välja vilket fält Regular Expression ska tillämpas på. Nästan alla parametrar är självbeskrivande:

  • Body - svarets kropp, t.ex. innehållet på en webbsida (exklusive rubriker)
  • Kropp (oavkortad) - svarets kropp, med alla HTML-flyktkoder ersatta. Observera att HTML-flyktingar behandlas utan hänsyn till sammanhang, så vissa felaktiga ersättningar kan göras (* det här alternativet påverkar prestandan starkt)
  • Body - Body som ett dokument - utdragstext från olika typer av dokument via Apache Tika (* kan också påverka prestanda)
  • Kropp - Begär rubriker - kanske inte är närvarande för icke-HTTP-prover
  • Body - Response Headers - kanske inte är närvarande för icke-HTTP-prover
  • Kropp - URL
  • Svarskod - t.ex. 200
  • Body - Response Message - t.ex. OK

När uttrycket har extraherats kan det användas i efterföljande förfrågningar med variabeln $ {purchaseId}.

ange bildbeskrivning här

Denna tabell innehåller alla sammandragningar som stöds av JMeter Regular Expressions:

ange bildbeskrivning här ange bildbeskrivning här

Korrelation med XPath Extractor i JMeter

XPath kan användas för att navigera genom element och attribut i ett XML-dokument. Det kan vara användbart när data från svaret inte kan extraheras med Regular Expression Extractor. Till exempel i fallet med ett scenario där du behöver extrahera data från liknande taggar med samma attribut, men med olika värden. XPath Extractor liknar CSS / JQuery Extractor men XPath Extractor bör användas för XML-innehåll medan CSS / JQuery Extractor bör användas för HTML-innehåll. Låt oss anta att vi i svaret har en tabell med olika värden där vi behöver extrahera värde från den andra tabellraden.

<div id="weeklyPrices">
    <tr>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$60.00</td>
        <td>$70.00</td>
        <td>$70.00</td>
    </tr>
</div>

Framöver kommer rätt XPath för det fallet att vara: // div [@ id = 'weekPrices'] / tr / td 1

För att använda denna komponent öppnar du JMeter-menyn och: Lägg till -> Postprocessorer -> XPath Extractor

ange bildbeskrivning här

XPath Extractor innehåller flera vanliga konfigurationselement som nämns i 'Korrelation med Regular Expression Extractor'. Detta inkluderar namn, tillämpning på, referensnamn, matchningsnummer (sedan JMeter 3.2) och standardvärde.

Det finns massor av webbresurser med fuskark och redaktörer online för att skapa och testa din skapade xpath (som den här ). Men baserat på exemplen nedan kan vi hitta sättet att skapa de vanligaste xpath-lokalisatorerna.

ange bildbeskrivning här

Om du vill analysera HTML till XHTML måste vi kontrollera alternativet "Använd snyggt". Efter att ha beslutat om statusen "Använd tidigt" finns det också ytterligare alternativ:

Om "Använd tidy" är markerat:

  • Tyst - sätter Tidy Quiet-flaggan
  • Rapportera fel - om ett snyggt fel inträffar, ställ in påståendet i enlighet därmed
  • Visa varningar - anger alternativet Tidy show varnings

Om 'Använd tidy' är avmarkerat:

  • Använd namnutrymmen - om markerat kommer XML-parsern att använda namnutrymmet
  • Validera XML - kontrollera dokumentet mot det angivna schemat
  • Ignorera Whitespace - ignorera Element Whitespace
  • Hämta externa DTD: er - om det väljs hämtas externa DTD: er

"Returnera hela XPath-fragment istället för textinnehåll" är självbeskrivande och bör användas om du inte bara vill returnera xpath-värdet utan också värdet inom dess xpath-lokalisering. Det kan vara användbart för felsökningsbehov.

Det är också värt att nämna att det finns en lista över mycket praktiska webbläsar-plugins för att testa XPath-lokalisatorer. För Firefox kan du använda " Firebug " -pluginet medan " XPath Helper " för Chrome är det mest praktiska verktyget.

ange bildbeskrivning här

Korrelation med CSS / JQuery Extractor i JMeter

CSS / JQuery-extraktorn möjliggör extrahering av värden från ett serversvar genom att använda en CSS / JQuery-väljarsyntax, som annars kan ha varit svår att skriva med Regular Expression. Som en postprocessor bör detta element köras för att extrahera de begärda noderna, text- eller attributvärdena från en begärarsamplare och för att lagra resultatet i den givna variabeln. Denna komponent liknar XPath Extractor. Valet mellan CSS, JQuery eller XPath beror vanligtvis på användarnas preferenser, men det är värt att nämna att XPath eller JQuery kan korsa ner och också korsa DOM, medan CSS inte kan gå upp DOM. Låt oss anta att vi vill extrahera alla ämnen från Stack Overflow-dokumentationen som är relaterade till Java. Du kan använda Firebug-pluginet för att testa dina CSS / JQuery-väljare i Firefox eller CSS Selector Tester i Chrome.

ange bildbeskrivning här

För att använda denna komponent öppnar du JMeter-menyn och: Lägg till -> Postprocessorer -> CSS / JQuery Extractor

ange bildbeskrivning här

Nästan alla dessa extraktionsfält liknar fältet Regular Expression extractor, så du kan få deras beskrivning från det exemplet. En skillnad är emellertid fältet ”CSS / JQuery Extractor implementering”. Sedan JMeter 2.9 kan du använda CSS / JQuery-extraktorn baserat på två olika implementationer: jsoup- implementeringen (detaljerad beskrivning av dess syntax här ) eller JODD Lagarto (detaljerad syntax kan hittas här ). Båda implementeringarna är nästan desamma och har endast små syntaxskillnader. Valet mellan dem är baserat på användarens preferenser.

ange bildbeskrivning här

Baserat på ovannämnda konfiguration kan vi extrahera alla ämnen från den begärda sidan och verifiera de extraherade resultaten med hjälp av "Debug Sampler" och "View Results Tree"-lyssnaren.

Korrelation med JSON Extractor

JSON är ett vanligt använt dataformat som används i webbaserade applikationer. JMeter JSON Extractor ger ett sätt att använda JSON Path-uttryck för att extrahera värden från JSON-baserade svar i JMeter. Denna postprocessor måste placeras som ett barn i HTTP-samplaren eller för alla andra samplare som har svar.

För att använda denna komponent öppnar du JMeter-menyn och: Lägg till -> Postprocessorer -> JSON Extractor.

ange bildbeskrivning här

JSON Extractor är mycket lik den vanliga Expression Extractor. Nästan alla huvudfält nämns i det exemplet. Det finns bara en specifik JSON Extractor-parameter: 'Compute concatenation var'. Om många resultat hittas kommer denna extraktor att sammanfoga dem genom att använda ',' separatorn och lagra den i en var med namnet _ALL.

Låt oss anta detta serversvar med JSON:

{ 
    "store": {
        "book": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          },
          { "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
          },
          { "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
          }
        ],
        "bicycle": {
        "color": "red",
        "price": 19.95
    }
  }
}

Tabellen nedan ger ett bra exempel på olika sätt att extrahera data från en specificerad JSON:

ange bildbeskrivning här

Genom denna länk kan du hitta en mer detaljerad beskrivning av JSON Path-format med tillhörande exempel.

Automatiserad korrelation med användning av BlazeMeters "SmartJMX"

När du manuellt skriver dina prestationsskript måste du själv hantera korrelation. Men det finns ett annat alternativ att skapa dina skript - inspelning av automatiseringsskript. Å ena sidan hjälper den manuella metoden till att skriva strukturerade skript och du kan lägga till alla erforderliga extraktorer samtidigt. Å andra sidan är denna strategi mycket tidskrävande.

Registrering av skript för automatisering är mycket enkel och gör att du kan göra samma arbete, bara mycket snabbare. Men om du använder vanliga inspelningsmetoder kommer skriptet att vara väldigt ostrukturerade och kräver vanligtvis ytterligare parametrisering. Funktionen "Smart JMX" på Blazemeter-inspelaren kombinerar fördelarna med båda sätten. Det finns på denna länk: [ https://a.blazemeter.com/app/recorder/index.html????1]

Efter registreringen går du till avsnittet "Inspelare".

ange bildbeskrivning här

För att starta skriptinspelning måste du först konfigurera webbläsarens proxy ( täckt här ), men den här gången bör du få en proxy-värd och en port som tillhandahålls av BlazeMeter-inspelaren.

ange bildbeskrivning här

När webbläsaren är konfigurerad kan du gå vidare med skriptinspelning genom att trycka på den röda knappen längst ner. Nu kan du gå till applikationen under test och utföra användarens arbetsflöden för inspelning.

ange bildbeskrivning här

När skriptet har spelats in kan du exportera resultaten till en "SMART" JMX-fil. En exporterad jmx-fil innehåller en lista med alternativ som låter dig konfigurera ditt skript och parametrera, utan ytterligare ansträngningar. En av dessa förbättringar är att ”SMART” JMX automatiskt hittar korrelationskandidater, ersätter den med lämplig extraherare och ger ett enkelt sätt för ytterligare parametrisering.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow