Ubung V zur Vorlesung Informatik II

Werbung
Übung V
zur Vorlesung Informatik II
Prof. Dr. Nikolaus Wulff
zum 2. Juni 2008
1
HTML Testseite
Zum Testen des HTML-Providers ist es nützlich eine HTML-Seite zu erstellen, die vom Browser angezeigt werden soll. Möglichst soll dies so geschehen,
dass diese Seite innerhalb eines JUnit-Tests validiert werden kann, d.h. der
HTML-Provider kann automatisiert auf seine ordnungsgemässe Funktionalität getestet werden.
Aufgabe
• Überlegen Sie sich in diesem Teil der Übung eine (x)HTML-Seite, welche die Automatisierung eines solchen JUnit Tests ermöglicht.
• Diese Seite soll als wohlgeformtes HTML, d.h. als XHTML konzipiert
werden.
2
Ein JUnit Web-Server
Um den HTMLProvider zu testen, ist es notwendig ihm eine Web-Addresse,
z.B. http://www.google.de zu übergeben und dann zu prüfen, ob die richtige Antwort zurückkommt.
Nur was ist die richtige Antwort und wer garantiert, dass der Server
gerade online und erreichbar ist? Der Test wird bei fehlender Netzwerkverbindung fehlschlagen, obwohl der HTMLProvider im Prinzip funktionieren
würde. Ein solcher Test ist also nicht sehr aussagekräftig. Besser ist es einen
einfachen Web-Server zu entwickeln, der direkt im JUnit-Test instanziert
werden kann und eine wohldefinierte Antwort liefert, die im Test automatisiert auswertbar ist.
1
Aufgabe
• Entwickeln Sie einen HTML-Server der eine Testseite, wie in der vorherigen Übungsaufgabe besprochen, generiert und an den aufrufenden
Client zurückliefert.
• Eine gülitige HTTP Antwort enthält einen Response-Code, mit der
Angabe des MIME-Type und der Länge des Inhalts1 .
Die Response-Codes sind als RFC beschrieben und z.B. unter der URL
http://www.html-world.de/program/http_8.php zu finden. Beispiel
(1) zeigt die OK-Antwort des Servers.
• Überlegen Sie die Verwendung des Servers in einen HTMLProviderTest.
Tip
Zur Entwickung benötigen Sie die Klassen ServerSocket und Socket
aus dem java.io-Paket. Das ServerSocket wartet (blockierend!) beim Aufruf der accept-Methode auf eine hereinkommende Anfrage. Sobald diese eintrifft wird ein Client-Socket zurückgeliefert. Dieses wird zur weiteren Kommunikation verwendet. Mit dessen InputStream können die Eingaben des
Client(Browsers) abgefragt werden und in dessen OutputStream werden die
Antworten zurückgeschrieben.
Unter der URL http://en.wikipedia.org/wiki/Server_socket finden Sie als Pseudocode die wesentliche Interaktion, die mit Hilfe der angegebenen Java Klassen leicht zu implementieren ist.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
HTTP/1.1 200 OK\r\n
Server: JUnit−TestServer\r\n
Date: Sun 31. Mai 2008 10:41:23 CEST\r\n
Content−Type: text/html\r\n
Content−Length: 398\r\n
\r\n
<?xml version=”1.0” encoding=”UTF−8”?>
<!DOCTYPE html PUBLIC ”−//W3C/DTD/ XHML 1.0 Strict//EN”
”http://www.w3.org/TR/xhtml1/DTD/xhtml1−strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<title>JUnit−TestServer</title>
</head>
<body> ...
Listing 1: HTTP-Response Auszug des JUnit Web-Servers
1
Siehe den Wireshark Bildschirmausdruck eines Web-Response im Vorlesungsskript.
2
Herunterladen