Functional Testing. mit. HttpUnit



Ähnliche Dokumente
OP-LOG

ERSTELLEN VON INCENTIVES IM ZANOX NETZWERK

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Bedienungsanleitung für den SecureCourier

Urlaubsregel in David

:: Anleitung Hosting Server 1cloud.ch ::

Step by Step Webserver unter Windows Server von Christian Bartl

Adami CRM - Outlook Replikation User Dokumentation

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Das Starten von Adami Vista CRM

Drägerware.ZMS/FLORIX Hessen

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Verwendung des IDS Backup Systems unter Windows 2000

Lizenzen auschecken. Was ist zu tun?

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

How to install freesshd

Anleitung über den Umgang mit Schildern

Professionelle Seminare im Bereich MS-Office

Kurzanleitung für Verkäufer

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Adressen der BA Leipzig

Fotostammtisch-Schaumburg

Guide DynDNS und Portforwarding

Internationales Altkatholisches Laienforum

SAMMEL DEINE IDENTITÄTEN::: NINA FRANK :: :: WINTERSEMESTER 08 09

LISP. Eine Einführung

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Diese Anleitung beschreibt das Vorgehen mit dem Browser Internet Explorer. Das Herunterladen des Programms funktioniert in anderen Browsern ähnlich.

KVIrc installieren (win) i. KVIrc installieren (win)

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

ecaros2 - Accountmanager

Ein Hinweis vorab: Mailkonfiguration am Beispiel von Thunderbird

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Installation SQL- Server 2012 Single Node

Lizenz Verwaltung. Adami Vista CRM

Anleitung zur Mailumstellung Entourage

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

inviu routes Installation und Erstellung einer ENAiKOON id

Websites mit Dreamweaver MX und SSH ins Internet bringen

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Aktivieren von Onlinediensten im Volume Licensing Service Center

Installation Microsoft Lync 2010 auf Linux

Von Keerthikan T. & Siyar Kolusari

Beschaffung mit. Auszug aus dem Schulungshandbuch: Erste Schritte im UniKat-System

Einrichten eines POP-Mailkontos unter Thunderbird Mail DE:

EINFACHES HAUSHALT- KASSABUCH

Online Newsletter III

RL

Der SAP BW-BPS Web Interface Builder

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Neue Kennwortfunktionalität. Kurzanleitung GM Academy. v1.0

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Installationsanleitung unter Windows

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

TeamSpeak3 Einrichten

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihren Gästen die Anmeldung über eine SMS ermöglichen.

Benutzerhandbuch - Elterliche Kontrolle

OutLook 2003 Konfiguration

HTBVIEWER INBETRIEBNAHME

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

So richten Sie Ihr Postfach im Mail-Programm Apple Mail ein:

Erste Schritte mit Desktop Subscription

Intranet Moodle

! " # $ " % & Nicki Wruck worldwidewruck

Hilfe zur Urlaubsplanung und Zeiterfassung

Kapitel 3 Frames Seite 1

Nathan Burgener. Design by Contract. Modul SWE

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

1. Zugriff auf das Lonza Netzwerk von ihrem privaten PC oder von einem Internet Café

Sage 200 BI Häufige Fehler & Lösungen. Version

Web Sockets mit HTML5. Quelle:

Handout Wegweiser zur GECO Zertifizierung

Installationsanleitung Webhost Linux Flex

Universität Zürich Informatikdienste. SpamAssassin. Spam Assassin Go Koordinatorenmeeting 27. April

Übung - Konfigurieren einer Windows-XP-Firewall

Frames oder Rahmen im Browserfenster

Ihr habt Probleme auf die Closed Public Beta zuzugreifen? Dieses Dokument hilft Euch Antworten auf häufig gestellte Fragen zu erhalten.

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Anleitung zum Prüfen von WebDAV

teischl.com Software Design & Services e.u. office@teischl.com

Transkript:

Functional Testing mit HttpUnit Student: Fabian Märki Dozent: Dominik Gruntz Datum: 12 June 2003

