Prosessori sisään JMeter: Esiprosessori ja jälkiprosessori

⚡ Älykäs yhteenveto

Prosessori sisään JMeter muokkaa Sampler-pyyntöjä ennen niiden suorittamista tai niiden jälkeen. PreProcessor valmistelee pyyntötiedot, kun taas PostProcessor extracts arvostaa ja ohjaa testikulkua, mahdollistaen korrelaation, dynaamisen parametrisoinnin ja luotettavan suorituskykytestaustoiminnan.

  • ⚙️ Ydinmääritelmä: Suoritin muokkaa Sampleria sen toiminta-alueen sisällä suorittamalla sen joko ennen pyyntöä tai vastauksen jälkeen.
  • 🔍 Esikäsittelijän rooli: Esiprosessorit asettavat muuttujat, kirjoittavat uudelleen URLs, jäsentää HTML-linkkejä ja käyttää käyttäjäparametreja ennen Sampler-toiminnon suorittamista.
  • 📤 Jälkikäsittelijän rooli: Jälkiprosessorit lukevat vastaukset, esim.tract dynaamiset arvot muuttujiksi ja päätä, jatketaanko suoritettavaa testiä.
  • 🧩 ExtracTorin valinta: Säännöllinen lauseke, raja, JSON, CSS/jQuery ja XPath, esim.trackukin vastaa erilaiseen vastausmuotoon.
  • 🛑 Virtauksen hallinta: Result Status Action Handler pysäyttää yhden säikeen tai koko testin, kun Sampler epäonnistuu.
  • 🧪 Sovellettu läpikäynti: Kuudessa vaiheessa rakennetaan suunnitelma, joka pysähtyy automaattisesti, kun virheellinen polku palauttaa palvelinvirheen.

Prosessori sisään JMeter

Suoritin Apache JMeter on testaussuunnitelman elementti, joka muokkaa sen soveltamisalaan kuuluvia Samplereita. Se suoritetaan automaattisesti joko juuri ennen pyynnön lähtöä JMeter tai heti vastauksen saapumisen jälkeen, mikä tekee siitä tärkeimmän mekanismin dynaamisen datan käsittelyyn suorituskyvyn testi.

Prosessoreita on 2 tyyppiä:

  1. Esiprosessori
  2. Jälkiprosessori

Laajuus määrittää, kuinka pitkälle prosessori ulottuu. Suoritin, joka on sijoitettu suoraan jonkin muun laajuuden alapuolelle. Testisuunnitelma Tai säieryhmä koskee kaikkia sen alapuolella olevia samplereita, kun taas yhden samplerin sisällä oleva prosessori vaikuttaa vain kyseiseen pyyntöön. Tämän säännön ymmärtäminen estää tällä sivulla vianmääritysosiossa käsitellyt määritysvirheet.

Esiprosessori

Esiprosessori suorittaa jonkin toiminnon ennen Näytteenottopyynnön tekeminen.

Harkitse yksinkertaista esimerkkiä: Oletetaan, että halusit JMeter "hämähäkki" testattavan verkkosivuston läpi, jäsentää linkki (tarkista kaikki linkit sivulla) ja palata HTML. Sinun tulisi lisätä ohjaimeen toimintoa, kuten "HTML-linkin jäsentäjä", ennen kuin luot HTTP-pyynnön.

Esiprosessori

Yllä oleva kaavio näyttää esiprosessorin, joka sijaitsee ohjaimen ja lähtevän pyynnön välissä. Koska se suoritetaan ensin, se on oikea paikka pyyntötietojen rakentamiseen: aikaleiman luominen, arvon lukeminen CSV-sarakkeesta, istuntotunnisteen uudelleenkirjoittaminen CSV-tiedostoon. URLtai määrittämällä eri tunnistetiedot kullekin virtuaalikäyttäjälle.

Jälkiprosessori

Jälkiprosessori suorittaa jonkin toiminnon näytteenottopyynnön jälkeen.

Harkitse yksinkertaista esimerkkiä: JMeter lähettää HTTP-pyynnön testattavalle verkkopalvelimelle (esim www.google.com) ja saat vastauksen. Haluat JMeter pysäyttääksesi testin, jos palvelimen vastaus on virhe. Voit käyttää jälkiprosessoria yllä olevan tehtävän suorittamiseen seuraavasti:

