Apache JMeter
Apache JMeter-parametrering
Sök…
Introduktion
Parameterisering är skapandet av olika datamängder för olika användare i samma testskript. Till exempel att köra flera användare med olika referenser i samma skript. Detta gör det till en av de viktigaste aspekterna i skapandet av prestandatest.
Parameterisering med externa filer
Ett av de vanliga sätten att parametrera dina prestationsskript är att använda en CSV-fil. Det bästa exemplet på användning av CSV-inputfiler är en inloggningsprocess. Om du vill testa din ansökan över olika användare måste du ange en lista med användaruppgifter.
Låt oss anta att vi har en inloggningsbegäran som fungerar för en specifik användare:
Vi kan enkelt parametrisera den begäran genom att använda en extern CSV-fil och köra skriptet för olika användare. Så här lägger du till CSV-parametriseringskonfiguration:
Högerklicka på inloggningsförfrågan -> Lägg till -> Config Element -> CSV Data Set Config
En kort förklaring av parametrarna för "CSV Data Set Config":
- Namn - elementnamn som det kommer att användas i JMeter-trädet
- Filnamn - namn på inmatningsfilen. Relativa filnamn löses baserat på sökvägen för den aktiva testplanen. Absoluta filnamn stöds också
- File Encoding - kodning av inmatningsfil, om det inte är plattformens standard
- Variabla namn - lista över separerade variabelnamn som kommer att användas som behållare för parsade värden. Om den är tom kommer den första raden i filen att tolkas som en lista med variabla namn
- Avgränsare - avgränsare som kommer att användas för att dela upp de parsade värdena från inmatningsfilen
- Tillåt citerade data? - sant om du vill ignorera dubbla citat och låta sådana element innehålla en avgränsare.
- Återvinna på EOF? - sant om filtestplanen ska iterera över filen mer än en gång. Det instruerar JMeter att flytta markören i början av filen
- Stoppa tråden på EOF? - falsk vid loop-iteration över CDC-filen och sann om du vill stoppa tråden efter att ha läst hela filen
- Delningsläge:
- Alla trådar - filen delas mellan alla virtuella användare (standard)
- Aktuell trådgrupp - filen öppnas en gång för varje trådgrupp
- Aktuell tråd - varje fil öppnas separat för varje tråd
- Identifierare - alla trådar som delar samma identifierare delar också samma fil
Låt oss skapa en csv-fil som innehåller olika användare med namn och lösenord:
Vi kan nu använda den här filen med CSV Data Set-konfigurationen. I vårt fall räcker det att lägga till konfigurationsvärdena "Filnamn" och "Variablenamn":
Det sista steget vi måste ta är att parametrera inloggningsbegäran med CSV-variabler. Detta kan göras genom att ersätta de initiala värdena med lämpliga variabler i konfigurationsfältet "Variabla namn" i CSV Data Set Config, så här: Om vi kör vårt testskript nu kommer JMeter att ersätta dessa variabler med värden från filen 'TestUsers.csv'. Varje JMeter virtuell användare kommer att få referenser från följande csv-filrad.
Inloggningsbegäran från den första användaren:
Inloggningsbegäran från den andra användaren:
Parameterisering med databaser
Ett annat sätt att parametrera dina prestationsskript är att använda databasdata genom JDBC. JDBC är ett applikationsprogrammeringsgränssnitt som definierar hur en klient kan komma åt en databas.
Ladda ner först JDBC-drivrutinen till din databas (se databasleverantören). Till exempel kan mysql-drivrutin hittas här. Sedan kan du lägga till den genom att lägga till .jar-filen i testplanen genom att använda formuläret nedan:
Men det är bättre att lägga till Jar-filen i lib-mappen och starta om JMeter.
Konfigurera sedan databasanslutningen med elementet 'JDBC Connection Configuration'. Så här: Högerklicka på trådgrupp -> Lägg till -> Config Element -> JDBC Connection Configuration
Parametrar för 'JDBC Connection Configuration':
- Namn - namn på anslutningskonfigurationen som kommer att visas i trådgruppträdet
- Variabel Namn - namn som kommer att användas som unik identifierare för db-anslutningen (flera anslutningar kan användas och var och en kommer att knytas till ett annat namn)
- Max antal anslutningar - maximalt antal anslutningar tillåtna i anslutningspoolen. Vid 0 kommer varje tråd att få sin egen pool med en enda anslutning i den
- Max Wait (ms) - pool kastar ett fel om den angivna tidsgränsen överskrids under db-anslutning
- Time Between Eviction Runs (ms) - antal millisekunder för att pausa mellan körningar av tråden som avvisar oanvända anslutningar från db-poolen
- Auto Commit - ja för att aktivera auto commit för relaterade db-anslutningar
- Test medan tomgång - kontrollera lediga anslutningar innan en effektiv begäran upptäcks. Mer information: BasicDataSource.html # getTestWhileIdle
- Soft Min Evictable Idle Time (ms) - tidsperiod under vilken en specificerad anslutning kan vara ledig i db-poolen innan den kan kastas ut. Mer information: BasicDataSource.html # getSoftMinEvictableIdleTimeMillis
- Valideringsfråga - hälsokontrollfråga som kommer att användas för att verifiera om databasen fortfarande svarar
- Databas-URL - JDBC-anslutningssträng för databasen. Se här för exempel
- JDBC Driver class - lämpligt namn på förarklass (specifikt för varje db). Till exempel 'com.mysql.jdbc.Driver' för MySql db
- Användarnamn - databasnamn
- Lösenord - databaslösenord (lagras okrypterat i testplanen)
I vårt fall måste vi bara ställa in de obligatoriska fälten:
- Variabelt namn bundet till pool.
- Databas URL
- JDBC förarklass
- Användarnamn
- Lösenord
Resten av fälten på skärmen kan lämnas som standard:
Låt oss anta att vi lagrar testanvändaruppgifter i databasen:
När databasanslutningen nu är konfigurerad kan vi lägga till JDBC-begäran själv och använda sin fråga för att hämta alla referenser från databasen: Högerklicka på Thread Group -> Add -> Sample -> JDBC Request
Genom att använda frågan "Välj uttalande" och "Variabla namn" kan vi analysera svaret på anpassade variabler.
Vi kommer nu att ha JMeter-variabler som kan användas vidare i efterföljande förfrågningar. Specificerade variabler skapas med stegvis suffix (e-post_1, e-post_2, e-post_3… ..).
För att använda dessa variabler i 'Inloggningsbegäran' måste vi lägga till en räknare som kommer att användas för att få åtkomst till rätt värden från JDBC-frågesvaret. Så här lägger du till "Räknare" -elementet i JMeter: Högerklicka på Trådgruppen -> Lägg till -> Konfigureringselement -> Räknare
Efter det kan vi uppdatera 'Login-begäran' med funktionen __V. Detta ger resultatet av utvärderingen av ett uttryck för variabelnamn och kan användas för att utvärdera kapslade variabelreferenser:
Den angivna konfigurationen räcker för att använda databasvärden för att köra skriptet mellan olika användare:
Parameterisering med plugin 'Parameterized Controller'
Om du behöver utföra en upprepande sekvens med samma åtgärd med olika parametrar, använd "Parameterized Controller" -programmet från JMeter-Plugins- projektet.
Du måste installera detta plugin först genom att följa installationsproceduren.
Låt oss anta att vi vill parameterisera inloggningsflödet:
Först och främst måste du installera pluginprogrammet "Parameterized Controller" eftersom det inte ingår i JMeter-kärnan. Installationssteg för den processen kan hittas här.
Låt oss flytta 'Login Request' till en separat controller och inaktivera den (högerklicka på den och välj "Disable"). Detta är det mest föredragna sättet att ha en modulcontainer i din testplan och undvika att använda Workbench som en sådan container. Efter installationen kan du lägga till två "Parameterized Controller" -kontroller med olika användaruppgifter: Högerklicka på Thread Group -> Add -> Logic Controller -> Parameterized Controller
Parameteriserade kontroller innehåller avsnittet "Användardefinierade variabler", där du kan ange dina parametrar. Sätt referenser för den första användaren i den första parametriserade styrenheten och de andra användaruppgifterna i den andra parametrerade styrenheten.
Inuti båda parametrerade styrenheter lägg till referenser till 'Återanvändbar styrenhet' för att ringa 'inloggningsbegäran' med olika parametrar. Det kan göras på detta sätt:
Högerklicka på 'Parameterized Controller' -> 'Add' -> 'Logic Controller' -> 'Module Controller'
När du kör ditt skript ser du att "Login-begäran" utlöste var och en av de parametrerade kontrollerna separat. Det kan vara mycket användbart om du behöver köra ditt skript över olika kombinationer av inmatningsparametrar.