JMeter voi luoda HTTP-pyyntönäytteitä toimimalla paikallisena tallennusvälityspalvelimena selaimen ja valtuutetun kohdesovelluksen välillä. Nykyiset versiot kutsuvat tätä komponenttia HTTP(S)-testiskriptien tallentimeksi . Se tallentaa yhden selainmatkan tallennusohjaimeen, minkä jälkeen skripti on puhdistettava, korreloitava, validoitava ja suoritettava protokollatason testinä.
Mikä on JMeter HTTP -välityspalvelin?
Tallennin kuuntelee paikallista porttia, yleensä 8888Selain lähettää HTTP- ja HTTPS-pyyntöjä kyseiselle välityspalvelimelle, ja JMeter muuntaa vastaavan liikenteen valitun ohjaimen näytteiksi. Toiston aikana JMeter lähettää pyynnöt suoraan; se ei käynnistä selainta jokaista virtuaalista käyttäjää varten.
Miksi äänittää sen sijaan, että rakentaisi käsikirjoituksen käsin?
- Tallentaa realistisen pyyntöjärjestyksen, uudelleenohjaukset, lomakkeet ja taustalla olevat API:t.
- Paljastaa XHR- tai noutopuhelut, jotka on helppo jättää huomiotta.
- Luo nopean perustason monimutkaiselle käyttäjäpolulle.
- Vähentää otsikoiden ja parametrien transkriptiovirheitä.
Manuaalinen rakentaminen pysyy selkeämpänä pienelle dokumentoidulle API:lle. Tallentaminen auttaa, kun selaimen verkon toimintaa ei vielä ymmärretä. Katso terminologiaa välityspalvelintyyppien oppaastamme.
Skriptin tallentaminen JMeter 5.x:ssä
- Käynnistä JMeter graafisessa käyttöliittymätilassa skriptien luomista varten.
- Lisää säikeiden ryhmä testisuunnitelmaan.
- Lisää tallennusohjain säieryhmän alle.
- Lisää HTTP-pyyntöjen oletusasetukset ja HTTP-evästehallinta tarvittaessa.
- Lisää HTTP(S)-testiskriptien tallennin ja valitse tallennusohjain sen kohteeksi.
- Käytä sisällytä/poissulje-malleja rajoittaaksesi epäolennaista liikennettä.
Virallinen Apache JMeter -tallennusopas on arvovaltainen versiokohtainen lähde.
Vaihe 1) HTTP-välityspalvelimen asettaminen
8888, aseta kohdeohjain ja napsauta Aloita.Määritä testiselaimessa HTTP- ja HTTPS-välityspalvelin 127.0.0.1 ja sama portti. Jos selain toimii toisessa virtuaalikoneessa tai säilössä, localhost viittaa kyseiseen ympäristöön; käytä sen sijaan hyväksyttyä, saavutettavaa yksityistä osoitetta.
Proxy host: 127.0.0.1
Proxy port: 8888
Include: https?://test.example.com/.*
Exclude: .*(.png|.jpg|.gif|.css|.woff2)(?.*)?$
Älä suodata liian aggressiivisesti ensimmäisellä kerralla, koska sovellus-API saattaa käyttää toista aliverkkotunnusta. Tallenna kerran, tarkista isännät ja tarkenna sitten kuvioita.
Vaihe 2) Tallenna toimintasi
- Käynnistä tallennin ja luota sen väliaikaiseen varmenteeseen vain eristetyssä testiselaimessa.
- Avaa valtuutettu testiympäristö.
- Suorita yksi puhdas matka ihmisen nopeudella.
- Lopeta tallennus heti viimeisen liiketoimintatoimenpiteen jälkeen.
- Palauta selaimen normaali välityspalvelinasetus.
Nimeä näytteenottajat uudelleen liiketoimintatoimintojen ja ryhmiin liittyvien pyyntöjen mukaan tapahtumaohjainten alla. Poista analytiikka, mainokset, selainpäivitykset, chat-widgetit ja päällekkäiset staattiset resurssit, elleivät ne kuulu nimenomaisesti laajuuteen.
Tarkista jokainen näytteenottajan salaisuudet. Salasanojen tulisi olla peräisin suojatusta ajonaikaisesta datasta, kun taas tokeneiden muuttaminen vaatii korrelaatiota.
Vaihe 3) Suorita testisuunnitelmasi
Vahvista yksi käyttäjä ja yksi iteraatio ennen latauksen lisäämistä. Käytä väliaikaisesti Näytä tulospuu -toimintoa, tarkista uudelleenohjaukset ja vastausten rungot ja lisää odotetun liiketoimintatuloksen väitteitä. Pelkkä HTTP 200 ei todista sisäänkirjautumisen tai uloskirjautumisen onnistumista.
Threads: 1
Ramp-up: 1 second
Loop Count: 1
Virheenjäljityksen jälkeen poista raskaat kuuntelijat ja suorita ei-käyttöliittymä:
jmeter -n -t recorded-test.jmx -l results.jtl -e -o html-report
Raporttihakemiston on oltava uusi tai tyhjä. Lisää kuormitusta vähitellen ja seuraa kohdejärjestelmää sekä JMeteriä.
Vaihe 4) Tallenna testitulos
Tallenna uudelleenkäytettävä suunnitelma nimellä .jmx tiedosto ja pidä luodut tiedot erillään:
- JMX: näytteenottajat, ohjaimet, väitteet, ajastimet, muuttujat ja konfigurointi.
- JTL: raakanäytteen tulokset analyysia varten.
- HTML-kojelauta: persentiilit, läpimenoaika, virheet ja aktiiviset säikeet.
- Palvelimen mittarit: Suorittimen, muistin, tietokannan, jonon ja palvelun telemetria.
Versioi suunnitelma käyttämällä ei-salaisia ominaisuuksia ja testidataa. Kirjaa ylös JMeter- ja Java-versiot, kohdekoonti, ympäristö, käyttäjämäärä, käyttöönotto ja kesto.
HTTPS-liikenteen ja varmenteiden tallentaminen
HTTPS-protokollan osalta JMeter luo väliaikaisen varmenteen myöntäjän tallentimen käynnistyessä. Tuo se vain erilliseen testiselaimeen, tallenna valtuutettu sivusto ja poista se sitten.
- Käynnistä HTTP(S)-testiskriptien tallennin.
- Etsi luotu ApacheJMeterTemporaryRootCA-varmenne.
- Tuo se luotettavana viranomaisena eristettyyn profiiliin.
- Kirjaa hyväksytty HTTPS-yhteyspolku.
- Poista sertifikaatti, kun olet valmis.
Varmenteiden kiinnittäminen, keskinäinen TLS, hallitut selaimet, mobiilisovellukset ja uudemmat siirtoprotokollat voivat estää sieppauksen. Älä heikennä tuotantoympäristön suojauskontrolleja. Käytä testausversiota, API-spesifikaatiota tai hyväksyttyä vaihtoehtoista sieppausmenetelmää.
Korrelaatio: Tallennetun käsikirjoituksen tekeminen toistettavaksi
Istuntotunnukset, CSRF-tunnukset, OAuth-tila, pyyntöjen allekirjoitukset ja resurssien tunnukset muuttuvat suoritusten välillä. Korrelaatio poimii uuden arvon yhdestä vastauksesta ja korvaa sen myöhemmissä pyynnöissä.
- Etsi vastaus, joka sisältää ensimmäisenä dynaamisen arvon.
- Lisää JSON-, CSS-, XPath- tai säännöllisten lausekkeiden poimija.
- Tallenna tulos nimettyyn JMeter-muuttujaan.
- Korvaa myöhemmin kovakoodatut arvot muuttujaviittauksella.
- Hylkää selvästi, kun uutto ei palauta osumaa.
JSON Extractor
Variable: csrfToken
JSON Path: $.csrf.token
Default: NOT_FOUND
Later header:
X-CSRF-Token: ${csrfToken}
Parametrisointi tuottaa itsenäistä käyttäjädataa, usein CSV-tiedostosta. Korrelaatio tallentaa palvelimen luomaa dataa suorituksen aikana. Realistisissa suunnitelmissa tarvitaan yleensä molempia.
Ongelmien karttoittaminen
| Ongelma | Todennäköinen syy | Korjata |
|---|---|---|
| Ei tallennettuja pyyntöjä | Väärä välityspalvelin, pysäytetty tallennin, porttiristiriita tai ohitussääntö | Vahvista isäntä ja portti, käynnistä tallennin ja poista kohteiden poikkeukset. |
| HTTPS-varoitus | Väliaikainen CA puuttuu tai on vanhentunut | Luo uusi tallentimen varmenne ja tuo se vain testiprofiiliin. |
| Liikaa liikennettä | Laajennukset, telemetria, muut välilehdet tai yleiset mallit | Käytä puhdasta profiilia ja tarkenna sisällytä/poissulje-suodattimia. |
| Kirjautumisen toisto epäonnistui | Puuttuvat evästeet, tunnukset, OAuth-työnkulku tai korrelaatio | Lisää evästeiden hallinta, poimi dynaamiset arvot ja tarkista uudelleenohjaukset. |
| Selaimen offline-tila sen jälkeen | Se viittaa edelleen pysäytettyyn paikalliseen välityspalvelimeen | Palauta automaattiset tai ei-välityspalvelinasetukset. |
| JMeter-muistivirhe | GUI-kuuntelijat tai suuri vastaustallennustila | Käytä ei-graafista tilaa ja rajoita tallennettujen vastaustietojen määrää. |
| Eri kuin selaimessa | JMeter ei renderöi tai suorita sivun JavaScriptiä | Testaa pohjana olevia API-rajapintoja ja käytä selaintyökaluja renderöintimetriikkojen mittaamiseen. |
JMeter on protokollan suorituskykyä mittaava työkalu. Se ei pysty mittaamaan visuaalisia tapahtumia, kuten suurinta sisällönkuvausta (Suurimman sisällön maalauksen) yksinään.
UKK
Mikä korvasi HTTP-välityspalvelimen nimen JMeterissä?
Komponentin nimi on nyt HTTP(S)-testiskriptien tallennin.
Mitä tallentimen porttia minun pitäisi käyttää?
Mikä tahansa käyttämätön paikallinen portti toimii. Portti 8888 on yleinen, ja selaimen on käytettävä samaa arvoa.
Voiko JMeter tallentaa HTTPS-liikennettä?
Kyllä, kun erillinen testiselain luottaa JMeterin väliaikaiseen tallennusvarmenteeseen.
Miksi tallennettu käsikirjoitus epäonnistuu toistossa?
Dynaamiset tunnukset, evästeet, todennusvirrat, isäntäerot ja puuttuvat tiedot vaativat yleensä korrelaatiota ja parametrisointia.
Voiko JMeter tallentaa Chromea?
Kyllä. Määritä puhdas Chrome-profiili käyttämään JMeterin paikallista tallenninta.
Pitäisikö minun ajaa kuormitustestejä JMeter-käyttöliittymästä?
Ei. Käännä ja debugtaa graafisessa käyttöliittymätilassa ja suorita sitten lataus ei-graafisessa tilassa.
Käyttäytyykö JMeter kuin oikea selain?
Ei. Se lähettää protokollapyyntöjä, mutta ei renderöi HTML:ää tai suorita selaimen JavaScriptiä.
Onko tuotantokäyttöön kirjautumisen tallentaminen turvallista?
Suosittelemme testi- ja koetilejä. Tuotantoympäristön tiedonkeruu vaatii nimenomaisen valtuutuksen ja tiukan salassapidon.