Jälkiprosessori

Kuten toinen kaavio havainnollistaa, jälkiprosessori lukee vastauksen Sampler-saneerauksen valmistuttua. Tämä on myös korrelaatioon liittyvä vakiovastaus. Kun palvelin palauttaa tunnuksen, istuntotunnuksen tai järjestysnumeron, joka muuttuu jokaisella ajolla, jälkiprosessori tallentaa kyseisen arvon JMeter muuttuja, jotta seuraava Sampler voi käyttää sitä uudelleen.

Esiprosessorien tyypit JMeter

Apache JMeter toimitetaan kompaktin PreProcessor-sarjan kanssa. Jokainen niistä valmistelee Sampler-yksikön eri tavalla, joten oikean elementin valitseminen pitää testisuunnitelman luettavana ja helposti ylläpidettävänä.

  • Näytteen aikakatkaisu: Määrittää pyynnön enimmäiskeston. Kaikki Sampler-toiminnot, jotka toimivat määritettyä arvoa pidempään, merkitään epäonnistuneiksi.
  • Käyttäjäparametrit: Määrittää muuttujille tietyt arvot virtuaalikäyttäjää kohden, joten jokainen säie lähettää oman datajoukkonsa.
  • HTML-linkkien jäsennin: Sivun indeksointi hakurobotilla, jäsentää löytämänsä linkit ja syöttää ne seuraavaan HTTP-pyyntöön.
  • HTTP URL Muokkaaja uudelleen: Lisää istuntotunnisteen URL sovelluksille, jotka track istuntoa ilman evästeitä.
  • RegEx-käyttäjän parametrit: Täyttää pyyntöparametrit käyttämällä aiemmasta vastauksesta säännöllisen lausekkeen kaappaamia arvoja.
  • JDBC-esiprosessori: Suorittaa SQL-lausekkeen ennen Sampleria, mikä on hyödyllinen tietokannan tietueiden siementämiseen tai nollaamiseen.
  • JSR223-esiprosessori: Suorittaa a:n Groovy or Java skripti mille tahansa mukautetulle valmistelulogiikalle. Se korvaa vanhemman BeanShell PreProcessorin ja toimii huomattavasti paremmin kuormituksen alla.

💡 Vinkki: Suosi JSR223-esiprosessoria, jossa on Groovy kieli BeanShellin yli. Groovy Skriptit käännetään ja tallennetaan välimuistiin, joten ne kuluttavat paljon vähemmän prosessoritehoa, kun tuhansia säikeitä suoritetaan rinnakkain.

PostProcessoreiden tyypit JMeter

Postprosessorit jaetaan kahteen ryhmään: esim.tracfunktiot, jotka hakevat arvoja vastauksesta, ja käsittelijät, jotka reagoivat Sampler-funktion tulokseen. Alla oleva taulukko yhdistää jokaisen elementin sille parhaiten sopivaan vastausmuotoon.

Jälkiprosessori Sopii parhaiten Tyypillinen käyttö
Säännöllinen lauseke Esim.tracTor Mikä tahansa tekstiviestivastaus Tunnusten tai tunnisteiden sieppaaminen HTML- ja pelkkätekstistä
Raja ExtracTor Mikä tahansa tekstiviestivastaus Arvon sieppaaminen käyttämällä vasenta ja oikeaa reunaa täyden säännöllisen lausekkeen sijaan
JSON-esimerkkitracTor JSON-vastaukset REST-hyötykuormien kenttien lukeminen aikana API-testaus
CSS/jQuery-esimerkkitracTor HTML-vastaukset Elementin valitseminen CSS-valitsimella
XPath-esimerkkitracTor XML- ja XHTML-vastaukset Rakenteisen dokumenttipuun navigointi
JDBC-jälkiprosessori Tietokannan tulokset Rivien tarkistaminen tai siivoaminen pyynnön jälkeen
JSR223-postprosessori Mikä tahansa vastaus Mukautettu skriptattu jäsennys ja väitteet
Tuloksen tila Toimintokäsittelijä Mikä tahansa vastaus stopping säie tai koko testi, kun Sampler epäonnistuu

