Apache JMeter
Apache JMeter Correlaties
Zoeken…
Invoering
In JMeter-prestatietests betekent Correlations de mogelijkheid om dynamische gegevens op te halen uit de serverreactie en deze te posten naar de volgende aanvragen. Deze functie is van cruciaal belang voor veel testaspecten, zoals op tokens gebaseerde beveiligde toepassingen.
Correlatie met de reguliere expressie-extractor in Apache JMeter
Als u informatie uit een tekstreactie wilt extraheren, kunt u het beste Reguliere expressies gebruiken. Het bijpassende patroon lijkt erg op het patroon dat in Perl wordt gebruikt. Laten we aannemen dat we een workflow voor het kopen van vliegtickets willen testen. De eerste stap is het indienen van de aankoopbewerking. De volgende stap is om ervoor te zorgen dat we alle details kunnen verifiëren met behulp van de aankoop-ID, die moet worden geretourneerd voor het eerste verzoek. Stel dat het eerste verzoek een html-pagina retourneert met dit type ID dat we moeten extraheren:
<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>
Dit soort situaties is de beste kandidaat voor het gebruik van de JMeter Regular Expression-extractor. Reguliere expressie is een speciale tekstreeks voor het beschrijven van een zoekpatroon. Er zijn veel online bronnen die helpen bij het schrijven en testen van reguliere expressies. Een van hen is https://regex101.com/ .
Om dit component te gebruiken, opent u het JMeter-menu en: Toevoegen -> Post-processors -> Reguliere expressie-extractor
De Regular Expression Extractor bevat deze velden:
- Referentienaam - de naam van de variabele die na extractie kan worden gebruikt
- Reguliere expressie - een reeks symbolen en tekens die een tekenreeks (patroon) uitdrukken waarnaar in de tekst wordt gezocht
- Sjabloon - bevat verwijzingen naar de groepen. Omdat een regex meer dan één groep kan bevatten, kunt u opgeven welke groepswaarde moet worden geëxtraheerd door het groepsnummer op te geven als $ 1 $ of $ 2 $ of $ 1 $$ 2 $ (beide groepen extraheren)
- Match No. - specificeert welke match zal worden gebruikt (0 waarde komt overeen met willekeurige waarden / elk positief getal N betekent om de Nde match te selecteren / negatieve waarde moet worden gebruikt met de ForEach Controller)
- Standaard - de standaardwaarde die in de variabele wordt opgeslagen als er geen overeenkomsten worden gevonden, wordt opgeslagen in de variabele.
Het selectievakje "Toepassen op" behandelt voorbeelden die verzoeken om ingesloten bronnen. Deze parameter bepaalt of Reguliere expressie wordt toegepast op de hoofdvoorbeeldresultaten of op alle verzoeken, inclusief ingesloten bronnen. Er zijn verschillende opties voor deze param:
- Hoofdmonster en submonsters
- Alleen hoofdmonster
- Alleen submonsters
- JMeter-variabele - de bewering wordt toegepast op de inhoud van de genoemde variabele, die kan worden ingevuld door een ander verzoek
Met het aankruisvak 'Te controleren veld' kunt u kiezen op welk veld de reguliere expressie moet worden toegepast. Bijna alle parameters zijn zelfbeschrijvend:
- Body - de body van het antwoord, bijv. De inhoud van een webpagina (exclusief headers)
- Hoofdtekst (niet-gevormd) - de hoofdtekst van de reactie, waarbij alle HTML-ontsnappingscodes zijn vervangen. Merk op dat HTML-escapes worden verwerkt zonder rekening te houden met context, dus sommige onjuiste vervangingen kunnen worden gemaakt (* deze optie heeft grote invloed op de prestaties)
- Hoofdtekst - Hoofdtekst als document - de extract-tekst uit verschillende soorten documenten via Apache Tika (* kan ook de prestaties beïnvloeden)
- Hoofdgedeelte - Verzoekkoppen - is mogelijk niet aanwezig voor niet-HTTP-voorbeelden
- Body - Response Headers - is mogelijk niet aanwezig voor niet-HTTP-monsters
- Body - URL
- Responscode - bijv. 200
- Body - Reactiebericht - bijv. OK
Nadat de uitdrukking is geëxtraheerd, kan deze in volgende aanvragen worden gebruikt met behulp van de variabele $ {purchaseId}.
Deze tabel bevat alle weeën die worden ondersteund door JMeter Regular Expressions:
Correlatie met behulp van de XPath Extractor in JMeter
XPath kan worden gebruikt om door elementen en attributen in een XML-document te navigeren. Dit kan handig zijn als gegevens uit het antwoord niet kunnen worden geëxtraheerd met de Reguliere expressie-extractie. Bijvoorbeeld in het geval van een scenario waarin u gegevens moet extraheren uit vergelijkbare tags met dezelfde attributen, maar met verschillende waarden. De XPath Extractor is vergelijkbaar met de CSS / JQuery Extractor, maar XPath Extractor moet worden gebruikt voor XML-inhoud, terwijl CSS / JQuery Extractor moet worden gebruikt voor HTML-inhoud. Laten we aannemen dat we in de respons een tabel hebben met verschillende waarden, waarbij we waarde moeten extraheren uit de tweede tabelrij.
<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>
Voor de toekomst is de juiste XPath voor die zaak: // div [@ id = 'WeeklyPrices'] / tr / td 1
Om dit onderdeel te gebruiken, opent u het JMeter-menu en: Toevoegen -> Post-processors -> XPath Extractor
XPath Extractor bevat verschillende algemene configuratie-elementen die worden vermeld in de 'Correlatie met behulp van Regular Expression Extractor'. Dit omvat Naam, Toepassen op, Referentienaam, Matchnummer (sinds JMeter 3.2) en Standaardwaarde.
Er zijn veel webbronnen met online cheatsheets en editors om je gemaakte xpath te maken en te testen (zoals deze ). Maar op basis van de onderstaande voorbeelden kunnen we de manier vinden om de meest voorkomende xpath-locators te maken.
Als u HTML in XHTML wilt parseren, moeten we de optie "Tidy gebruiken" aanvinken. Nadat u de status 'Gebruik opruimen' hebt bepaald, zijn er ook extra opties:
Als 'Use Tidy' is aangevinkt:
- Stil - hiermee wordt de vlag Tidy Quiet ingesteld
- Fouten melden - stel de bewering dienovereenkomstig in als er een Tidy-fout optreedt
- Toon waarschuwingen - stelt de optie Toon waarschuwingen correct in
Als 'Gebruik Tidy' niet is aangevinkt:
- Gebruik naamruimten - indien ingeschakeld, gebruikt de XML-parser de naamruimte-resolutie
- Valideer XML - controleer het document volgens het opgegeven schema
- Witruimte negeren - Elementwitruimte negeren
- Externe DTD's ophalen - indien geselecteerd, worden externe DTD's opgehaald
'Retourneer het volledige XPath-fragment in plaats van tekstinhoud' is zelfbeschrijvend en moet worden gebruikt als u niet alleen de xpath-waarde, maar ook de waarde in de xpath-locator wilt retourneren. Het kan handig zijn voor het opsporen van fouten.
Het is ook vermeldenswaardig dat er een lijst met zeer handige browserplug-ins is voor het testen van XPath-locators. Voor Firefox kunt u de plug-in ' Firebug ' gebruiken, terwijl voor Chrome de ' XPath Helper ' het handigste hulpmiddel is.
Correlatie met behulp van de CSS / JQuery Extractor in JMeter
Met de CSS / JQuery-extractor kunnen waarden uit een serverreactie worden geëxtraheerd met behulp van een syntaxis van de CSS / JQuery-selector, die anders misschien moeilijk te schrijven zou zijn met Reguliere expressie. Als een post-processor moet dit element worden uitgevoerd om de gevraagde knooppunten, tekst of attribuutwaarden uit een verzoek-sampler te extraheren en het resultaat in de gegeven variabele op te slaan. Deze component lijkt erg op de XPath Extractor. De keuze tussen CSS, JQuery of XPath hangt meestal af van de voorkeur van de gebruiker, maar het is vermeldenswaard dat XPath of JQuery naar beneden en ook naar boven de DOM kan doorlopen, terwijl CSS niet naar de DOM kan lopen. Laten we aannemen dat we alle onderwerpen uit de Stack Overflow-documentatie willen extraheren die gerelateerd zijn aan Java. U kunt de Firebug- plug-in gebruiken om uw CSS / JQuery-selectors in Firefox te testen, of de CSS Selector Tester in Chrome.
Om dit component te gebruiken, opent u het JMeter-menu en: Toevoegen -> Post-processors -> CSS / JQuery Extractor
Bijna alle velden van deze extractor zijn vergelijkbaar met de velden van de reguliere expressie-extractor, dus u kunt hun beschrijving uit dat voorbeeld halen. Een verschil is echter het veld "CSS / JQuery Extractor-implementatie". Sinds JMeter 2.9 kunt u de CSS / JQuery-extractor gebruiken op basis van twee verschillende implementaties: de jsoup- implementatie (gedetailleerde beschrijving van de syntaxis hier ) of de JODD Lagarto (gedetailleerde syntaxis vindt u hier ). Beide implementaties zijn bijna hetzelfde en hebben slechts kleine syntaxverschillen. De keuze tussen hen is gebaseerd op de voorkeur van de gebruiker.
Op basis van de bovengenoemde configuratie kunnen we alle onderwerpen uit de gevraagde pagina extraheren en de geëxtraheerde resultaten verifiëren met behulp van de "Debug Sampler" en de "View Results Tree" -luisteraar.
Correlatie met behulp van de JSON Extractor
JSON is een veelgebruikte gegevensindeling die wordt gebruikt in webapplicaties. De JMeter JSON Extractor biedt een manier om JSON Path-expressies te gebruiken voor het extraheren van waarden uit op JSON gebaseerde antwoorden in JMeter. Deze post-processor moet worden geplaatst als een kind van de HTTP Sampler of voor elke andere sampler die antwoorden heeft.
Om dit onderdeel te gebruiken, opent u het JMeter-menu en: Toevoegen -> Post-processors -> JSON Extractor.
De JSON Extractor lijkt erg op de Regular Expression Extractor. Bijna alle hoofdvelden worden in dat voorbeeld genoemd. Er is slechts één specifieke JSON Extractor-parameter: 'Compaten concatenation var'. Als er veel resultaten worden gevonden, zal deze extractor ze samenvoegen door het scheidingsteken ',' te gebruiken en op te slaan in een var met de naam _ALL.
Laten we aannemen dat deze serverreactie met 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
}
}
}
De onderstaande tabel biedt een goed voorbeeld van verschillende manieren om gegevens te extraheren uit een opgegeven JSON:
Via deze link vindt u een meer gedetailleerde beschrijving van het JSON Path-formaat, met gerelateerde voorbeelden.
Geautomatiseerde correlatie door 'SmartJMX' van BlazeMeter te gebruiken
Wanneer u uw prestatiescripts handmatig schrijft, moet u zelf omgaan met correlatie. Maar er is nog een optie om uw scripts te maken - automatisering scripts opname. Aan de ene kant helpt de handmatige aanpak je bij het schrijven van gestructureerde scripts en kun je alle vereiste extractors tegelijkertijd toevoegen. Aan de andere kant is deze aanpak erg tijdrovend.
Het opnemen van automatiseringsscripts is heel eenvoudig en laat u hetzelfde werk doen, alleen veel sneller. Maar als u algemene opnamemethoden gebruikt, zijn de scripts erg ongestructureerd en vereisen meestal extra parametrisering. De "Smart JMX" -functie op de Blazemeter-recorder combineert de voordelen van beide manieren. Het is te vinden op deze link: [ https://a.blazemeter.com/app/recorder/index.html cialis cialis1]
Ga na registratie naar het gedeelte "Recorder".
Om scriptopname te starten, moet u eerst de proxy van uw browser configureren ( hier behandeld ), maar deze keer moet u een proxyhost en een poort krijgen die door de BlazeMeter-recorder wordt geleverd.
Wanneer de browser is geconfigureerd, kunt u doorgaan met scriptopname door op de rode knop onderaan te drukken. Nu kunt u naar de te testen toepassing gaan en gebruikersworkflows uitvoeren voor opname.
Nadat het script is opgenomen, kunt u de resultaten exporteren naar een "SMART" JMX-bestand. Een geëxporteerd jmx-bestand bevat een lijst met opties waarmee u uw script kunt configureren en parametriseren, zonder extra inspanningen. Een van deze verbeteringen is dat de "SMART" JMX automatisch correlatiekandidaten vindt, deze vervangt door de juiste extractor en een eenvoudige manier biedt voor verdere parametrisering.