JMeter Element och komponenter: Trådgrupp, Samplare

⚡ Smart sammanfattning

JMeter Elementen är byggstenarna i varje testplan: Trådgrupper skapar virtuella användare, samplare skickar förfrågningarna, lyssnare visar resultat och konfigurationselementen tillhandahåller standardvärden och data som dessa förfrågningar behöver.

  • 🔘 Trådgrupp: Varje tråd representerar en virtuell användare som kör applikationen som testas.
  • ☑️ Provtagare: Bestäm protokollet för begäran — FTP, HTTP, JDBC, SMTP med mera.
  • Lyssnare: Rendera resultat som ett diagram, ett träd, en tabell eller en loggfil.
  • 🧪 Konfigurationselement: Ange standardvärden och variabler som samplare återanvänder i ett helt test.
  • 🛠️ Datadrivna körningar: CSV-datauppsättningskonfigurationen matar olika inloggningsuppgifter till varje simulerad användare.
  • Moderna motsvarigheter: BSF-samplern har tagits bort; nuvarande utgåvors skript till och med JSR223 och Groovy.

JMeter Element: Trådgrupp, samplare, lyssnare och konfigurationselement

Vad är Element i JMeter?

De olika komponenterna i JMeter kallas element. Varje element är designat för ett specifikt syfte.

Bilden nedan ger några vanliga element i JMeter och visar hur de placeras under en trådgrupp.

JMeter elementhierarkidiagram med trådgrupp ovanför samplare, logikkontroller, lyssnare, konfigurationselement, assertioner, timers och processorer

Att studera alla komponenter på en gång är en inbjudan till förvirring och tristess. Här kommer vi att diskutera de komponenter du måste känna till innan du kan börja. testning in JMeter.

De återstående komponenterna kommer att diskuteras allt eftersom de används i kommande handledningar. Elementen som diskuteras i den här handledningen listas nedan.

Trådgrupp

En trådgrupp är en samling trådar. Varje tråd representerar en användare som använder den applikation som testas. I grund och botten simulerar varje tråd en verklig användarförfrågan till servern.

Kontrollerna för en trådgrupp låter dig ange antalet trådar för varje grupp.

Om du till exempel anger antalet trådar till 100, JMeter kommer att skapa och simulera 100 användarförfrågningar till servern som testas, vilket diagrammet nedan illustrerar.

Diagram över en JMeter Trådgrupp som simulerar användare 1 till användare 100, där var och en skickar en begäran till den applikation som testas

Panelen Trådgrupp har också en uppstartsperiod, vilket sprider starten av dessa trådar över tid istället för att starta alla användare samtidigt.

Provtagare

Som vi redan vet, JMeter stöder testning av HTTP, FTP, JDBC och många andra protokoll.

Vi vet också att trådgrupper simulerar användarförfrågningar till servern.

Men hur vet en trådgrupp vilken typ av förfrågan (HTTP, FTP och så vidare) den behöver göra?

Svaret är Sampler.

Användarförfrågan kan vara en FTP-förfrågan, en HTTP-förfrågan, en JDBC-förfrågan och så vidare. Figuren nedan listar de samplare som behandlas i den här handledningen.

Lista över träddiagram JMeter samplare: FTP-begäran, HTTP-begäran, JDBC-begäran, BSF-sampler, åtkomstloggsampler och SMTP-sampler

FTP-förfrågan

Låt oss föreställa oss att du vill prestandatesta en FTP-server. Du kan använda en FTP Request sampler i JMeter att göra denna uppgift. Denna styrenhet låter dig skicka en FTP-”nedladdningsfil”- eller ”uppladdningsfil”-förfrågan till en FTP-server.

Diagram visar JMeter skicka en FTP-förfrågan till en FTP-server för att ladda upp eller ladda ner en fil

Om du till exempel vill ladda ner filen "Test.txt" från en FTP-server som testas, måste du konfigurera några parametrar i JMeter som i figuren nedan.

FTP-förfrågningsprovpanel med ftp.example.com som server, port 21, Test.txt som fjärrfil och anonym inloggning

Panelen ställer in servern på ftp.example.com, port 21, fjärrfilen till Test.txt och get(RETR)-alternativet, så JMeter skickar ett FTP-kommando till den servern och laddar ner filen.

HTTP-begäran

Denna sampler låter dig skicka en HTTP/HTTPS-förfrågan till en webbserver.

Betrakta exemplet nedan. JMeter skickar en HTTP-förfrågan till Google webbplats och hämtar HTML-filer eller bilder från den.

Diagram över JMeter skickar en HTTP-förfrågan till Google Webbplatser och ta emot HTML och bilder i gengäld

I handledningen JMeter Prestandatester, kommer vi att förklara mer om denna HTTP-förfrågan. Det är den vanligaste samplaren testning av webbapplikationer arbetet bygger på.

JDBC-förfrågan

