Giftige Akzeptanztests? Webanwendungen mit Selenium testen Björn Eilers 04.07.2007 06.07.2007 Testen von Weboberflächen mit Selenium 1
viadee Unternehmensberatung GmbH Gründung 1994 Firmenstandorte Münster und Köln (seit Mai 2007) Über 70 Mitarbeiter (Informatiker, Mathematiker, Betriebswirtschaftler, ) ca. 7,7 Mio. EUR Umsatz im Jahr 2006 qualitatives, kontrolliertes Wachstum Durchgängige Beratung von Konzeption über Entwicklung bis zu Schulungen sowie Projektmanagement Kunden der Branchen Handel, Banken, Versicherungen, Logistik, Kommunikation, Energie und IT 06.07.2007 Testen von Weboberflächen mit Selenium 2
Agenda Testen von Weboberflächen Was ist Selenium Selenium Core Selenium RC Selenium IDE Fazit 06.07.2007 Testen von Weboberflächen mit Selenium 3
Testen von Weboberflächen Testen ist aufwändig und bindet wertvolle Projektzeit und kosten Manuelles Testen nicht ideal: Hohe Fehleranfälligkeit Zeitaufwändig, Personenbedarf Wachsende Komplexität bei Regressiontests Oberflächentests stellen hohe Anforderungen an Testsoftware: Unterstützung verschiedener Plattformen (Browser / Betriebssysteme, insb. bei Projekten mit großem Anwenderkreis) Dynamische Aspekte (AJAX, JavaScript, DHTML) 06.07.2007 Testen von Weboberflächen mit Selenium 4
Testen von Weboberflächen Vielzahl von Testtools am Markt (httpunit, jwebunit, SilkTest, Rational Robot, ), aber viele Einschränkungen Beschränkung auf wenige Plattformen (z. B. Windows/Internet Explorer) Z. T. nur Unterstützung einfacher Grundfunktionalitäten Alternativ hohe Lernkurve Nur für IT-Professionals, dadurch keine Integration der Fachabteilung in Testdesign und Testfallerstellung Open Source: Akzeptanzprobleme Closed-Source: hohe Lizenzkosten 06.07.2007 Testen von Weboberflächen mit Selenium 5
Testen von Weboberflächen Notwendigkeit einfaches, aber mächtiges Framework Schnelle Erstellung von Oberflächentests Einfache Integration der Fachabteilung möglich SELENIUM 06.07.2007 Testen von Weboberflächen mit Selenium 6
Agenda Testen von Weboberflächen Was ist Selenium Selenium Core Selenium RC Selenium IDE Fazit 06.07.2007 Testen von Weboberflächen mit Selenium 7
Was ist Selenium Framework und Tools zur Erstellung und Durchführung von automatisierten Tests von Weboberflächen Download und Dokumentation: www.openqa.org 06.07.2007 Testen von Weboberflächen mit Selenium 8
Was ist Selenium Drei Komponenten Selenium Core: Im Browser laufendes JavaScript-Framework zur Ausführung von Oberflächentests direkt im Browser Selenium IDE: IDE für Testerstellung und Durchführung, die als Firefox-Addon bereitgestellt wird Selenium RC: Java-Server und APIs für diverse Programmier- und Skriptsprachen, um Browser zu kontrollieren und Selenium-Tests darin auszuführen 06.07.2007 Testen von Weboberflächen mit Selenium 9
Agenda Testen von Weboberflächen Was ist Selenium Selenium Core Selenium RC Selenium IDE Fazit 06.07.2007 Testen von Weboberflächen mit Selenium 10
Selenium Core JavaScript-Framework, das mithilfe von IFrames und DOM Testfälle direkt im Browser ausführt. Testaufbau nach FIT-Prinzip: Testsuiten und Testfälle in Tabellenform abgelegt Testsuiten: einspaltige HTML-Tabellen Pro Zelle Link auf HTML-Datei mit Testfall oder Kommentar Testfälle: Dreispaltige HTML-Tabellen Enthält Selenese-Anweisungen und Kommentare 06.07.2007 Testen von Weboberflächen mit Selenium 11
Selenium Core Selenese-Anweisungen Drei Klassen: Actions, Accessors und Assertions Actions: Verändern den Zustand der Anwendung unter Test [AUT] Z. B. Öffnen von Seiten, Klicken von Links Accessors: Zustand der AUT untersuchen und Ergebnis in Variablen sichern Z. B. Werte aus Tabellen auslesen Assertions: Prüfen, ob Zustand der AUT dem erwarteten Verhalten entspricht Z. B. prüfen, ob eine Seite einen bestimmten Titel hat 06.07.2007 Testen von Weboberflächen mit Selenium 12
Selenium Core Best Practices Test-First Programming: Fachabteilung erstellt Testfälle aufgrund von Application Designs Entwickler nutzen Testfälle als weitere Grundlage für Entwicklung Testfälle als Anforderungsspezifikation / Vertrag zwischen Fachabteilung und Entwicklung Automatische Regressionstests: Nutzung der Testfälle zur Verifikation von Codeänderungen 06.07.2007 Testen von Weboberflächen mit Selenium 13
Selenium Core Probleme Selenium Core gemeinsam mit AUT auf Server deployen XSS-Problematik: Es kann nicht über Domain-Grenze getesten werden Wechsel von unsicheren auf sichere Bereiche und umgekehrt gilt als Domainwechsel Einige JavaScript-Events nicht unterstützt Z. B. Dialogöffnung in onload()-event File-Upload nur in Firefox möglich Keine Verschachtelung von Testsuiten 06.07.2007 Testen von Weboberflächen mit Selenium 14
Selenium Core Demonstration Timesheet-Anwendung Testsuite Selenium-Testrunner 06.07.2007 Testen von Weboberflächen mit Selenium 15
Agenda Testen von Weboberflächen Was ist Selenium Selenium Core Selenium RC Selenium IDE Fazit 06.07.2007 Testen von Weboberflächen mit Selenium 16
Selenium RC Erstellen von automatisierten Tests aus beliebigen Programmiersprachen gegen beliebige Webseiten Middleware: Selenium Server Java-Anwendung kommuniziert mit Selenium Core Kontrolliert unterstützte Browser Firefox, Internet Explorer, Opera, Safari, Camino, SeaMonkey Fungiert als Proxy, um XSS-Problematik zu lösen Bindungen für Java,.net, PHP, Perl, Ruby mitgeliefert Eigene Bindungen möglich: HTTP-GET/POST-Request an Selenium Server 06.07.2007 Testen von Weboberflächen mit Selenium 17
Selenium RC Ermöglicht Einsatz in Unit-Tests Regressionstest-Automatisierung Einsatz in Continuous Integration-Tools möglich 06.07.2007 Testen von Weboberflächen mit Selenium 18
Selenium RC junit-test S/RC- Wrapper 1. HTTP- Anfrage Selenium Server AUT 2. Browser starten und als Proxy anmelden 3. Nächste Testanweisung 4. Anweisung über Proxy gesendet. Browser 5. Anfrage weitergereicht 06.07.2007 Testen von Weboberflächen mit Selenium 19
Selenium RC Demonstration Selenium-Server starten JUnit-Testsuite JUnit-Testlauf 06.07.2007 Testen von Weboberflächen mit Selenium 20
Agenda Testen von Weboberflächen Was ist Selenium Selenium Core Selenium RC Selenium IDE Fazit 06.07.2007 Testen von Weboberflächen mit Selenium 21
Selenium IDE Firefox-Addon zum Aufnehmen, Durchführen und Debuggen von Tests Schnelle Testfallerstellung per Durchklicken der AUT und Anlegen von Assertions über kontextsensitive Menüs direkt im Browser Testnachbereitung in IDE möglich (und auch notwendig) Keine XSS-Problematik, da Addon in speziellem Firefox-Namensraum (chrome://) Tests können als HTML gesichert/geladen oder in die von Selenium RC unterstützten Sprachen exportiert werden Ausführen von in IDE aufgenommenen Tests auch in anderen Browsern möglich 06.07.2007 Testen von Weboberflächen mit Selenium 22
Selenium IDE Demonstration Timesheet-Anwendung 06.07.2007 Testen von Weboberflächen mit Selenium 23
Agenda Testen von Weboberflächen Was ist Selenium Selenium Core Selenium RC Selenium IDE Fazit 06.07.2007 Testen von Weboberflächen mit Selenium 24
Fazit Vorteile Unterstützung diverser Browser- und Betriebssystemplattformen Kostengünstig, da Open Source Geringe Lernkurve, dadurch auch von Fachabteilung nutzbar Schnelle Erstellung von Tests über Selenium-IDE Selenium-RC für automatische Regressionstests und Continuous Integration 06.07.2007 Testen von Weboberflächen mit Selenium 25
Fazit Nachteile XSS-Problematik beim Einsatz von Selenium Core IDE nur für Firefox verfügbar Keine vollständige Unterstützung aller Browserfeatures Mit RC z. T. Probleme bei Einsatz von Internet Explorer und Opera Evtl. Akzeptanzprobleme, da Open Source 06.07.2007 Testen von Weboberflächen mit Selenium 26
Diskussion 06.07.2007 Testen von Weboberflächen mit Selenium 27
Herzlichen Dank für Ihre Aufmerksamkeit. viadee Unternehmensberatung GmbH Anton-Bruchausen-Straße 8 48147 Münster Telefon +49 251 7 77 77 0 Telefax +49 251 7 77 77 888 Bjoern.Eilers@viadee.de www.viadee.de 06.07.2007 Testen von Weboberflächen mit Selenium 28