Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2006  »  10  »  Browser ferngesteuert  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Automatische Regressionstests mit Selenium

Browser ferngesteuert

von Michael Schilli
Erschienen im Linux-Magazin 2006/10

Das Testen komplexer Webapplikationen erfordert nicht unbedingt teure proprietäre Tools wie Test Director oder Silk Performer: Selenium gibt's umsonst. Es steuert alle gängigen Browser unter verschiedenen Betriebssystemen fern und lässt sich unter anderem mit Perl programmieren.

Ob eine Webapplikation nach einer Veränderung des Code noch funktioniert, vermag der Entwickler nur dann mit Sicherheit zu sagen, wenn er alle Funktionen mit einem Browser durchspielt, also jede Seite aufschlägt, jeden Button drückt und jedes Feld ausfüllt. Und das nicht nur einmal, denn sowohl Erfolgs- als auch Fehlerszenarios sollte man mehrfach überprüfen.

Dem Entwickler oder den Mitarbeitern der Abteilung für Qualitätssicherung macht es sicherlich wenig Freude, solche monotonen Tests manuell auszuführen. Zudem birgt dies Vorgehen die Gefahr menschlicher Fehler. Ein automatischer Test erledigt die Aufgabe besser.

Javascript im Test

Einfache Webapplikation lassen sich mit Screenscrapern wie dem CPAN-Modul WWW::Mechanize testen. Dieses Tool steigt jedoch aus, wenn Javascript ins Spiel kommt. Zwar mangelt es nicht an Javascript-Implementationen mit zugehörigen Perl-Schnittstellen, doch für die Interaktion zwischen der Javascript-Engine und dem DOM (Document Object Model) des Browsers gab es bisher keine zufriedenstellende Lösung.

Die Aufgabe ist auch ganz schön komplex: Javascript manipuliert das HTML geladener Seiten, löst sich wiederholende Aktionen aus, öffnet Fenster oder holt neue Daten vom Server und lässt sie in die Seite einfließen. Außerdem hat jeder Browser seine Tücken und Unterschiede in der DOM-Implementation.

Einfach und effektiv

Nun hat die Firma Thoughtworks das Open-Source-Projekt Selenium [2] veröffentlicht, mit dem das Problem einfach zu lösen ist. Das in Java geschriebene Programm füttert einen Webbrowser mit Javascript-Code, der es ihm ermöglicht, die Kontrolle über den Webclient zu übernehmen und Tests zu automatisieren. Welche Anweisungen der Selenium-Server dem Browser erteilt, bestimmen in Perl, Python, Ruby, Java oder Dotnet geschriebene Skripte. Die Kontrolle über den Datenverkehr zwischen Internet und Browser behält Selenium, indem es sich als Proxy dazwischenschaltet.

Abbildung 1 zeigt ein einfaches Webformular, das Userkommentare entgegennimmt. Vor dem Kommentartext gibt der Benutzer seine E-Mail-Adresse an, damit ihm der Webmaster antworten kann. Damit das E-Mail-Feld nicht irrtümlich leer bleibt oder anderen Text enthält, überprüft das Javascript-Programm die Eingabe, wenn der Benutzer den »Send«-Button drückt. Stellt es einen Fehler fest, zeigt es eine Warnung an, statt den Kommentar an den Server zu schicken.

Bei Eingabe einer syntaktisch gültigen Mailadresse gibt das hinter der »ACTION«-URL stehende CGI-Skript »/cgi/feedback.cgi« die Meldung »Thanks for your feedback!« zurück. Der Test soll das Aufklappen des Warnfensters im Falle einer ungültigen Eingabe ebenso verifizieren wie die Erfolgsmeldung.

Listing 1 zeigt das Testskript »emailcheck«, das zunächst eine Verbindung zum Selenium-Server aufbaut. Dieser öffnet auf den Befehl »start()« hin einen Firefox-Browser in einer isolierten Session. »open()« veranlasst ihn danach dazu, die HTML-Seite aus Abbildung 1 vom Webserver zu holen, die den Javascript-Code zur E-Mail-Prüfung enthält.

Listing 1:
»emailcheck«

01 #!/usr/bin/perl -w
02 use WWW::Selenium;
03 use Log::Log4perl qw(:easy);
04 Log::Log4perl->easy_init($DEBUG);
05
06 my $url = "http://perlmeister.com";
07
08 my $sel = WWW::Selenium->new(
09   host => "localhost",
10   port => 4444,
11   browser => "*firefox " .
12     "$ENV{FIREFOX_HOME}/firefox-bin",
13   browser_url => $url,
14 );
15
16   DEBUG "Starting";
17 $sel->start();
18
19 $sel->open("$url/test/mail.html");
20   DEBUG "Typing email";
21 $sel->type("from", 'abcde');
22   DEBUG "Clicking send";
23 $sel->click("send");
24 my $alert = $sel->get_alert();
25   DEBUG "alert was '$alert'";
26
27   DEBUG "Opening";
28 $sel->open("$url/test/mail.html");
29   DEBUG "Typing email";
30 $sel->type("from", 'abcde@foo.com');
31   DEBUG "Clicking send";
32 $sel->click("send");
33 $sel->wait_for_page_to_load(50000);
34 my $body = $sel->get_body_text();
35   DEBUG "Response was '$body'";
36
37 $sel->stop();


Abbildung 1: Das zu testende Webformular nimmt eine E-Mail-Adresse entgegen und prüft die Eingabe auf Gültigkeit.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Von Java zu Ajax Google Web Toolkit zum Erstellen dynamischer Webapplikationen
Tooltipps Werkzeuge im Kurztest
Allzweckmittel Rich Internet Applications mit Zkoss 5
Reiches Angebot Webentwicklung mit Java
Tooltipps Werkzeuge im Kurztest
Der Inhalt zählt Wiki-Software im Test
Whitepaper
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (0)