Inhaltsverzeichnis Einführung... 3 HttpUnit Überblick... 3 Functional Testing und XP Programming... 3 Wesshalb HttpUnit?... 3 HttpUnit Basics... 4 Funktionalität des WebClients... 5 Anwendung von HttpUnit an einem Beispiel... 5 Login Test... 7 Testen der Verkaufszahlen Page... 9 Das Feedback Form... 11 Weitere HttpUnit Themen... 12 DOM Inspection... 12 Headers und Cookies... 12 Frames... 12 SSL (Secure Sockets Layer)... 13 HttpUnitOptions... 13 Technische Limitationen... 13 HttpUnit Funktionen Übersicht (Basics)... 14 Fazit... 17 Sources... 18 Links... 18 2 / 18

Einführung In den folgenden Zeilen versuche ich dem Leser das HttpUnit Framework etwas näher zu bringen. Dies soll erreicht werden, indem ich auf die Rolle des Functional Testing im heutigen XP Programming eingehe sowie durch einige Beispiele dem Leser das HttpUnit Tool selber vorstelle. HttpUnit Überblick Functional Testing und XP Programming Um den Testvorgang in einfachen Grenzen zu halten, werden in Extreme Programming oft Unit Tests durchgeführt. Bei diesen Tests werden kleine, übersehbare Code Fragmente getestet, damit sie später als funktionstüchtiger Code ins Gesamtsystem eingebaut werden können. Trotzdem wird auch dem Functional Testing (auch Black-Box Testing genannt) im Exteme Programming einen entsprechenden Stellenwert zugeschrieben. Diese Tests sollen das einwandfreie funktionieren des gesamten Systems darlegen und können deshalb sehr komplex und zeitaufwändig werden. Somit liegt es nahe, den Testvorgang zu automatisieren. Weshalb HttpUnit? Heute werden bereits mehrere Tools angeboten die Functional Testing unterstützen, weshalb sollte man sich da für HttpUnit entscheiden? Das HttpUnit Framework bietet einige entscheidende Vorteile: Preis: HttpUnit ist ein Open Source API und somit müssen keine Lizenzen erworben werden. Einfachheit: Die HttpUnit Klassen stellen folgende fundamentale Mechanismen zur Verfügung: o Das unterhalten eines Client Status o Senden von Requests o Erhalten von Responses o Folgen von Links. 3 / 18

o Weiter werden Methoden zum Herauslesen einzelner Elemente (headers, tables, forms ) aus einer HTTP Response zur Verfügung gestellt. Vielfältigkeit: Dem Tester sind keinerlei Grenzen gesetzt, denn die Tests können in beinahe jedem vorstellbaren Weg implementiert werden. JUnit: HttpUnit Tests können in JUnit Tests integriert werden. HttpUnit ist jedoch unabhängig von JUnit aufgebaut, was uns erlaubt mittels HttpUnit von einer Java Applikation aus Requests an einen Server zu senden. Wo es Vorteile gibt sind natürlich auch Nachteile zu finden: GUI: Es steht kein User Interface zur Verfügung (kann aber in JUnit Testumgebungen integriert werden). Reports: Es werden keine graphische Reports generiert. Weitere Features die man von einem kommerziellen Tool erwartet (z.b. automatisches Test Scheduling, ). Für den Developer stellt sich natürlich immer noch die Frage, wann das HttpUnit Framework am optimalsten eingesetzt werden sollte. Als Einsatzmöglichkeiten können in Frage kommen: Unterhalten eines Web Client Status von einer Java Applikation aus. Testen automatisch generierter HTML Pages. Funktionstest einer Web Site. Wenn die Flexibilität eines Frameworks anstelle eines Tools gefragt ist. HttpUnit Basics Das HttpUnit Framework stellt grundsätzlich zwei Funktionalitäten zur Verfügung: Ein Web Client welcher eine Verbindung zu einem Webserver unterhält und das senden von Requests und das erhalten von Responses ermöglicht. Ein Set von Methoden welche den Inhalt einer Response verifizieren können. Durch die Kombination dieser zwei Funktionalitäten kann komplexes Verhalten von Webpages getestet und sichergestellt werden. 4 / 18

Funktionalität des WebClients Die Klasse WebConversation, welche von der abstracten Klasse WebClient abgeleitet wurde, verhält sich grundsätzlich wie ein gewöhnlicher Webbrowser. Die Kollaborateure der WebConversation Klasse sind WebRequest und WebResponse. Die Klasse WebRequest stellt den Request an einen Remote Server dar und die WebResponse Klasse enthält die Antwort des Servers. Die Benutzung ist relativ einfach: WebConversation conversation = new WebConversation(); WebRequest simplerequest = new GetMethodWebRequest("http://httpunit.sourceforge.net/"); WebResponse response = conversation.getresponse(simplerequest); oder direkt WebResponse response = conversation.getresponse("http://httpunit.sourceforge.net/"); HttpUnit ermöglicht es in der WebResponse enthaltenen Links zu folgen: WebLink link = response.getlinkwith("automated web site testing"); WebRequest request = link.getrequest(); response = conversation.getresponse(request); Zu beachten ist, dass getlinkwith( ) nach dem ersten klickbaren Text (also nicht nach dem Wert im href Attribut) sucht und den ersten Link zurückgibt, der diesem Text entspricht. Anwendung von HttpUnit an einem Beispiel Da die Testszenarios von den JUnit TestCases abgeleitet sind, werden auch einige JUnit spezifische Methoden gebraucht. So werden z.b. die JUnit assertions für die Überprüfung der Richtigkeit einiger Resultate verwendet. Weiter muss man wissen, dass in einem JUnit TestCase alle Methoden welche mit test () beginnen generisch aufgerufen werden. In unserem Beispiel wollen wir eine Webpage testen, welche Verkaufszahlen anzeigt, welche wiederum dynamisch von einer Datenbank gelesen werden. Da dies sensible Daten sind, ist dies Webpage vor unbefugtem Zutritt mit einem Login geschützt. Somit können wir folgende Testszenarios generieren: 5 / 18

Login: Falls ein User auf eine geschützte Seite zugreifen will und nicht eingelogged ist, wird er automatisch an die Loginpage weitergeleitet. Die Loginpage wird zu einer geschützten Seite weiterleiten, falls das Login richtig ausgefüllt wurde. Falls das Login falsch ausgeführt wurde, wird eine Fehlermeldung angezeigt Page mit den Verkaufszahlen: Diese Seite wird zwei Tables enthalten: projected und current sales Gewisse Zellen werden einen Dollar Betrag enthalten. Es wird eine Liste mit den Board Members auf dieser Page enthalten sein. Feedback: Ist die Feedbackform richtig strukturiert? Wird die Feedbackform richtig übermittelt? 6 / 18