The Boundary Extractor saapui sisään JMeter 4.0 ja se on usein nopein vaihtoehto kirjoittaa, koska se kysyy vain arvon välittömästi vasemmalta ja oikealta puolelta tulevaa tekstiä. Säännöllinen lauseke-esimerkkitractor on edelleen joustavampi vaihtoehto, kun ympäröivä merkintätapa vaihtelee vastausten välillä.

Ero esiprosessorin ja jälkiprosessorin välillä

Molemmilla elementeillä on samat laajuussäännöt, mutta ne ratkaisevat vastakkaisia ​​ongelmia. Alla oleva vertailu tiivistää eron ennen käytännön esimerkkiä.

Parametri Esiprosessori Jälkiprosessori
Toteutusaika Suoritetaan ennen kuin Sampler lähettää pyyntönsä Suoritetaan sen jälkeen, kun Sampler vastaanottaa vastauksensa
Päätarkoitus Valmistelee ja muokkaa pyyntötietoja Lukee vastausdataa ja reagoi siihen
Tyypilliset elementit Käyttäjäparametrit, HTML-linkkien jäsennin, JSR223-esiprosessori Säännöllinen lauseke Esim.tractor, JSON-esimerkkitractor, tulostilan toimintojen käsittelijä
Vaikutus virtaukseen Ei voi pysäyttää testiä, vain muokkaa pyyntöä Voi pysäyttää säikeen tai koko testiajon
Yhteinen päämäärä Parametrisointi Korrelaatio ja virheiden käsittely

Käytännössä nämä kaksi toimivat parina. PostProcessor kaappaa istuntotunnuksen kirjautumisvastauksesta, ja PreProcessor seuraavan pyynnön yhteydessä lisää kyseisen tunnuksen ennen kutsun lähettämistä. Seuraava esimerkki havainnollistaa PostProcessor-puolta tästä mallista.

Esimerkki jälkiprosessorista

Tämä opetusohjelma näyttää vaiheittaiset ohjeet jälkikäsittelyohjelman käyttöön JMeter. Aloitetaan yksinkertaisella testiskriptillä.

  1. JMeter lähettää HTTP-pyynnön testattavalle verkkopalvelimelle www.google.com.
  2. JMeter saa vastauksen osoitteesta Google palvelin.
  3. Jos palvelimen vastaus on virhe, JMeter tulee pysäkki koe.
  4. Jos palvelimen vastaus OK (ei virhettä), JMeter tulee jatkaa koe.

Tässä on roadmap tästä esimerkistä:

Esimerkki jälkiprosessorista

Edellytys:

We uudelleenkäyttö artikkelin vaihe 1 ja vaihe 2 JMeter Suorituskykytestaus. Jos JMeter ei ole vielä asennettu, noudata JMeter Asennusohje ensimmäinen.

Vaihe 1) Lisää säieryhmä

Oikealla klikkaa Testisuunnitelma ja lisää uusi viestiketju: Lisää -> Säikeet (käyttäjät) -> Viestiryhmä

Mutta kirjoita säieryhmän ohjauspaneeliin säikeen ominaisuudet seuraavasti:

Lisää ketjuryhmä

Tämä asetus mahdollistaa JMeter luoda 10 käyttäjän pyynnöstä http://www.google.com 10 kertaa.

Vaihe 2) Lisää JMeter elementtejä

  • Lisää HTTP-pyyntö oletuksena
  • Lisää HTTP-pyyntö

Teemme edelleen JMeter Lähetä pyyntö http://www.google.com että Google palvelin.

Vaihe 3) Lisää jälkikäsittelyelementti

Klikkaa hiiren oikealla Viestiryhmä -> Lisää -> Postiprosessori -> Tuloksen tila Toimintokäsittelijä

Tuloksen tila Toimintokäsittelijä sallii käyttäjän pysäyttää säikeen tai koko testin, jos käyttäjän pyyntö epäonnistui.

Lisää jälkikäsittelyelementti

Valitse Result Status Action Handle Pane -kohdasta Lopeta testi nyt. Tämä valinta keskeyttää testin, jos JMeter saada virhe palvelimen vastauksesta.

Lisää jälkikäsittelyelementti

Vaihe 4) Määritä HTTP-pyyntö

Avaa HTTP-pyyntöpaneeli. Tulla sisään "abc" Polku-kenttään.

Määritä HTTP-pyyntö

Kun kirjoitat "abc" polulle, JMeter luo URL pyyntö Google palvelin: http://www.google.com/abc. Tämä URL ei ole olemassa Google palvelin. Se on vääryyksiä URL pyyntö niin Google palvelin palauttaa virheen.

Vaihe 5) Lisää näkymän tulospuu

Klikkaa hiiren oikealla Viestiryhmä -> Lisää -> kuuntelija -> Näytä tulospuu

Lisää näkymän tulospuu

Vaihe 6) Suorita testi

Valitse Näytä tulospuu ja paina valikkopalkin Suorita-painiketta. Tulet näkemään virhe vastaus käyttäjältä Google palvelin ja testi pysähtyy ilman täydentää 100 säiettä.

Suorita testi

Palaa nyt vaiheeseen 4, avaa HTTP-pyyntöruutu ja kirjoita "kalenteri" ruutuun. Se tekee JMeter luoda URL pyyntö https://calendar.google.com/calendar/u/0/r että Google palvelin. Tämä on korjata URL pyyntö niin Google palvelin palauttaa OK (ei virhettä).

Suorita testi

Valitse Näytä tulospuu ja paina valikkopalkin Suorita-painiketta. Tulet näkemään OK vastaus käyttäjältä Google palvelimelle ja testi jatkuu, kunnes kaikki 100 säiettä ovat valmiita.

Suorita testi

Lisäämällä väite Result Status Action Handler -toiminnon käsittelijän rinnalla tarkistus on tiukempi, koska väite voi epäonnistua Samplerissa, joka palautti HTTP 200 -koodin, mutta toimitti väärän sisällön.

Ongelmien karttoittaminen

Jos kohtaat ongelman suorittaessasi yllä olevaa skenaariota… toimi seuraavasti:

  1. Tarkista, muodostatko yhteyden Internetiin välityspalvelimen kautta. Jos kyllä, poista välityspalvelin.
  2. Avaa uusi Jmeterin esiintymä
  3. Avaa ProcessorTestPlan.jmx Jmeterissä
  4. Double-napsauta säieryhmä -> Näytä tulospuu
  5. Suorita testi

Jos jälkiprosessori ei näytä tekevän mitään, tarkista ensin sen sijainti. Kohderyhmänä olevan Sampler-ohjelman ulkopuolelle sijoitettu jälkiprosessori ei koskaan toimi, mikä on yleisin yksittäinen syy tyhjään ex-tiedostoon.tracted-muuttuja. Liittyvät elementit, kuten ohjaimet ja hajautettu testaus noudattavat samaa laajuuslogiikkaa.

UKK

Esiprosessori (PreProcessor) muuttaa pyynnön sisältöä ennen sen lähettämistä. Ajastin (Timer) vain pysäyttää säikeen määritetyksi ajaksi. Molemmat suoritetaan ennen Sampleria, mutta ajastin ei koskaan muokkaa pyynnön tietoja.

Entinentractor tallentaa arvon JMeter muuttujan nimi, jonka määrittelet. Kaikki myöhemmät saman säikeen Sampler-käskyt viittaavat siihen ${variableName}-syntaksilla polussa, otsikossa tai pyynnön rungossa.

Kyllä. Useat tekoälyavustajat lukevat nyt tallennetun vastauksen ja ehdottavat korrelaatiota varten säännöllistä lauseketta tai rajaparia. Ehdotusta on vielä tarkistettava, koska tekoäly ei voi tietää, mitkä arvot ovat aidosti dynaamisia.

Kyllä. Tekoälyavustajat vertaavat raakaa vastausta entiseen.tractor-lauseke ja osoita esca-kielen epäsuhtaumatping, groupingtai laajuus. Tarkista korjaus View Results Tree -näkymässä ennen kuin luotat siihen latausajossa.

Suorittimet suoritetaan kerran jokaista Sampler-suoritusta kohden niiden laajuudessa. Kymmenen säikeen avullaping viisi kertaa, kyseiseen Sampleriin liitetty prosessori suorittaa sen viisikymmentä kertaa, ja jokainen säie säilyttää omat muuttuja-arvonsa.

Tiivistä tämä viesti seuraavasti: