Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

(c) 2002 by Peter Roßbach – JAX Test infected: Web Testing mit HttpUnit und Cactus Framework Peter Roßbach

Ähnliche Präsentationen


Präsentation zum Thema: "(c) 2002 by Peter Roßbach – JAX Test infected: Web Testing mit HttpUnit und Cactus Framework Peter Roßbach"—  Präsentation transkript:

1 (c) 2002 by Peter Roßbach – JAX Test infected: Web Testing mit HttpUnit und Cactus Framework Peter Roßbach

2 (c) 2002 by Peter Roßbach – JAX Agenda Web Komponenten Test Web Komponenten Test JUnit JUnit HTTPUnit HTTPUnit ServletUnit ServletUnit Cactus Cactus Build Verification Build Verification cruisecontrol cruisecontrol Anmerkungen Anmerkungen

3 (c) 2002 by Peter Roßbach – JAX Motivation XP-Techniken für das Testen XP-Techniken für das Testen Kostengünstige Lösung für das Testen von Web-Anwendungen Kostengünstige Lösung für das Testen von Web-Anwendungen Automatisierung der Erzeugung Automatisierung der Erzeugung Automatisierte Tests Automatisierte Tests Protokollierung und Benachrichtigung der Tests Protokollierung und Benachrichtigung der Tests Teamentwicklung fördern Teamentwicklung fördern

4 (c) 2002 by Peter Roßbach – JAX

5 (c) 2002 by Peter Roßbach – JAX Testing Game Simple Design Continuous Integration Coding Standards Short Releases Planning Game Refactoring Programming Testing

6 (c) 2002 by Peter Roßbach – JAX Ziele Unit Test während der Entwicklung Unit Test während der Entwicklung Funktionale Test für Web- Anwendungen Funktionale Test für Web- Anwendungen Automatisierung der Erzeugnisse Automatisierung der Erzeugnisse Versionisierung Versionisierung Protokollierung Protokollierung Lasttest Lasttest

7 (c) 2002 by Peter Roßbach – JAX Effektiv Testen möglichst zeitnah zur Programmierung automatisiert und damit wiederholbar muss Spaß machen Testen so oft wie Kompilieren so einfach wie Kompilieren Fehler finden, nicht Fehlerfreiheit beweisen

8 (c) 2002 by Peter Roßbach – JAX TestArten Unit Tests White-Box Tests isolierter Einheiten Akzeptanztests Black-Box Tests funktionaler Anforderungen weitere Systemtests Lasttests Performanztests Usability-Tests...

9 (c) 2002 by Peter Roßbach – JAX Junit Java-Framework zum Schreiben und Ausführen automatischer Unit Tests Tests werden in Java codiert. Entsprechende Frameworks sind für andere Programmiersprachen erhältlich. Autoren Autoren Kent Beck and Erich Gamma Kent Beck and Erich Gamma

10 (c) 2002 by Peter Roßbach – JAX JUNIT Testprozess Rumpf anlegen KlasseTestcase Testcase schreiben Anforderung klären Kompilieren Funktionalität implementieren Testcase erfolgreich Testcase scheitert Anforderung verfeinern Refactoring Testcase ausführen Nächste Anforderung

11 (c) 2002 by Peter Roßbach – JAX JUNIT PizzaBinderTest package de.objektpark.jspTutorial.model; import junit.framework.*; public class PizzaBinderTest extends TestCase { public PizzaBinderTest (String testName) public PizzaBinderTest (String testName) { super(testName); } { super(testName); } public static Test suite() { public static Test suite() { return new TestSuite(PizzaBinderTest.class); } protected void setUp() throws Exception {... } protected void setUp() throws Exception {... } protected void tearDown() throws Exception {... } protected void tearDown() throws Exception {... } public void testBind() throws Exception { public void testBind() throws Exception { List objects = null; List objects = null; objects = retriever("pizza"); objects = retriever("pizza"); assert(" no pizza bind", assert(" no pizza bind", objects.get(0) instanceof Pizza); objects.get(0) instanceof Pizza); }}

12 (c) 2002 by Peter Roßbach – JAX JUNIT SwingUi

13 (c) 2002 by Peter Roßbach – JAX JUNIT Testtipps Jeder Aspekt der Klasse sollte einem Test unterzogen werden: Jeder Aspekt der Klasse sollte einem Test unterzogen werden: Randparameter Test Randparameter Test Unzulässige Werte Unzulässige Werte Schleifeninvarianten Schleifeninvarianten Sie können nur die Funktionsergebnisse testen: Sie können nur die Funktionsergebnisse testen: Returnwerte Returnwerte Zustand der Objekte Zustand der Objekte

14 (c) 2002 by Peter Roßbach – JAX JUNIT Testtipps Schreiben Sie kleine Methoden in Ihren Klassen und in den TestCases. Schreiben Sie kleine Methoden in Ihren Klassen und in den TestCases. Schreiben Sie die Test i.d. Regel vor Implementierung oder nahezu zeitgleich. Schreiben Sie die Test i.d. Regel vor Implementierung oder nahezu zeitgleich. Keine gleichzeitige Verbesserung des Codes und Korrektur von Fehlern. Keine gleichzeitige Verbesserung des Codes und Korrektur von Fehlern.

15 (c) 2002 by Peter Roßbach – JAX JUNIT Testtipps Trennung von Trennung von Bug Fixing Bug Fixing Refactoring Refactoring Re-Design Re-Design Neue Funktionalitäten Neue Funktionalitäten Testvorgehen Testvorgehen Bottom Up Bottom Up Top Down Top Down

16 (c) 2002 by Peter Roßbach – JAX JUNIT Web-Testumgebung JUNIT 3.7 JUNIT 3.7 Jakarta Ant Jakarta Ant Intellij IDEA 2.5 Intellij IDEA 2.5 Jakarta Tomcat od Jakarta Tomcat od James James HttpUnit HttpUnit Cactus Cactus CruiseControl CruiseControl

17 (c) 2002 by Peter Roßbach – JAX Agenda Testing J2EE J2EE Testanforderung Testanforderung HttpUnit HttpUnit SerlvetUnit SerlvetUnit Cactus Cactus

18 (c) 2002 by Peter Roßbach – JAX J2EE Umgebung ClientApplikations LogikEIS (X)HTML / XML Java Applet (Java) Application J2EE Application Server Web Container EJB Container Java APIs Session Beans Entity Beans TagLibsServletsJSPs RDMS Java App Mail Server Corba JDBC Java Mail RMI IIOP JNDI JMS DS Message Queue MessageDriven Beans

19 (c) 2002 by Peter Roßbach – JAX J2EE Test Anforderung Trennung von Kommunikation und Funktionalität Trennung von Kommunikation und Funktionalität Testbarkeit der Komponenten im Entwurf berücksichtigen Testbarkeit der Komponenten im Entwurf berücksichtigen Verwendung des erprobten JUNIT-Framework Verwendung des erprobten JUNIT-Framework Test von Java Klassen ohne Server Deployment Test von Java Klassen ohne Server Deployment Test von Servlet/JSP oder EJB, die auf dem Server ablaufen Test von Servlet/JSP oder EJB, die auf dem Server ablaufen

20 (c) 2002 by Peter Roßbach – JAX J2EE Test Vorgehen Funktionaler Unit Test Funktionaler Unit Test HttpUnit HttpUnit Code + Logik Unit Test Code + Logik Unit Test Mock Objekte Mock Objekte ServletUnit ServletUnit Integration Unit Test Integration Unit Test Cactus Cactus

21 (c) 2002 by Peter Roßbach – JAX HTTPUnit HTTPUnit basiert auf JUNIT HTTPUnit basiert auf JUNIT HTTPUnit nutzt JTidy zum HTML Parsing und Xerces für XML HTTPUnit nutzt JTidy zum HTML Parsing und Xerces für XML Remote Test für HTTP Server Remote Test für HTTP Server OpenSource Lizenz OpenSource Lizenz Autor ist Russel Gold Autor ist Russel Gold Aktuelle Version ist 1.3 Aktuelle Version ist 1.3 Unterstützung Servlet API >=2.0 Unterstützung Servlet API >=2.0

22 (c) 2002 by Peter Roßbach – JAX HTTPUnit Eigenschaften Cookie Support Cookie Support HTTP Authentification HTTP Authentification SSL Support SSL Support Response Response HTML als Objekte HTML als Objekte XML als DOM XML als DOM Test für alle Klassen Test für alle Klassen Eigener Pseudo Web Server Eigener Pseudo Web Server Servlet Emulation Servlet Emulation

23 (c) 2002 by Peter Roßbach – JAX HTTPUnit Architektur Testclient Web Server Servlet Container Junit TestRunner HttpUnit TestCase Servlet JSP Cgi-bin Ressourcen HttpUnit Web- Conversation

24 (c) 2002 by Peter Roßbach – JAX HTTPUnit Klassen WebConversation Web-Browser Emulation, Cookie Management, Relative Url, Request/Response Ausführen / HTTP u. HTTPS GetMethodWebRequest HTTP GET Request PostMethodWebRequest HTTP POST Request WebResponse Ergebnis eines Requests WebLink HTML Link im WebResponse WebForm HTML Form im WebResponse SubmitButton FROM Submit Buttons WebTable HTML Table im WebResponse TableCell HTML Table Cell WebFrame HTML Frameset im WebResponse HttpUnitOptions Globale Options

25 (c) 2002 by Peter Roßbach – JAX HTTPUnit Login Seite

26 (c) 2002 by Peter Roßbach – JAX HTTPUnit JSP_indexTest public class JSP_indexTest extends Testcase {... public void testLogin() throws Exception { WebConversation wc = new WebConversation(); WebResponse resp = wc.getResponse(getHostPath()); WebLink link = resp.getLinkWith("Anmelden"); resp = wc.getResponse(link.getRequest()); assertIncludeForm(resp, 1); WebForm form = resp.getForms()[0] ; assertLoginForm(form); assertLoginCustomer(wc, form.getRequest(),"3"); }... }

27 (c) 2002 by Peter Roßbach – JAX HTTPUnit JSP_indexTest private void assertIncludeForm( WebResponse aResponse, int expectedforms) throws Exception { WebForm[] forms = aResponse.getForms(); if (expectedforms > 0) { assertNotNull("login with no fields", forms); int length = forms.length; assert("Expected " + expectedforms, expectedforms == length); } else { assert("No forms expected", null != forms); }

28 (c) 2002 by Peter Roßbach – JAX HTTPUnit JSP_indexTest private void assertLoginForm(WebForm form) throws Exception { String[] parameterNames = form.getParameterNames(); int length = parameterNames.length; assert("Number of parameters wrong -- was <" + length + "> expected ", 9 == length); assertEquals("First parameter doAction", "doAction", parameterNames[0]); assertEquals("First parameter id", "id", parameterNames[1]); assertEquals("First parameter firstname", "firstname", parameterNames[2]); assertEquals("First parameter lastname", "lastname", parameterNames[3]);... }

29 (c) 2002 by Peter Roßbach – JAX HTTPUnit JSP_indexTest private void assertLoginCustomer( WebConversation wc, WebRequest req, String id) throws Exception { req.setParameter("id", id); WebResponse resp = wc.getResponse(req); assertIncludeForm(resp, 1); assertNotNull( (resp.getForms()[0]).getSubmitButton("next")); }

30 (c) 2002 by Peter Roßbach – JAX IDEA Integration Junit Ant Editor

31 (c) 2002 by Peter Roßbach – JAX HTTPUnit Demo Start JBuilder oder IDEA Start JBuilder oder IDEA Start Tomcat mit jspTutorial Start Tomcat mit jspTutorial Start Junit Testcase Start Junit Testcase Bewertung des Ergebnisses Bewertung des Ergebnisses Inside Code Inside Code Änderung der Testcases Änderung der Testcases

32 (c) 2002 by Peter Roßbach – JAX HTTPUnit Anmerkungen Blackbox Test Blackbox Test Seitenablaufplan als Basis der Testfalldefinition Seitenablaufplan als Basis der Testfalldefinition Kontrolle des Design Kontrolle des Design Kontrolle der Links Kontrolle der Links Kontrolle zwischen Entwickler und Designer Kontrolle zwischen Entwickler und Designer XML und HTML Ausgabe testbar XML und HTML Ausgabe testbar Unabhängigkeit von Server Technologie (ASP,JSP,PHP) Unabhängigkeit von Server Technologie (ASP,JSP,PHP)

33 (c) 2002 by Peter Roßbach – JAX Cactus 1.2 Neues Jakarta Projekt aus der J2EEUnit entstanden Neues Jakarta Projekt aus der J2EEUnit entstanden Container Side Testing Container Side Testing Testcases haben Client und Remote Bestandteil Testcases haben Client und Remote Bestandteil Deployment der Testcases auf dem Server Deployment der Testcases auf dem Server Autor ist Vincent Massol Autor ist Vincent MassolVincent MassolVincent Massol

34 (c) 2002 by Peter Roßbach – JAX Cactus Eigenschaften Test Prüfung auf dem Client und dem Server Test Prüfung auf dem Client und dem Server Testen von Situationen, die nur auf dem Server existieren Support von Servlet API 2.2 und 2.3 Testen von Situationen, die nur auf dem Server existieren Support von Servlet API 2.2 und 2.3 Getestet mit Tomcat 3.2.x, x; Resin 1.2,1.3 ; Weblogic 5.1, 6.x Getestet mit Tomcat 3.2.x, x; Resin 1.2,1.3 ; Weblogic 5.1, 6.x Umfangreiche Testcases und gute Dokumentation Umfangreiche Testcases und gute Dokumentation

35 (c) 2002 by Peter Roßbach – JAX Cactus Architektur Testclient Web Server Servlet Container Junit TestRunner Server seitige Testklassen Cactus TestCase Cactus Redirector Proxy Cactus TestCase

36 (c) 2002 by Peter Roßbach – JAX Cactus ServletTestCase AttributeKlasse configjavax.servlet.ServletConfig sessionjavax.servlet.http.HttpSession responsejavax.servlet.http.HttpServletResponse requestjavax.servlet.http.HttpServletRequest Implizite Attribute der ServletTestCase Klasse

37 (c) 2002 by Peter Roßbach – JAX Cactus Servlet Example I public void testReadServletOutputStream() throws IOException { SampleServlet servlet = new SampleServlet(); servlet.doGet(request, response); } public void endReadServletOutputStream (HttpURLConnection theConnection) throws IOException { assertEquals(" A GET request ", AssertUtils.getResponseAsString(theConnection)); }

38 (c) 2002 by Peter Roßbach – JAX Cactus Servlet Example II public void beginSendParams(ServletTestRequest theRequest) { theRequest.addParameter("param1", "value1"); theRequest.addParameter("param2", "value2"); } public void testSendParams() { SampleServlet servlet = new SampleServlet(); Hashtable params = servlet.getRequestParameters(request); assert(params.get("param1") != null); assert(params.get("param2") != null); assertEquals("value1", params.get("param1")); assertEquals("value2", params.get("param2")); }

39 (c) 2002 by Peter Roßbach – JAX Cactus Servlet Example III public void beginXXX(WebRequest theRequest) { theRequest.setURL("jakarta.apache.org", "/mywebapp", "/test/test.jsp", null, null); theRequest.addCookie("cookiename", "cookievalue"); } public void testXXX() { MyServletToTest servlet = new MyServletToTest(); servlet.init(config); servlet.methodToTest(); // Servlet methods assertEquals("someValue", session.getAttribute("someAttribute")); assertEquals("jakarta.apache.org", request.getServerName()); } public void endXXX(WebResponse theResponse) { cookie = theResponse.getCookie("cookiename"); assertEquals("cookievalue", cookie.getValue()); assertEquals("some content here", theResponse.getText()); }

40 (c) 2002 by Peter Roßbach – JAX Cactus JspTestCase AttributeKlasse configjavax.servlet.ServletConfig session javax.servlet.http HttpSession response javax.servlet.http HttpServletResponse requestjavax.servlet.http.HttpServletRequest outjavax.servlet.jsp.JspWriter pageContext org.apache.cactus.server.PageContextWarp per Implizite Attribute der JspTestCase Klasse

41 (c) 2002 by Peter Roßbach – JAX Cactus JSP Example I public class ForwardTest extends JspTestCase {... public void testForward() throws ServletException,IOException { pageContext.forward("/test/test.jsp") ; } public void endForward(HttpURLConnection theConnection) throws IOException { StringBuffer sb = new StringBuffer(); BufferedReader input = new BufferedReader( new InputStreamReader(theConnection.getInputStream())); while (null != ((String str = input.readLine()))) { sb.append(str); } input.close (); assertEquals( " Hello ! ", sb.toString()); }

42 (c) 2002 by Peter Roßbach – JAX Cactus JSP Example II public class ForwardTest extends JspTestCase {... public void testForward() throws ServletException,IOException { pageContext.forward("/test/test.jsp") ; } public void endForward(WebResponse theResponse) { assertEquals( " Hello ! ", theResponse.getText() ); }

43 (c) 2002 by Peter Roßbach – JAX Cactus EJB Example a public class ConverterTest extends ServletTestCase {... private Converter converter ; public void setUp() throws Exception { Context ctx = new InitialContext(); ConverterHome home = (ConverterHome) PortableRemoteObject.narrow( ctx.lookup("java:comp/ejb/Converter"),ConverterHome.class); this.converter = home.create(); }... }

44 (c) 2002 by Peter Roßbach – JAX Cactus EJB Example b public class ConverterTest extends ServletTestCase {... public void testConvert() throws Exception { assertNotNull("Cant access Converter", converter) ; double dollar = this.converter.convertYenToDollar(100.0); assertEquals("dollar", 1.0, dollar, 0.01); } public void tearDown() throws Exception { if( converter != null) this.converter.remove() ; }

45 (c) 2002 by Peter Roßbach – JAX Cactus EJB Example c ServletRedirector org.apache.cactus.server.ServletTestRedirector ServletRedirector /ServletRedirector/ [...] ejb/Converter Session org.apache.cactus.sample.ejb.ConverterHome org.apache.cactus.sample.ejb.Converter

46 (c) 2002 by Peter Roßbach – JAX Cactus Demo Test, ob Session und ServletContext korrekt gestartet sind Test, ob Session und ServletContext korrekt gestartet sind Pizza und Ingredient testen Pizza und Ingredient testen TagLib Test im Build Verification-Abschnitt TagLib Test im Build Verification-Abschnitt

47 (c) 2002 by Peter Roßbach – JAX Cactus Anmerkungen White Box Test White Box Test Unterstützung vieler Servlet Container Unterstützung vieler Servlet Container Remote Testing via HTTP Remote Testing via HTTP Test von Client und Server Zustände Test von Client und Server Zustände Pro Testfall zwei HTTP Verbindungen ( response, result) Pro Testfall zwei HTTP Verbindungen ( response, result) Testbarkeit aller J2EE Komponenten Testbarkeit aller J2EE Komponenten Version 1.3 verfügbar Version 1.3 verfügbar

48 (c) 2002 by Peter Roßbach – JAX Agenda Integration Build Verfication Build Verfication Ant Ant CruiseControl CruiseControl

49 (c) 2002 by Peter Roßbach – JAX Build Verfication Tägliche Integration der Änderung Tägliche Integration der Änderung Automatisches Erzeugen via ant build Automatisches Erzeugen via ant build Prepare Prepare Compile Compile Packaging Packaging Deploy Deploy Test Test Release Release

50 (c) 2002 by Peter Roßbach – JAX Build Verification Test Continuous Integration Continuous Integration Martin Fowler Martin Fowler Matthew Foemmel Matthew Foemmel Self Testing Code Self Testing Code Complete Automatic Test Complete Automatic Test Single Source Single Source Master Build Master Build Cruisecontrol 1.2.1a Cruisecontrol 1.2.1a

51 (c) 2002 by Peter Roßbach – JAX BVT Architektur CruiseControl Ant build resourcesrcweb Project Web Client Test Web Container buildservlet Source checking CVS files checkout masterbuild cruisecontrol Build timer test deploy produce JMX Admin Mail Client Java Mail Logfiles protocol

52 (c) 2002 by Peter Roßbach – JAX BVT CruiseControl

53 (c) 2002 by Peter Roßbach – JAX BVT JMX Admin

54 (c) 2002 by Peter Roßbach – JAX BVT Demo Starten der Dienste Starten der Dienste Einbringen einer Änderung Einbringen einer Änderung Beobachten des Integrationslaufs Beobachten des Integrationslaufs Benachrichtigung Benachrichtigung Anschauen der Protokolle Anschauen der Protokolle Administration Administration

55 (c) 2002 by Peter Roßbach – JAX BVT Ergebnisse I Verantwortung des Teams wächst Verantwortung des Teams wächst Hohe Sicherheit der Stabilität der Änderung Hohe Sicherheit der Stabilität der Änderung Anzahl der TestCases wächst stärker vor Releases Anzahl der TestCases wächst stärker vor Releases Nicht der gesamte Code muss getestet werden Nicht der gesamte Code muss getestet werden Testfälle und Abdeckung müssen beobachtet werden -> Review der Testfälle Testfälle und Abdeckung müssen beobachtet werden -> Review der Testfälle

56 (c) 2002 by Peter Roßbach – JAX BVT Ergebnisse II Zeitplan muss Testfall- Anpassungen bei ReDesign berücksichtigen Zeitplan muss Testfall- Anpassungen bei ReDesign berücksichtigen Zeitersparnisse der Integrationstest vs. Pflege der Testfälle Zeitersparnisse der Integrationstest vs. Pflege der Testfälle Review der Kodierung der Testfälle Review der Kodierung der Testfälle Konventionen und Pattern suchen Konventionen und Pattern suchen

57 (c) 2002 by Peter Roßbach – JAX Tipps und Tricks I Aufteilen der Erzeugnisse eines Projektes Aufteilen der Erzeugnisse eines Projektes Suche nach hilfreichen ant tasks Suche nach hilfreichen ant tasks Cactus,Quick,Jtidy,Junit, jspc Cactus,Quick,Jtidy,Junit, jspc Erweiterung des xsl-Skript durch Links auf die Erweiterungen Erweiterung des xsl-Skript durch Links auf die Erweiterungen Integration sollte auf Produktionsplattform ablaufen Integration sollte auf Produktionsplattform ablaufen Schnelle Reaktionen Schnelle Reaktionen

58 (c) 2002 by Peter Roßbach – JAX Tipps und Tricks II Test von verschiedenen Server mit Cactus Test von verschiedenen Server mit Cactus JSP Compiler (Tomcat JSPC) zum Syntax Check JSP Compiler (Tomcat JSPC) zum Syntax Check Automatische Installation eines Releases Automatische Installation eines Releases Markieren eines Erfolgreichen Builds mit CURRENT Tag Markieren eines Erfolgreichen Builds mit CURRENT Tag Integration von Statistiken Integration von Statistiken Anzahl Klassen vs Testklassen Anzahl Klassen vs Testklassen Anzahl erfolgreicher Builds Anzahl erfolgreicher Builds

59 (c) 2002 by Peter Roßbach – JAX Tipps und Tricks III Durchführung des Tests Durchführung des Tests Build Build JSPC Test JSPC Test Java Beans Test Java Beans Test Deployment Deployment Validierung der Deployment Descriptoren Validierung der Deployment Descriptoren Start der Server Start der Server Serverseitige Testfälle Serverseitige Testfälle Sicherung der Ergebnisse Sicherung der Ergebnisse

60 (c) 2002 by Peter Roßbach – JAX Tipps und Tricks IV Gesamtes Team bekommt CruiseControl Status Gesamtes Team bekommt CruiseControl Status Verantwortlichen für die Stabilität des Integrationstest bennenen Verantwortlichen für die Stabilität des Integrationstest bennenen Besetzung der Rolle Deployers Besetzung der Rolle Deployers Grenze zwischen Qualitätssicherung und Entwicklertest vereinbaren Grenze zwischen Qualitätssicherung und Entwicklertest vereinbaren Wartung der TestCase einplanen Wartung der TestCase einplanen

61 (c) 2002 by Peter Roßbach – JAX Noch nicht genug! Mailto: Mailto: Play with the Tools! Play with the Tools! Lassen Sie sich von mir beraten. Lassen Sie sich von mir beraten.

62 (c) 2002 by Peter Roßbach – JAX Testtools CruiseControl JMeter Watchdog JUnit Cactus ndex.html ndex.html JUnitX JTest x.htm x.htm lw-jtest.html QACenter terhttp://www.compuware.com/products/qacen ter/ ter Jbuilder Opentools Ant Rational Test Suite

63 (c) 2002 by Peter Roßbach – JAX Test Veröffentlichungen Junit Primer er.html Test Infect EJB 2000/jw-0526-testinfect.html HttpUnit Servlet Testing Junitservlethttp://sourceforge.net/projects/junitservlet J2EEUnithttp://sourceforge.net/projects/j2eeunit/ JUnitPerf f.html JUnit best practices 2000/jw-1221-junit_p.html Continuous Integration uousIntegration.html Junit.org Articles

64 (c) 2002 by Peter Roßbach – JAX Test-Bücher Hightower/Lesiecki (Wiley 2001) Java Tools for eXtreme Programming Newkrik/Martin (Addsion Weseley 2001) Extreme Programming in Practice Splaine/Jaskiel (STQE Publishing 2001 The Web Testing Handbook Link (dpunkt verlag 2002) Unit Tests mit Java

65 (c) 2002 by Peter Roßbach – JAX JSP-Bücher Fields/Kolb (Manning 2000) Web Development with Java Server Pages Kassem et al. (Addison Wesley 2000) Designing Enterprise Applications with the Java 2 Plattform, Enterprise Edition (APM- Book) Pekowsky ( Addison Wesley 2000) JavaServer Pages Turau (IX- dpunkt 2000) Java Server Pages -Dynamische Generierung von Web-Dokumenten Avedal et al. (Wrox 2000) Professional JSP Bergsten ( OReilly 2000) JavaServerPages Rossbach/Schreiber (1999,2000) Java Server und Servlets

66 (c) 2002 by Peter Roßbach – JAX Links Sun JSP Home Page OReilly JSP Book Jakarta(Tomcat, Ant, Taglib...) Jsp Tutorial Manning Book Jason Hunter Site JawaWorldhttp://www.javaworld.com/ Beahttp://www.bea.com/ Orionhttp://www.orionserver.com/ Jrun Allaire WebApp Framework


Herunterladen ppt "(c) 2002 by Peter Roßbach – JAX Test infected: Web Testing mit HttpUnit und Cactus Framework Peter Roßbach"

Ähnliche Präsentationen


Google-Anzeigen