# Eclipse TPTP-Testen einer komplexen Web Umgebung



## AyKay (7. Jan 2009)

Hallo zusammen

Ich bin auf der TPTP Seite nicht fündig geworden. Ein Forum zu dieser speziellen Platform habe ich auch (noch) nicht gefunden. Also vielleicht hat hier jemand Erfahrung mit dem Testen und "Profilen" einer komplexen Web-App, die mit Sessions, Cookies, JSP Beans und allem drum und dran arbeitet.

In den Tutorials der TPTP Seite - zum Beispiel hier http://www.eclipse.org/tptp/home/documents/communityresources.php#profile - finde ich nur sehr einfach gestrickte Java-Apps. Auch die Beispiele für das Testen einer URL (TPTP URL Test), das ja sonst eine feine Sache ist, beschränkt sich auf super-einfachen HTTP Verkehr. (Einfache Servlets). Meine gebauten (generierten) JUnits und TestCases, etc. funzen natürlch nicht mit unserer App, weil das ohne HTTP-Session nicht funktioniert. POST statt GET ist zwar möglich, aber jetzt bräuchte ich beispielsweise noch eine Möglichkeit eine Session zu erzeugen und als Referenz mit anzugeben. Oder so ähnlich. Gut wäre auch das Emulieren eines ganzen HTTP Verkehrs, so daß server-seitige Objekte peu-a-peu angelegt werden.

Vielleicht hat jemand Erfahrung. Ich hoffe, daß ich das Problem einigermaßen verständlich auf den Punkt bringen konnte. Sonst helfen manchmal auch schon Nachfragen.

Sollte ich zu einer Lösung kommen, werde ich diese dann hier der Vollständigkeit halber die Tage auch noch anfügen.

Frohes Schaffen, Gruß
André


----------



## AyKay (7. Jan 2009)

Okay, kleiner Nachtrag zum Ende des Tages. Ich _scheine_ wohl in die richtige Richtung gedacht zu haben.
Also mit einer Aneinanderreihung von HTTP requests in einem .testsuite (TPTP URL TEST) muß der Austausch mit dem Server nur ab einem frühen Punkt gestartet werden, an dem man sich einloggt, so daß eine Session mit dem TestCode als Client zustande kommt. Soweit verständlich?

Das _sollte_ klappen. Nach Adam Riese. Einfach mit mehreren HTTP Requests einen regulären Austausch mit der Web-App simulieren, dann _sollten_ Sessions, etc. kein Problem sein.

Klappt bei mir leider nicht, weil schon das Abfragen der Startseite (index.jspx), die dem Login dient (in unserem Fall dem Auto-Login), läuft *nicht *durch, sondern wird mit einem Status-Code 400 beendet. Das ist schonmal schocking. 400!



			
				SELFHTML hat gesagt.:
			
		

> *400 - bad request - *Die Anfrage enthält Syntaxfehler. Der Server kann die Anfrage deshalb nicht bearbeiten. Das kann beispielsweise vorkommen, wenn der verwendete Browser einen Programmierfehler aufweist und ungültige Anfragen sendet, oder ein Mensch versucht, händisch (also etwa mit telnet) mit dem Server zu kommunizieren und dabei einen Fehler macht.



Per GET an unsere index.jspx sollte ganz einfach über HTTP etwas HTML zurückgeschickt werden. Ja, der Server (locahost:8080) läuft. Im Behaviour des URL TEST habe ich genau eine Invocation. Nämlich genau den einzigen definierten HTTP Request (index.jspx). Einfacher geht es kaum.

Also das sind ja nun absolute Startschwierigkeiten bei TPTP URL TEST. Hat jemand damit Erfahrung?

Danke und Gruß
André


----------



## AyKay (9. Jan 2009)

Okay, also wir geben auf. Das Möglichkeit komplexe Web Apps zu testen, scheint über TPTP URL TEST gar nicht vorgesehen zu sein. Abgesehen davon, daß nicht mal eine vernünftige GET Abfrage an localhost:8080 funktioniert. (Status Code 400).

Die Eclipse Community hat zu dem Thema auch geschwiegen:
http://www.nabble.com/Utterly-fail-to-set-up-a-TPTP-URL-Test-to21357057.html#a21372662
Daher jetzt unsere Entscheidung, uns langfristig nach einer professionellen Lösung umzusehen.

Schönes Wochenende
André


----------



## byte (9. Jan 2009)

Warum willst Du denn zwingend Integrationstests machen? Ich würde die Unittests ausserhalb des Containers laufen lassen.

Ansonsten guck Dir z.B. mal das hier an: http://jakarta.apache.org/cactus/


----------



## AyKay (28. Jan 2009)

byto hat gesagt.:
			
		

> ...
> Ansonsten guck Dir z.B. mal das hier an: http://jakarta.apache.org/cactus/



Danke für den Tip!
Cactus macht einen ordentlichen Eindruck, beschränkt sich, so weit ich sehen kann, aber auf Testing.
Wir bräuchten auch die Möglichkeit ein Profiling (Performance, etc.) unserer App zu bauen.
Kannst Du dazu bzgl. Cactus etwas sagen?

Vielen Dank!
Gruß
André


----------



## AyKay (28. Jan 2009)

Nein, scheint nicht zu funktionieren.
Hat noch jemand Erfahrung mit einem anderen Tool als TPTP für Testing UND Profiling (open-source?)
Eine Zusammenstellung habe ich hier gefunden: http://www.oio.de/j2ee-testtools.htm


----------



## maki (28. Jan 2009)

UnitTests != Profiling

Starte doch deine WebApp in TPTP  und stelle dann anfragen per browser, wenn du an einem Profiler interessiert bist.

Falls du dich für Unittests interessierst, dann gibt es oft spezielle Libs für das Webframework deiner Wahl  (struts1, JSF,..), manche (shale/struts2) bringen schon Unittest Unterstützung von Haus aus mit). Das erwähnte Cactus wäre eine Möglichkeit für Integrationstests, für funktionale Tests eignet sich Selenium.


----------



## AyKay (29. Jan 2009)

Danke für den Hinweis auf Selenium. Schaue ich mir noch mal an. Es sieht so aus, als könnten wir alles mit Cactus und JMeter umsetzen.



			
				maki hat gesagt.:
			
		

> UnitTests != Profiling


Das ist ja das von mir beschriebene Problem bei einem ausschließlichem Einsatz von Cactus. (So weit ich das beurteilen kann.)



			
				maki hat gesagt.:
			
		

> Starte doch deine WebApp in TPTP  [...]


Das geht leider nicht. (Siehe mein Urproblem.)
Mit TPTP fing eigenlich alles so vielversprechend an (Auto-Generierung der HyadesTestCases, etc.). Wäre super, wenn wir ein TestUnit- UND Profiling-Framework, dazu auch noch als Eclipse-PlugIn, nutzen könnten. Leider entpuppte sich TPTP dann doch als Mogelpackung. Jedenfalls bei der Emulierung des Netz-Betriebes.
Wenn jemand ein TPTP URL TEST erfolgreich durchgeführt hat, (ohne den de facto _nicht vorhandenen_ 'HTTP Recorder', wie er im Tutorial erwähnt wird), kann er mir gerne beschreiben, wie das gehen soll. Unsere App kann man damit nicht ansprechen (responseCode 400, s.o.). Sogar eine super-einfache Applikation, die nur eine index.html hat, liefert ResponseCode 400. Pfad (/SimpleWebSite/index.html), Hostname (127.0.0.1 oder localhost), Port (8080) sind alle nach Vorgabe eingestellt. TPTP ist wohl als UnitTest ganz klasse, im Web Bereich für uns aber nicht nutzbar.

Was dagegen besser zu sein scheint (nach unseren ersten Versuchen) ist Cactus und für das Profiling JMeter. Leider im Fall von JMeter außerhalb von Eclipse.

frohes Schaffen!


----------

