Canoo WebTest Testautomatisierung von Webanwendungen DI Siegfried GÖSCHL [email protected] 26.06.2002 Die Vorteile § Ständiges Wiederholen von Tests ist langweilig – Fragen Sie mal Ihre Tester …. § Manche Tests sind manuell nur schwer ausführbar – Testen komplexer Suchfunktionen – Testen auf Broken Links § Testautomatisierung von Webapplikationen mit Daily Build erhöht die Qualität – Server wird jeden Tag getestet – Implizites Wissen wird formalisiert – Dokumentation des Projektfortschrittes Alle reden davon, wenige tun es … Canoo WebTest 2 2 Die Probleme Automatisiertes AutomatisiertesTesten Testenvon vonWebanwendungen Webanwendungen § Automatisieren von Tests ist aufwendig – – – – – Testplanerstellung Schreiben und Wartung der Testscripts Verifikation der Resultate Automatisches Deployment der Serverapplikation Handling der Testdaten § Automatisieren von Tests rechnet sich erst nach einigen Testwiederholungen § Kommerzielle Werkzeuge sind teuer Just another useless silver bullet?! Canoo WebTest 3 3 Eine Lösung?! Canoo CanooWebTest WebTest § § § § Open Source Projekt von Canoo Engineering AG Canoo Webtest läuft als ANT Task Test Skripts sind in XML geschrieben Baut auf andere Open Source Projekte auf – – – – Canoo WebTest HTTPUnit für HTTP Kommunikation JTidy oder NekoHTML für HTML Document Object Model DOM4J für Java DOM Implementierung ORO für Regular Expressions 4 4 Ein kurzes Beispiel Screen HTML Template WebTest Script Canoo WebTest 5 5 Canoo WebTest The TheGood Good... ... § ANT Integration – Erlaubt Verwendung aller ANT Funktionalitäten, wie DBUnit oder SQL § XML Zentrierung – Erleichtert Integration in bestehende Systeme – Erlaubt „Nichtprogrammierern“ das Schreiben von Tests – XML Test Reports können via XSL transformiert werden § Document Object Model – HTML Dokumente werden als DOM angesprochen – XPath für Verifikation anstelle von Regular Expressions § SSL Unterstützung Canoo WebTest 6 6 Canoo WebTest The TheBad Bad... ... § Kein Capture & Replay Tool – Testfälle müssen manuell erstellt werden § SSL Untersützung – SSL Authentifizierung mit Zertifikaten nicht implementiert § HTTP Proxy Support – Wird nicht direkt unterstützt (via ANT möglich) § Wohlgeformtes HTML notwendig – Ungültiges HTML führt zu Fehlern bei der Transformation in ein XML DOM Canoo WebTest 7 7 Was passiert wirklich?! open source software WebTest erstellte Dateien generierte Dateien .. Test Script [XML, WebTest Befehle] Canoo WebTest Test Resultat [XML] Ant Script [XML] createSummaryReport [XML] ApplyXSL [XML] WebTestReport [XSL] Xerces xalan reportFromSummary [XSL] WhitePaperStyle [XSL] TestResultOverview [html] Canoo WebTest 8 8 Einige Canoo WebTest Kommandos config Konfiguration eines Tests Invoke Verzweigung zu einer HTML Seite clicklink Klick auf einen Link clickbutton verifytitle Klick auf einen Button verifytext Überprüft das Vorhandensein einer Zeichenkette innerhalb der HTML-Seite setinputfield Setzen eines Eingabefeldes setcheckbox Setzen einer Checkbox setselectfield Setzen eines Wertes einer Select Box storexpath Speichern des Resultats einer XPath Expression storeregex Speichern des Resultats einer Regular Expression Canoo WebTest Überprüft den Titel einer HTML Seite 9 9 <config> <testSpec name="Visit the shop on myhost"> <config host="www.myhost.com" port="8080" protocol="http" basepath="shop" summary="true" verbose="true" saveresponse="true" resultpath="/tmp/results" > <header name="User-Agent" value="Mozilla/4.0"/> <header name="Accept-Language" value="de-ch"/> </config> ... </testSpec> Canoo WebTest 10 10 <invoke> <testSpec name="Visit all pages without update"> <config ... /> <steps> <invoke stepid=„Goto start page" url=„appstart.html„ save="myResultPage“ username=„foo“ password=„bar“ /> ... </steps> </testSpec> Canoo WebTest 11 11 <setinputfield> <testSpec name="Login with vaild user/password"> <config ... /> <steps> <invoke ... /> <setinputfield stepid="set user name" name="username" value="scott" /> <setinputfield stepid="set password" name="password" value="tiger" /> <clickbutton stepid="Click the submit button" label="Login" /> ... </steps> </testSpec> Canoo WebTest 12 12 <verifytitle> <testSpec name="Verify user name in document title"> <config ... /> <steps> <invoke ... /> <verifytitle stepid="Title can include user name" text="User .* - Main View" regex="true" /> ... </steps> </testSpec> Canoo WebTest 13 13 <verifyxpath> <target name="testXPath"> <testSpec name="xpath" > &sharedConfiguration; <steps> .. <verifyxpath stepid="simple match" xpath="/html/head/title"/> <verifyxpath stepid="more complicated match" xpath="//img[@src='seibertec.gif']"/> <verifyxpath stepid="simple match with value" xpath="/html/head/title" text="Canoo WebTest"/> </steps> </testSpec> </target> Canoo WebTest 14 14 Das Ergebnis Canoo WebTest 15 15 Die ANT Integration § Canoo WebTest als ANT Task § Aufruf von Canoo WebTest via ANT benötigt individuelle Anpassung – – – – Löschen von temporären Dateien Start von Canoo WebTest Aufruf von XALAN für HTML Report Einbinden der HTML Reports in eine Website Maven WebTest Plugin ?! Canoo WebTest 16 16 Die Praxis § Ungültiges HTML – Patch von Canoo WebTest ermöglicht Ausgabe des internen HTML DOM Tree § Deutsche Sonderzeichen – Verwendung von UTF-8 erspart Probleme § Modularisierung der Tests – Splitten der Tests in mehrere ANT Targets – Inkludieren von XML Fragmenten via Entity References Canoo WebTest 17 17 Die Praxis Modularisierung Modularisierungmit mitEntity EntityReferences References <config host="www.myserver.com" port="8080" protocol="http" basepath="myApp" /> <?xml version="1.0"?> <!DOCTYPE project SYSTEM "WebTest.dtd"[ <!ENTITY definition SYSTEM "definition.xml"> <!ENTITY config SYSTEM "config.xml"> <!ENTITY login SYSTEM „login.xml"> ]> &config; Canoo WebTest 18 18 Die Praxis § Trennung von Skript und Daten – ANT Properties – ANT Property Files § Validierung – XPath erlaubt die Validierung komplexer HTML Formulare – Regular Expression nur in Ausnahmefällen – Tests der Regular Expressions mit XPath Explorer Canoo WebTest 19 19 Eine Fallstudie Together TogetherTeamlösungen Teamlösungen § Maven als Build Environment – Aufruf von Canoo WebTest mit Maven WebTest Plugin § Testsuite mit mehr als 60 Tests § Daily Build and Smoke Test – Daily Compile, Deployment and Testing Cycle – Testreports täglich im Intranet verfügbar § Konfiguration erlaubt Umschaltung zwischen verschiedenen Testservern – HTTP oder HTTPS – Verschiedene User Canoo WebTest 20 20 Eine Fallstudie Canoo WebTest 21 21 Zusammenfassung Canoo CanooWebTest WebTest § § § § § Open Source Projekt von Canoo Engineering AG ANT zur Exekution der Testskripts HTML Testreport via XSLT Einfache Integration in ANT und MAVEN Build Auch von „Nichtprogrammierer“ verwendbar Demnächst auch in Ihrem Projekt?! Canoo WebTest 22 22 The End Any questions !? Canoo WebTest 23 23 Related Links Canoo Webtest http://webtest.canoo.com ANT http://jakarta.apache.org/ant/index.html Maven http://www.maven.org Webtest Plugin http://maven-plugins.sourceforge.net/webtest/index.html ORO http://jakarta.apache.org/oro/ JTidy http://sourceforge.net/projects/jtidy/ DOM4J http://www.dom4j.org/ NekoHTML http://www.apache.org/~andyc/neko/doc/html/ XPathExplorer http://www.purpletech.com/xpe/index.jsp XPath http://www.zvon.org/xxl/XPathTutorial/General/examples.html Canoo WebTest 24 24