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.

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ä:
- Esiprosessori
- 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.
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:
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ä.
- JMeter lähettää HTTP-pyynnön testattavalle verkkopalvelimelle www.google.com.
- JMeter saa vastauksen osoitteesta Google palvelin.
- Jos palvelimen vastaus on virhe, JMeter tulee pysäkki koe.
- Jos palvelimen vastaus OK (ei virhettä), JMeter tulee jatkaa koe.
Tässä on roadmap tästä esimerkistä:
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:
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.
Valitse Result Status Action Handle Pane -kohdasta Lopeta testi nyt. Tämä valinta keskeyttää testin, jos JMeter saada virhe palvelimen vastauksesta.
Vaihe 4) Määritä HTTP-pyyntö
Avaa HTTP-pyyntöpaneeli. Tulla sisään "abc" Polku-kenttään.
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
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ä.
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ä).
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.
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:
- Tarkista, muodostatko yhteyden Internetiin välityspalvelimen kautta. Jos kyllä, poista välityspalvelin.
- Avaa uusi Jmeterin esiintymä
- Avaa ProcessorTestPlan.jmx Jmeterissä
- Double-napsauta säieryhmä -> Näytä tulospuu
- 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.









.gif)

.gif)