Den här samplern låter dig köra en databas prestandatester. Den skickar en JDBC-förfrågan (en SQL-fråga) till en databas.

Diagram över JMeter skicka en SQL-fråga till en databasserver och ta emot resultatet

Till exempel har en databasserver ett fält test_result lagrat i en tabell med namnet test_tbl. Du vill fråga dessa data från databasservern, så att du kan konfigurera JMeter att skicka ett SQL fråga till den här servern för att hämta data.

JDBC-förfrågningspanelen med frågetypen inställd på Välj sats och frågan väljer test_result från test_tbl där id = 1

Frågetypen här är Select-sats och frågan läser select test_result from test_tbl where id = 1Ett JDBC-anslutningskonfigurationselement måste ange den pool som fältet Variabelnamn pekar på.

BSF Sampler

Denna sampler låter dig skriva en sampler med hjälp av en BSF skriptspråk.

Här är ett exempel på en BSF-sampler i JMeter, med fält för skriptspråket, parametrarna som skickas till skriptet och antingen ett inline-skript eller en extern skriptfil.

BSF Sampler-panel med fält för skriptspråk, parametrar, en extern skriptfil och den inline-baserade skripttexten

Avskrivningsmeddelande: BSF-familjen av element föråldrades till förmån för JSR223-elementen och förekommer inte längre i JMeter komponentreferens. På aktuella utgåvor, använd JSR223 Sampler med Groovy, vilket kompilerar skriptet och presterar mycket bättre under belastning. Panelen ovan behålls här eftersom äldre testplaner fortfarande innehåller den.

Access Log Sampler

Det här exempelprogrammet låter dig läsa åtkomstloggar och generera HTTP-förfrågningar. Loggposterna kan vara bilder, HTML, CSS och så vidare.

Panelen Access Log Sampler visar standardserver- och portfält, TCLogParser-plugin-klassen och loggfilens plats

Parser-fältet har som standard inställningen org.apache.jmeter.protocol.http.util.accesslog.TCLogParseroch fältet Loggfilens platspunkter JMeter på den logg du vill spela upp.

SMTP-samplare

Om du vill testa en e-postserver kan du använda SMTP-samplern. Denna sampler används för att skicka e-postmeddelanden med SMTP-protokollet.

SMTP-provpanel med serverinställningar, e-postadresser, autentiserings- och säkerhetsalternativ samt meddelandeinställningar

Panelen grupperar serverinställningar, e-postadresser, autentiserings- och meddelandeinställningar och skriver ut standardportarna bredvid portfältet: SMTP 25, SSL 465 och StartTLS 587.

lyssnare

Lyssnare visar resultaten av testkörningen. De kan presentera resultaten i olika format, till exempel ett träd, en tabell, ett diagram eller en loggfil.

Diagram som visar en lyssnare som delar upp resultat i graf-, träd-, tabell- och rapportvyer

Ocuco-landskapet Graf resultat Lyssnaren visar serverns svarstider i ett diagram, med antalet sampel, medelvärdet, avvikelsen, dataflödet och medianen tryckt under.

Lyssnare för grafresultat som plottar svarstider med data, medelvärde, median, avvikelse och dataflödesserier

Visa resultatträd visar resultatet av varje användarförfrågan i enkelt HTML-format, med en flik för samplerresultat som rapporterar laddningstid, latens, storlek och svarskod.

Lyssnare för resultatträd med en förfrågningslista till vänster och fliken Sampler-resultat som visar svarskod 200

Visa resultat i tabell visar en sammanfattning av testresultatet i tabellformat, en rad per prov.

Visa resultat i tabelllyssnare med kolumner för samplingsnummer, starttid, trådnamn, etikett och samplingstid

En loggfil registrerar samma sammanfattning som text, vilket är vad du behåller när ett test körs utan det grafiska användargränssnittet.

Aggregerad loggsammanfattning som listar provtagarens etiketter med provantal, medelvärden och en TOTAL-rad

Bästa praxis: GUI-lyssnare förbrukar minne och förvränger resultaten, så kör riktiga belastningstester i icke-GUI-läge och öppna den sparade resultatfilen efteråt.

Konfigurationselement

Konfigurationselement konfigurerar standardvärden och variabler för senare användning av samplare.

Bilden nedan visar några vanliga konfigurationselement i JMeter.

Träddiagram av JMeter konfigurationselement: CSV-datauppsättningskonfiguration, HTTP-cookiehanterare, inloggningskonfigurationselement, standardinställningar för HTTP-förfrågningar och standardinställningar för FTP-förfrågningar

CSV Data Set Config

Anta att du vill testa en webbplats för 100 användare som loggar in med olika inloggningsuppgifter. Du behöver inte spela in skriptet 100 gånger. Du kan parametrisera skriptet för att ange olika inloggningsuppgifter. Denna inloggningsinformation (till exempel användarnamn och lösenord) kan lagras i en textfil. JMeter har ett element som låter dig läsa olika parametrar från den textfilen. Det är "CSV Data Set Config", som används för att läsa rader från en fil och dela upp dem i variabler.

JMeter testplanträd med CSV-datauppsättningskonfiguration vald under en inloggningskontroller tillsammans med HTTP-förfrågningsstandarder

Detta är ett exempel på CSV-data. Det är en textfil som innehåller användarnamn och lösenord som används för att logga in på din webbplats.

Textfilen csv_data.txt som innehåller fyra kommaseparerade rader med användarnamn, lösenord och cookielängd

HTTP Cookie Manager

Låt oss förstå detta med ett exempel.

Du använde din webbläsare (Firefox, Chrome och så vidare) för att bläddra www.google.com.

Du loggar in med ditt användarnamn och lösenord.

Ditt användarnamn och lösenord kommer att lagras på din dator som cookies.

Nästa gång, när du besöker www.google.com, behöver du inte logga in igen, eftersom din webbläsare använder dina cookies som användardata för att logga in.

HTTP Cookie Manager har samma funktion som en webbläsare. Om du har en HTTP-förfrågan och svaret innehåller en cookie, lagrar Cookie Manager automatiskt den cookien och använder den för alla framtida förfrågningar till den specifika webbplatsen.

Standardinställningar för HTTP-begäran

Detta element låter dig ställa in standardvärden som dina HTTP Request-kontrollanter använder.

Till exempel,

Du skickar 100 HTTP-förfrågningar till servern google.com.

Du skulle behöva ange servernamnet google.com manuellt för alla 100 förfrågningar.

Istället kan du lägga till ett enda HTTP Request Defaults-element med fältet "Servernamn eller IP" inställt på google.com, som visas nedan.

Panelen HTTP-förfrågningsstandarder med google.com som servernamn, port 80 och timeout för anslutning och svar

Du behöver inte skriva det 100 gånger. Detta element kommer att förklaras i detalj i handledningen. JMeter Prestandatester.

Login Config Element

Med elementet Inloggningskonfiguration kan du lägga till eller åsidosätta inställningar för användarnamn och lösenord i samplare.

Till exempel vill du simulera en användare som loggar in på webbplatsen www.facebook.com med ett användarnamn och lösenord. Du kan använda elementet Inloggningskonfiguration för att lägga till denna inställning för användarnamn och lösenord i en användarförfrågan.

Inloggningskonfigurationselementpanel med guru99 angivet som användarnamn och ett maskerat lösenordsfält

Elementet Login Config kontra CSV-datasetkonfigurationen

Login Config Element CSV Data Set Config
Används för att simulera en användarinloggning Används för att simulera flera användarinloggningar
Lämplig endast för inloggningsparametrar (användarnamn och lösenord) Lämplig för ett stort antal parametrar

Tillsammans täcker dessa två element nästan alla behörighetsscenarier du stöter på i verktyg för prestandatestning arbete.

Vanliga frågor

Det berättar JMeter hur lång tid det tar innan alla trådar körs. Tio trådar med en 100-sekunders upprampning börjar med tio sekunders mellanrum. En för kort upprampning översvämmar servern och producerar fel som ingen riktig användare någonsin skulle orsaka.

Timers infogar en paus mellan förfrågningar så att den simulerade belastningen liknar verklig surfning istället för en översvämning. Assertions kontrollerar varje svar och markerar ett exempel som misslyckad när statuskoden, texten eller varaktigheten inte matchar det du angav.

De grupperar och förgrenar förfrågningarna under sig. En Loop Controller upprepar sina underordnade, en If Controller kör dem villkorligt och en Transaction Controller rapporterar hela gruppen som ett tidsbestämt steg i resultaten.

Nej. Lyssnare som View Results Tree buffrar varje prov och förvränger de siffror de rapporterar. Kör testet i icke-GUI-läge, skriv resultaten till en fil och ladda sedan filen till en lyssnare när körningen är klar.

Konfigurationselement och förprocessorer tillämpas först, sedan samplaren körs, sedan efterprocessorer, assertioner och lyssnare. Omfattning spelar också roll: ett element placerat på plannivå gäller för varje begäran under den.

Det är användbart för mönsteridentifiering. Att mata en resultatfil till en assistent visar de långsammaste etiketterna, felklustren och svarstidstrenderna mycket snabbare än att läsa rader. Bekräfta alltid resultatet mot de råa exemplen innan du agerar.

Ja. Den utkastar Groovy till extracvärden, bygga nyttolaster och ställa in variabler i ett JSR223-element. Kontrollera alla förslag, eftersom det ofta använder det föråldrade BeanShell API:et eller variabler som JMeter exponerar inte.

En trådgrupp och en sampler. Allt annat är valfritt. I praktiken läggs en lyssnare till så att resultaten är synliga, och standardvärden eller en datafil läggs till när samma värden börjar upprepas över förfrågningar.

Sammanfatta detta inlägg med: