2013. szeptember 3., kedd

JMeter - JSF alkalmazások terheléses tesztelése 1.

Nemrég JSF-es web-alkalmazások tesztelésével és az eredmények dynaTrace-es kiértékelésével foglalkoztam a Raiffeisen Banknál, de a Szerencsejáték Zrt-nél, a Magyar Közút-nál valamint a ShiwaForce-nál is tartottam oktatásokat mind a JMeter használatáról mind pedig a teszteszközök (Selenium, JMeter, LoadRunner, JUnit) dynaTrace-es integrációjáról. Így következő bejegyzésekben erről a témáról és a dynaTrace tesztelési folyamatokba való illesztéséről fogok írni.

Még mielőtt nekikezdenénk a JSF alapú alkalmazások teszteléséhez érdemes megérteni a JSF működését, amihez az alábbi JSF életciklus ábra lesz a segítségünkre.


A JSF esetében alapvetően kétfajta kérés létezik, az initial és a postback. Az initial request (HTTP GET) hatására a szerver oldalon létrejön a kért oldalhoz tartozó komponensfa, melynek a csomópontjai az oldalon található elemek lesznek (UIForm, UIOutput, UIInput, stb...). Az initial kérések során csak a Restore View és az Render Response fázis fog lefutni, azaz felépül a komponensfa (+ eseménykezelők, validátorok, konverterek jóváhagyásra kerülnek, majd a view elmentésre kerül a FacesContext-be) ami alapján lerendelődik a HTML oldal. Postback kérések esetén tipikusan egy form mezői kerülnek átküldésre a szerver oldalra (HTTP POST), ahol létezik már az oldalhoz tartozó komponensfa, egy korábbi initial kérés következtében. Alapesetben a postback kérések elküldésekor mind a 6 JSF fázis lefut, ahol is a komponensfa aktualizálása mellett a megfelelő lépések után a managed bean-ekbe beíródnak az értékek.

A komponensfát legtöbbször a szerveroldali webes session-ban tároljuk és az ehhez tartozó azonosítót rejtett mezőként adjuk át az oldalon. Erre azért van szükség mert a HTTP protokoll állapotmentes és az azonosítás miatt a postback kérésekkel mindig továbbítani kell az initial kéréssel létrehozott komponensfa id-ját, ami általában így néz ki:

<input id="javax.faces.ViewState" name="javax.faces.ViewState" type="hidden" value="abcdefghijklmn123456" />

Miért is kell ezeket tudnunk a teszteléshez?

Azért, mert a rögzített tesztek HTTP kéréseinél, az elküldött javax.faces.ViewState paraméterek értéke már nem lesz érvényes a teszt futtatásakor, így azokat szkriptelve mindig aktualizálni kell. A következő cikkben pedig ennek a gyakorlati módját fogom megmutatni.

Nincsenek megjegyzések:

Megjegyzés küldése