Login Test public void setup(){ conversation = new WebConversation(); public void testlogin() throws Exception{ WebResponse response = this.gotoprivatepage(); //verify that we are at the login page assertloginpage(response); //try to login with a bad username and password response = login(response, "xxx", "notapassword"); assertloginpage(response); //check that an error message has been displayed String pagstr = response.gettext(); asserttrue(pagestr.indexof("password or User name not correct.")>-1); //login correctly response = login(response, "user", "muffinwaste77"); asserttrue(!response.gettitle().equals("login")); private WebResponse gotoprivatepage() throws Exception{ //try to get to a protected page return conversation.getresponse ("http://localhost:8080/examples/private.jsp"); public void assertloginpage(webresponse response) throws Exception{ //Page title is often a quick verification that the correct page is //being examined. assertequals("redirected successfully to login", "Login", response.gettitle()); public WebResponse login(webresponse loginpage, String username, String pass) throws Exception{ //since the forms are not named, get the first form on the page WebForm form = loginpage.getforms()[0]; 7 / 18

//getthe request form the form WebRequest loginrequest = form.getrequest(); //set the user name and password loginrequest.setparameter("username", username); loginrequest.setparameter("password", pass); //return the response for the login return conversation.getresponse(loginrequest); Als erstes wird die Methode testlogin() aufgerufen von welcher aus folgendes Szenario durchgespielt wird. Ein User versucht auf eine private Seite zuzugreifen indem er direkt die Seite private.jsp öffnet. Dies wird simuliert indem die Methode gotoprivatepage() aufgerufen wird. Da der User nicht die Berechtigung hat direkt auf eine geschützte Seite zuzugreifen, sollte er an die Loginpage weitergeleitet worden sein. Dies wird in der Methode assertloginpage( ) getestet. In der darauffolgenden Zeile wird die falsche Eingabe des Usernames und Passwort simuliert. Es wird wiederum überprüft ob der User an die Loginpage weitergeleitet wurde sowie eine entsprechende Fehlermeldung angezeigt wird. In der Methode login() wird das HttpUnit Form Handling eingeführt WebForm form = loginpage.getforms()[0]; Die Methode getforms() gibt einen Array zurück von welchem wir das erste Element auswählen. Um spezifische Requests an diese WebForm stellen zu können, wird das WebRequest dieser Form benötigt. WebRequest loginrequest = form.getrequest(); Jetzt kann der Username und das Passwort gesetzt werden. loginrequest.setparameter("username", username); Schlussendlich wird das Login richtig ausgefüllt und der User gelangt zu der privaten Seite. 8 / 18

Testen der Verkaufszahlen Page Da es sich um eine dynamisch generierte Seite handelt, können wir nur die Richtigkeit des Aufbaus dieser Seite testen und nicht etwa den Inhalt. Da HttpUnit durch mehrere praktische Methoden das Untersuchen von Tables unterstützt, ist dies kein Problem. public WebTable[] gettables() //returns an array of the top-level tables public WebTable gettablestartingwith(string text) public WebTable gettablestartingwithprefix(sting text) //The methods gettablewithxxx() recurse into tables in search of a match. //They return tables based on the text of their first non-empty cell. public WebTable gettablewithid(string text) public WebTable gettablewithsummary(string text) //This two methods searche for a table based on the id and summary //attributes of the table. Da in unserem Beispiel Attribute wie id oder summary nicht gesetzt sind, müssen wir einen etwas umständlicheren Weg wählen. Da nur eine Toplevel Table vorhanden ist können wir direkt auf sie zugreifen. 9 / 18

WebTable topleveltable = response.gettables()[0]; Die WebTable Klasse repräsentiert eine HTML Table. Diese Klasse stellt eine Methode zur Verfügung, mit der man spezifische Zellen ansprechen kann. TableCell reportcell = topleveltable.gettablecell(0,0); Da die Klasse TableCell das gleiche Interface implementiert wie die Klasse WebResponse, kann ähnlich wie im Login Test vorgegangen werden. /* Sets up the sales report page to be checked by assertsalesreportpage(webresponse response) */ public void testreportspage() throws Exception{ WebResponse response = this.gotoprivatepage(); //redirected automatically to login page, so attempt to log in responose = login(response, "user", "muffinwaste77"); //now we should be on the sales report page assertsalesreportpage(rsponse); public void assertsalesreportpage(webresponse response) throws Exception{ WebTable topleveltable = response.gettables()[0]; TableCell reportcell = topleveltable.gettablecell(0,0); assertsalescell("sales Report", reportcell); TableCell forecastcell = topleveltable.gettablecell(0,1); assertsalescell("forecast", forecastcell); TableCell boardcell = topleveltable.gettablecell(1,1); assertboardcell(boardcell); public void assertsalescell(string caption, TableCell cell) throws Exception{ //verify the cell contains the caption String cellstr = cell.astext(); asserttrue(cellstr+ "contained "+caption, cellstr.indexof(caption)>- 1); //get the table and verify its structure WebTable table = cell.gettables()[0]; this.assertgenericsalestable(table); public void assertgenericsalestable(webtable table) throws Exception{ String[][] tablearray = table.astext(); for(int i=0; i<tablearray.length; i++){ asserttrue("row correctly captioned", tablearray[i][0].startswith("annual sales for fiscal")); asserttrue("row contains dollar figure", tablearray[i][1].startswith("$")); public void assertboardcell(tablecell cell) throws Exception{ //should span 2 columns assertequals(2, cell.getcolspan()); //turn the cell into text and verify that it contains "Board Members" String cellstr = cell.astext(); asserttrue(cellstr.indexof("board Members ")>-1); 10 / 18

Das Feedback Form Um unseren Test zu komplettieren, müssen wir nur noch das Feedback Form testen. Als erstes testen wir ob diese Form auch alle Parameter enthält die wir erwarten. WebForm feedbackform = response.getformwithname("feedback"); String[] parameters = feedbackform.getparameternames(); String[] expected = {"name", "email", "reply", "usefulness"; assertarraysequal(expected, parameters); Weiter können wir prüfen, ob die Drop-Down Box die richtigen Parameter enthält. String[] usefulnessvalues = feedbackform.getoptionvalues("usefulness"); String[] expectedvalues = {"1", "2", "3"; assertarraysequal(expectedvalues, usefulnessvalues); Wir können ebenfalls testen ob ein bestimmter Parameter einen Default Wert hat. assertequals("2", feedbackform.getparametervalue("usefulness")); Nachdem wir dies alles getestet haben, bleibt nur noch die Form auszufüllen und an den Server zu senden. Dies in gewohnter Manier. 11 / 18

Weitere HttpUnit Themen DOM Inspection HttpUnit ermöglicht es, ein HTML Dokument als ein DOM (Document Object Model) zu untersuchen. Das Document Object Model behandelt Dokumente als manipulierbare Objekte. Es wurde vom World Wide Web Konsortium entwickelt und gilt heute als Standart. Da eine genauere Behandlung dieses Themas den Rahmen dieser Arbeit sprengen würde, möchte ich nicht weiter darauf eingehen. Headers und Cookies Die WebConversation Klasse ermöglicht es Header Felder von Requests zu setzen. Um einen Übertragungs-Header zu setzen, steht die Methode setheaderfield(string fieldname, String fieldvalue) zur Verfügung. Eine weitere Methode existiert um einen Authorization-Header zu setzen: setauthorization(string username, String password). Falls das Header Feld auf null gesetzt wird, wird der Header von allen folgenden Requests entfernt. Cookies können mit den WebConversation Methoden getcookiename() und getcookievalue(string name) abgefragt werden. Die Methode addcookie(string name, String value) fügt ein Cookie zu den zu sendenden Cookies hinzu. Anders als bei den Header Feldern gibt es bei den Cookies keine Möglichkeit ein einzelnes Cookie von der Liste zu entfernen. Um auf Serverseitig generierte Cookies zuzugreifen stellt die WebResponse Klasse folgende Methoden zur Verfügung: getnewcookienames() und getnewcookievalue(string name). String[] names = response.getnewcookienames(); for(int i = 0; i < names.length; i++){ System.out.print(names[i] + - ); System.out.println(response.getNewCookieValue(names[i])); So könnte zum Beispiel verifiziert werden, dass der Server versucht hat ein spezifisches Cookie in der Response zu setzen. Frames Eine kurze Einführung wie mit HttpUnit Frames behandelt werden. 12 / 18

Auf den Inhalt eines spezifischen Frames kann folgendermassen zugegriffen werden. WebResponse response = WebClient.getFrameContents( someframename ); Falls in einem Frame einem Link gefolgt wird, welcher den Inhalt eines anderen Frames verändert, so wird die Response den Inhalt des Target Frame enthalten. SSL (Secure Sockets Layer) Mit HttpUnit können Seiten getestet werden, welche SSL benützen. Dazu sind zwei Bedingungen zu erfüllen: - Der Server muss ein SSL Zertifikat installiert haben - Die JVM muss diesem Zertifikat trauen Weitere Informationen unter http://httpunit.sourceforge.net/doc/sslfaq.html HttpUnitOptions Die HttpUnitOptions Klasse ermöglicht es das Verhalten von HttpUnit zu definieren. So ist es z.b. möglich einzustellen, ob eine Linksuche case-sensitive sein soll (und vieles mehr). Technische Limitationen Obwohl HttpUnit viele Funktionen eines Webbrowsers zur Verfügung stellt, sind auch Grenzen gesetzt. So ist es z.b. nicht möglich JavaScript Funktionen wie Rollovers zu testen. Weiter richtet sich HttpUnit strikte nach den HTML Spezifikationen. So kann der Inhalt einer nach den Spezifikationen falsch geschriebenen Website in einem Webbrowser richtig erscheinen, HttpUnit wird einen Fehler melden. 13 / 18

HttpUnit Funktionen Übersicht (Basics) Client Status erlangen: WebConversation con = new WebConversation(); Web request: WebRequest reqeust = new GetMethodWebRequest( http://... ); Web response: WebResponse response = con.getresponse(req); WebResponse response= con.getresponse( http://... ); Direkter Zugriff. Folgen von Links: WebLink link = response.getlinkwith( link text ); WebRequest reqeust = link.getrequest(); response = con.getresponse(req2); Stellt den Link entsprechend des klickbaren Textes zur Verfügung. Folgen des Links. WebForms: WebForm[] formarray = response.getforms(); WebForm form = response.getformwithname( feedback ); String[] parameters = form.getparameternames(); WebRequest loginrequest = form.getrequest(); loginrequest.setparameter( username, username); con.getresponse(loginrequest); Stellt alle Forms einer Page bereit. Spezifische Form. Stellt alle Parameter Strings bereit. Stellt den WebRequest der Form bereit. Setzen eines spezifischen Parameters Übermittelung der 14 / 18

Form. Tables: WebTable[] table = response.gettables(); WebTable table = response.gettablestartingwith( string ); WebTable table = response.gettablewithid( string ); TableCell cell = table.gettablecell(0,0); String cellstring = cell.astext(); Bereitstellung der Tables einer Page. Zugriff auf eine bestimmte Zelle. Inhalt der Zelle. Headers con.setheaderfield( fieldname, fieldvalue ); con.setheaderfield( fieldname, null); Setzen eines Header Fields. Löschen eines Header Fields. Cookies con.addcookie( name, value ); String[] cookienames = con.getcookienames(); String value = con.getcookievalue(cookiename[0]); String[] newnames = response.getnewcookeinames(); String newvalue = response.getnewcookievalue(newnames[0]); Setzen eines neuen Cookies. Es besteht keine Möglichkeit ein bestimmtes Cookie zu löschen. Stellt alle Cookie Name Strings zur Verfügung. Extrahieren eines bestimmten Values. Serverseitig neu definierte Cookies. Frames WebResponse response = con.getframecontents( name ); Stellt ein bestimmtes 15 / 18

Frame bereit. HttpUnitOptions Die Klasse HttpUnitOptions stellt Methoden zur Verfügung, die es ermöglichen, das Verhalten von HttpUnit zu beeinflussen. 16 / 18

Fazit HttpUnit stellt ein flexibles Java API zur Verfügung mit welchem, unterstützt durch verschiedene mächtige Utilities, die Responses von Webbrowsern getestet werden kann. Functional Testing mit HttpUnit ist komplexer als Unit Testing mit JUnit und deshalb müssen Website Tests klar strukturiert sein. Zudem sollte die Balance zwischen einem vollständigem Test und verantwortbarem Zeitaufwand eingehalten werden. Da das HttpUnit Framework durch ihre Einfachheit und ihrer Flexibilität diesen Anforderungen entspricht, steht dem Einsatz von HttpUnit nichts mehr im Wege. 17 / 18

Sources Bei dem Erstellen dieser Arbeit habe ich mich stark an folgendes Buch gehalten: Richard Hightower, Nicholas Lesiecki, Functional Testing with HttpUnit Java Tools for Extreme Programming, Chapter 9, John Wiley, 2001. HttpUnit. Stand Januar, 2003. http://httpunit.sourceforge.net HttpUnit Cookbook. Stand Januar, 2003. http://www.httpunit.org/doc/cookbook.html HttpUnit Tutorial. Stand Januar, 2003. http://www.httpunit.org/doc/tutorial/index.html Frequently Asked Questions. Stand Januar, 2003. http://www.httpunit.org/doc/faq.html Links HttpUnit download: http://sourceforge.net/projects/httpunit 18 / 18