Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel Ercsényi Gábor fejlesztőmérnök 1 2004-05-04
Bevezetés Nem megy a bót! 2
Webes szolgáltatások nagy mennyiségű generált oldal igény a folyamatos elérhetőségre igény a hibamentes működésre 3
Klasszikus megoldások Manuális tesztelés: igen költséges nem hatékony nagy hibázási arány esetenként megoldhatatlan Fél-automatikus tesztelés: tartalom tesztelés nem megoldott session-alapú tesztelés nem megoldott 4
5 A megvalósított rendszer: WebAlert
A megvalósított rendszer: WebAlert elérhetőség ellenőrzése az adott címről letölthető az erőforrás az adott címen nincs elérhető erőforrás tartalom ellenőrzése tartalmilag kielégítő [pl.: welcome szöveg megtalálható] tartalmilag hibás [pl.: error hibasztring van az oldalon] HTML fa-struktúra elemzése 6 alternatív használat: terhelés-tesztelés optimalizálva: szerver oldali Java alapú alkalmazások által generált HTML lapokra
Hibatípusok a keresett erőforrás nem érhető el kiszolgáló oldali hiba kliens oldali hiba átirányítás [opcionális] a keresett erőforrás tartalmilag hibás nem várt tartalom [hiányos vagy üres tartalom] hiba-sztring a tartalomban [nem feltétlenül hibás programkód] 7
Java-alapú alkalmazás-szerverek tesztelése egyedi kivételek (exception) definiálása Java kivétel-üzenetek az oldal részei errorpage direktíva: szerkeszthető hibaoldal 8
Java-alapú alkalmazás-szerverek tesztelése errorpage.jsp <%@ page iserrorpage="true" %> <body> <%="<!--"%> <% ByteArrayOutputStream ostr = new ByteArrayOutputStream(); exception.printstacktrace(new PrintStream(ostr)); out.print(ostr); %> <%="-->"%> </body> 9
Java-alapú alkalmazás-szerverek tesztelése generált hibaoldal <body> <!-- com.dummy_shop.beans.dummyshopexception: Exception: No such product exists! at com.dummy_shop.helpers.checkpricehelper.checkrequest(checkpricehelper.java:61) at en.buynow_4._jspservice(buynow_4.java:154) at org.apache.tomcat.util.net.tcpworkerthread.runit(pooltcpendpoint.java:494) at org.apache.tomcat.util.threads.threadpool$controlrunnable.run(threadpool.java:516) at java.lang.thread.run(thread.java:534) --> </body> 10
11 A rendszer funkcionális modellje
12 Példa konfigurációs XML
Bemeneti paraméterek röviden általános [fájlnevek, emailcímek, egyéb] kívánt elemek nem kívánt elemek helyettesítési szabályok sessionök URL-ek 13
A jelentés XML-alapú XSLT-vel tetszőleges kialakítás további feldolgozhatóság egyszerű szöveg alapú áttekinthető email-jelentés 14
15 Példa jelentés XML-részlet
Példa jelentés email Status: PASSED Start URL: http://shop.dummy.com/shop_disc/en/category.jsp?position=b Stop URL: http://shop.dummy.com/shop_disc/en/category.jsp?position=b Time stamp: Sun Feb 15 17:16:55 CET 2004 Session: no Set-Cookie available Res code: 200 OK Res length: 1138 bytes Res time: 539 ms Content: Satisfying. -------------------------------------------------------------------- 16 Status: FAILED Cause: Not Found Start URL: http://shop.dummy.com/testfile Stop URL: http://shop.dummy.com/testfile Time stamp: Sun Feb 15 17:16:56 CET 2004 Session: no Set-Cookie available Res code: 404 Not Found
Példa jelentés email Status: FAILED Cause: Error / Exception on the page Start URL: http://shop.dummy.com/shop_disc/en/cart.jsp Stop URL: http://shop.dummy.com/shop_disc/en/cart.jsp Time stamp: Sun Feb 15 17:18:32 CET 2004 Session: no Set-Cookie available Res code: 200 OK Res length: 1448 bytes Res time: 785 ms Content: com.dummy_shop.beans.dummyshopexception: No such product exists! at com.dummy_shop.helpers.checkpricehelper.checkrequest(checkpricehelper.java:61) at en.buynow_4._jspservice(buynow_4.java:154) at org.apache.tomcat.util.net.tcpworkerthread.runit(pooltcpendpoint.java:494) at org.apache.tomcat.util.threads.threadpool$controlrunnable.run(threadpool.java:516) at java.lang.thread.run(thread.java:534) 17
Integrálható alkalmazások hivatkozás-önjavító mechanizmus hibakód-adatbázis: részletes hibaüzenetek integrált alkalmazás: beavatkozóműveletek XML jelentés adattárházba hiba-statisztikák hiba-konstellációk, korrelációk egymásra hatások 18
A WebAlert előnyei teszteli a lekért tartalmat reguláris kifejezésekkel paraméterezett URL feldolgozás sessionöket kezel email-jelentés XML-alapú konfigurációs felület XML kimenet a további feldolgozhatóságért platform-független, ütemezhető egyszerű felépítés, kisméretű 19