Date post: | 05-Apr-2015 |
Category: |
Documents |
Upload: | brigitte-angerer |
View: | 109 times |
Download: | 3 times |
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Test infected:Test infected:
Web Testing mit HttpUnit und Web Testing mit HttpUnit und Cactus FrameworkCactus Framework
Peter Roßbach Peter Roßbach
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
AgendaAgenda
Web Komponenten TestWeb Komponenten Test JUnitJUnit HTTPUnitHTTPUnit ServletUnitServletUnit CactusCactus
Build VerificationBuild Verification cruisecontrolcruisecontrol
AnmerkungenAnmerkungen
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
MotivationMotivation
XP-Techniken für das TestenXP-Techniken für das Testen Kostengünstige Lösung für das Kostengünstige Lösung für das
Testen von Web-AnwendungenTesten von Web-Anwendungen Automatisierung der ErzeugungAutomatisierung der Erzeugung Automatisierte TestsAutomatisierte Tests Protokollierung und Protokollierung und
Benachrichtigung der Tests Benachrichtigung der Tests Teamentwicklung fördernTeamentwicklung fördern
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Testing GameTesting Game
Simple Design
Continuous Integration
Coding Standards
Short Releases
Planning Game
Refactoring
Programming
Testing
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
ZieleZiele
Unit Test während der EntwicklungUnit Test während der Entwicklung Funktionale Test für Web-Funktionale Test für Web-
AnwendungenAnwendungen Automatisierung der ErzeugnisseAutomatisierung der Erzeugnisse VersionisierungVersionisierung ProtokollierungProtokollierung LasttestLasttest
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Effektiv TestenEffektiv 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
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
TestArtenTestArten Unit Tests White-Box Tests isolierter
Einheiten Akzeptanztests Black-Box Tests funktionaler
Anforderungen weitere Systemtests
Lasttests Performanztests Usability-Tests ...
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
JunitJunit
Java-Framework zum Schreiben und Ausführen automatischer Unit Tests
Tests werden in Java codiert. Entsprechende Frameworks sind
für andere Programmiersprachen erhältlich.
AutorenAutoren Kent Beck and Erich GammaKent Beck and Erich Gamma
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
JUNIT TestprozessJUNIT Testprozess
Rumpf anlegen
Klasse Testcase
Testcase schreiben
Anforderung klären
Kompilieren
Funktionalität implementieren
Testcase erfolgreich
Testcase scheitert
Anforderung verfeinern
Refactoring
Testcase ausführen
Nächste Anforderung
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
JUNIT PizzaBinderTestJUNIT PizzaBinderTestpackage de.objektpark.jspTutorial.model;package de.objektpark.jspTutorial.model;
import junit.framework.*;import junit.framework.*;
public class PizzaBinderTest extends TestCase {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);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);
}}
}}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
JUNIT TesttippsJUNIT Testtipps Jeder Aspekt der Klasse sollte Jeder Aspekt der Klasse sollte
einem Test unterzogen werden:einem Test unterzogen werden: Randparameter TestRandparameter Test Unzulässige WerteUnzulässige Werte SchleifeninvariantenSchleifeninvarianten
Sie können nur die Sie können nur die Funktionsergebnisse testen:Funktionsergebnisse testen: ReturnwerteReturnwerte Zustand der ObjekteZustand der Objekte
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
JUNIT TesttippsJUNIT Testtipps Schreiben Sie kleine Methoden Schreiben Sie kleine Methoden
in Ihren Klassen und in den in Ihren Klassen und in den TestCases.TestCases.
Schreiben Sie die Test i.d. Regel Schreiben Sie die Test i.d. Regel vor Implementierung oder vor Implementierung oder nahezu zeitgleich.nahezu zeitgleich.
Keine gleichzeitige Keine gleichzeitige Verbesserung des Codes und Verbesserung des Codes und Korrektur von Fehlern.Korrektur von Fehlern.
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
JUNIT TesttippsJUNIT Testtipps
Trennung vonTrennung von Bug FixingBug Fixing RefactoringRefactoring Re-DesignRe-Design Neue FunktionalitätenNeue Funktionalitäten
TestvorgehenTestvorgehen Bottom UpBottom Up Top DownTop Down
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
JUNIT Web-TestumgebungJUNIT Web-Testumgebung
JUNIT 3.7JUNIT 3.7 Jakarta Ant 1.4.1Jakarta Ant 1.4.1 Intellij IDEA 2.5Intellij IDEA 2.5 Jakarta Tomcat 4.0.4 od 4.1.0Jakarta Tomcat 4.0.4 od 4.1.0 James 2.0.2James 2.0.2 HttpUnitHttpUnit CactusCactus CruiseControlCruiseControl
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Agenda TestingAgenda Testing
J2EEJ2EE TestanforderungTestanforderung HttpUnitHttpUnit SerlvetUnitSerlvetUnit CactusCactus
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
J2EE UmgebungJ2EE UmgebungClient Applikations Logik EIS
(X)HTML /XML
JavaApplet
(Java)Application
J2EE Application Server
Web Container
EJB Container
Java APIs
Java APIs
Session Beans
Entity Beans
TagLibsServlets JSPs
RDMS
Java App
Mail Server
Corba
JDBC
JavaMail
RMI
IIOP
JNDI
JMS
DS
Message Queue
MessageDriven Beans
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
J2EE Test AnforderungJ2EE Test Anforderung Trennung von Kommunikation Trennung von Kommunikation
und Funktionalitätund Funktionalität Testbarkeit der Komponenten im Testbarkeit der Komponenten im
Entwurf berücksichtigenEntwurf berücksichtigen Verwendung des erprobten Verwendung des erprobten
JUNIT-FrameworkJUNIT-Framework Test von Java Klassen ohne Test von Java Klassen ohne
Server DeploymentServer Deployment Test von Servlet/JSP oder EJB, Test von Servlet/JSP oder EJB,
die auf dem Server ablaufendie auf dem Server ablaufen
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
J2EE Test VorgehenJ2EE Test Vorgehen
Funktionaler Unit TestFunktionaler Unit Test HttpUnitHttpUnit
Code + Logik Unit TestCode + Logik Unit Test Mock ObjekteMock Objekte ServletUnitServletUnit
Integration Unit TestIntegration Unit Test CactusCactus
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnitHTTPUnit
HTTPUnit basiert auf JUNITHTTPUnit basiert auf JUNIT HTTPUnit nutzt JTidy zum HTML HTTPUnit nutzt JTidy zum HTML
Parsing und Xerces für XMLParsing und Xerces für XML Remote Test für HTTP ServerRemote Test für HTTP Server OpenSource LizenzOpenSource Lizenz Autor ist Russel GoldAutor ist Russel Gold Aktuelle Version ist 1.3Aktuelle Version ist 1.3 Unterstützung Servlet API >=2.0Unterstützung Servlet API >=2.0
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit EigenschaftenHTTPUnit Eigenschaften
Cookie SupportCookie Support HTTP AuthentificationHTTP Authentification SSL SupportSSL Support ResponseResponse
HTML als ObjekteHTML als Objekte XML als DOMXML als DOM
Test für alle KlassenTest für alle Klassen Eigener Pseudo Web ServerEigener Pseudo Web Server Servlet EmulationServlet Emulation
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit ArchitekturHTTPUnit Architektur
Testclient Web ServerServlet Container
Junit TestRunner
HttpUnit TestCase
ServletJSP
Cgi-bin
Ressourcen
HttpUnit Web-
Conversation
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit KlassenHTTPUnit KlassenWebConversationWebConversation Web-Browser Emulation, Cookie Web-Browser Emulation, Cookie
Management, Relative Url, Management, Relative Url, Request/Response Ausführen / HTTP u. Request/Response Ausführen / HTTP u. HTTPSHTTPS
GetMethodWebRequestGetMethodWebRequest HTTP GET RequestHTTP GET Request
PostMethodWebRequestPostMethodWebRequest HTTP POST RequestHTTP POST Request
WebResponseWebResponse Ergebnis eines RequestsErgebnis eines Requests
WebLinkWebLink HTML Link im WebResponseHTML Link im WebResponse
WebFormWebForm HTML Form im WebResponseHTML Form im WebResponse
SubmitButtonSubmitButton FROM Submit ButtonsFROM Submit Buttons
WebTableWebTable HTML Table im WebResponseHTML Table im WebResponse
TableCellTableCell HTML Table CellHTML Table Cell
WebFrameWebFrame HTML Frameset im WebResponseHTML Frameset im WebResponse
HttpUnitOptionsHttpUnitOptions Globale OptionsGlobale Options
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit JSP_indexTestHTTPUnit 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");
}
...
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit JSP_indexTestHTTPUnit JSP_indexTestprivate 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);
}
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit JSP_indexTestHTTPUnit JSP_indexTestprivate void assertLoginForm(WebForm form) throws Exception {
String[] parameterNames = form.getParameterNames();
int length = parameterNames.length;
assert("Number of parameters wrong -- was <" + length
+ "> expected <10>", 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]);
...
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit JSP_indexTestHTTPUnit 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"));
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
IDEA IntegrationIDEA IntegrationJunit
AntEditor
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit DemoHTTPUnit Demo
Start JBuilder oder IDEAStart JBuilder oder IDEA Start Tomcat mit jspTutorialStart Tomcat mit jspTutorial Start Junit TestcaseStart Junit Testcase Bewertung des ErgebnissesBewertung des Ergebnisses Inside CodeInside Code Änderung der TestcasesÄnderung der Testcases
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
HTTPUnit AnmerkungenHTTPUnit Anmerkungen Blackbox TestBlackbox Test Seitenablaufplan als Basis der Seitenablaufplan als Basis der
TestfalldefinitionTestfalldefinition Kontrolle des DesignKontrolle des Design Kontrolle der LinksKontrolle der Links Kontrolle zwischen Entwickler Kontrolle zwischen Entwickler
und Designerund Designer XML und HTML Ausgabe testbarXML und HTML Ausgabe testbar Unabhängigkeit von Server Unabhängigkeit von Server
Technologie (ASP,JSP,PHP)Technologie (ASP,JSP,PHP)
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus 1.2Cactus 1.2
Neues Jakarta Projekt aus der Neues Jakarta Projekt aus der J2EEUnit entstandenJ2EEUnit entstanden
Container Side TestingContainer Side Testing Testcases haben Client und Testcases haben Client und
Remote BestandteilRemote Bestandteil Deployment der Testcases auf Deployment der Testcases auf
dem Serverdem Server Autor ist Vincent MassolAutor ist Vincent Massol
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus EigenschaftenCactus Eigenschaften Test Prüfung auf dem Client und Test Prüfung auf dem Client und
dem Serverdem Server Testen von Situationen, die nur Testen von Situationen, die nur
auf dem Server existieren auf dem Server existieren Support von Servlet API 2.2 und Support von Servlet API 2.2 und 2.32.3
Getestet mit Tomcat 3.2.x, 3.3 Getestet mit Tomcat 3.2.x, 3.3 4.x; Resin 1.2,1.3 ; Weblogic 5.1, 4.x; Resin 1.2,1.3 ; Weblogic 5.1, 6.x6.x
Umfangreiche Testcases und Umfangreiche Testcases und gute Dokumentationgute Dokumentation
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus ArchitekturCactus Architektur
Testclient Web ServerServlet Container
Junit TestRunner
Server seitige
Testklassen
Cactus TestCase
Cactus Redirector
Proxy
Cactus TestCase
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus ServletTestCaseCactus ServletTestCase
AttributeAttribute KlasseKlasseconfigconfig javax.servlet.ServletConfigjavax.servlet.ServletConfig
sessionsession javax.servlet.http.HttpSessionjavax.servlet.http.HttpSession
responseresponse javax.servlet.http.HttpServletResponsejavax.servlet.http.HttpServletResponse
requestrequest javax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletRequest
Implizite Attribute der ServletTestCase Klasse
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus Servlet Example ICactus Servlet Example I
public void testReadServletOutputStream() throws IOException
{
SampleServlet servlet = new SampleServlet();
servlet.doGet(request, response);
}
public void endReadServletOutputStream
(HttpURLConnection theConnection)
throws IOException
{
assertEquals("<html><head/><body>A GET request</body></html>",
AssertUtils.getResponseAsString(theConnection));
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus Servlet Example IICactus 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"));
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus Servlet Example IIICactus 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());
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus JspTestCaseCactus JspTestCase
AttributeAttribute KlasseKlasseconfigconfig javax.servlet.ServletConfigjavax.servlet.ServletConfig
sessionsession javax.servlet.http HttpSessionjavax.servlet.http HttpSession
responseresponse javax.servlet.http HttpServletResponsejavax.servlet.http HttpServletResponse
requestrequest javax.servlet.http.HttpServletRequestjavax.servlet.http.HttpServletRequest
outout javax.servlet.jsp.JspWriterjavax.servlet.jsp.JspWriter
pageContextpageContext org.apache.cactus.server.PageContextWarporg.apache.cactus.server.PageContextWarpperper
Implizite Attribute der JspTestCase Klasse
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus JSP Example ICactus JSP Example Ipublic 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( "<html><body>Hello !</body></html>", sb.toString());
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus JSP Example IICactus 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(
"<html><body>Hello !</body></html>",
theResponse.getText() );
}
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus EJB Example aCactus EJB Example apublic 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();
}
...
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus EJB Example bCactus EJB Example bpublic class ConverterTest extends ServletTestCase {
...
public void testConvert() throws Exception {
assertNotNull("Can‘t 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() ;
}
}
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus EJB Example cCactus EJB Example c<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
<web-app>
<servlet> <servlet-name>ServletRedirector</servlet-name> <servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class> </servlet>
<servlet-mapping> <servlet-name>ServletRedirector</servlet-name> <url-pattern>/ServletRedirector/</url-pattern> </servlet-mapping>
[...]
<ejb-ref>
<ejb-ref-name>ejb/Converter</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>org.apache.cactus.sample.ejb.ConverterHome</home> <remote>org.apache.cactus.sample.ejb.Converter</remote>
</ejb-ref>
</web-app>
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus DemoCactus Demo
Test, ob Session und Test, ob Session und ServletContext korrekt gestartet ServletContext korrekt gestartet sindsind
Pizza und Ingredient testenPizza und Ingredient testen TagLib Test im “Build TagLib Test im “Build
Verification“-AbschnittVerification“-Abschnitt
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Cactus AnmerkungenCactus Anmerkungen
White Box TestWhite Box Test Unterstützung vieler Servlet ContainerUnterstützung vieler Servlet Container Remote Testing via HTTPRemote Testing via HTTP Test von Client und Server ZuständeTest von Client und Server Zustände Pro Testfall zwei HTTP Verbindungen Pro Testfall zwei HTTP Verbindungen
( response, result)( response, result) Testbarkeit aller J2EE KomponentenTestbarkeit aller J2EE Komponenten Version 1.3 verfügbarVersion 1.3 verfügbar
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Agenda IntegrationAgenda Integration
Build VerficationBuild Verfication AntAnt CruiseControlCruiseControl
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Build VerficationBuild Verfication
Tägliche Integration der Tägliche Integration der ÄnderungÄnderung
Automatisches Erzeugen via ant Automatisches Erzeugen via ant buildbuild PreparePrepare CompileCompile PackagingPackaging DeployDeploy TestTest ReleaseRelease
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Build Verification TestBuild Verification Test
Continuous IntegrationContinuous Integration Martin FowlerMartin Fowler Matthew FoemmelMatthew Foemmel
Self Testing CodeSelf Testing Code Complete Automatic TestComplete Automatic Test Single SourceSingle Source Master BuildMaster Build Cruisecontrol 1.2.1aCruisecontrol 1.2.1a
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
BVT ArchitekturBVT ArchitekturCruiseControl
Ant build
resourcesrcweb
Project
WebClient
Test Web Container
buildservlet
Source
checking
CVS
files
checkout
masterbuild
cruisecontrol
Build timer
test
deploy
produce
JMX AdminMail Client
JavaMail
Logfiles
protocol
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
BVT DemoBVT Demo
Starten der DiensteStarten der Dienste Einbringen einer ÄnderungEinbringen einer Änderung Beobachten des Beobachten des
IntegrationslaufsIntegrationslaufs BenachrichtigungBenachrichtigung Anschauen der ProtokolleAnschauen der Protokolle AdministrationAdministration
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
BVT Ergebnisse IBVT Ergebnisse I
Verantwortung des Teams Verantwortung des Teams wächstwächst
Hohe Sicherheit der Stabilität Hohe Sicherheit der Stabilität der Änderungder Änderung
Anzahl der TestCases wächst Anzahl der TestCases wächst stärker vor Releasesstärker vor Releases
Nicht der gesamte Code muss Nicht der gesamte Code muss getestet werdengetestet werden
Testfälle und Abdeckung Testfälle und Abdeckung müssen beobachtet werden -> müssen beobachtet werden -> Review der TestfälleReview der Testfälle
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
BVT Ergebnisse IIBVT Ergebnisse II
Zeitplan muss Testfall- Zeitplan muss Testfall- Anpassungen bei ReDesign Anpassungen bei ReDesign berücksichtigenberücksichtigen
Zeitersparnisse der Zeitersparnisse der Integrationstest vs. Pflege der Integrationstest vs. Pflege der TestfälleTestfälle
Review der Kodierung der Review der Kodierung der TestfälleTestfälle
Konventionen und Pattern Konventionen und Pattern suchen suchen
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Tipps und Tricks ITipps und Tricks I
Aufteilen der Erzeugnisse eines Aufteilen der Erzeugnisse eines ProjektesProjektes
Suche nach hilfreichen ant tasksSuche nach hilfreichen ant tasks Cactus,Quick,Jtidy,Junit, jspcCactus,Quick,Jtidy,Junit, jspc
Erweiterung des xsl-Skript durch Erweiterung des xsl-Skript durch Links auf die ErweiterungenLinks auf die Erweiterungen
Integration sollte auf Integration sollte auf Produktionsplattform ablaufenProduktionsplattform ablaufen
Schnelle ReaktionenSchnelle Reaktionen
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Tipps und Tricks IITipps und Tricks II
Test von verschiedenen Server Test von verschiedenen Server mit Cactusmit Cactus
JSP Compiler (Tomcat JSPC) JSP Compiler (Tomcat JSPC) zum Syntax Checkzum Syntax Check
Automatische Installation eines Automatische Installation eines ReleasesReleases
Markieren eines Erfolgreichen Markieren eines Erfolgreichen Builds mit CURRENT TagBuilds mit CURRENT Tag
Integration von StatistikenIntegration von Statistiken Anzahl Klassen vs TestklassenAnzahl Klassen vs Testklassen Anzahl erfolgreicher Builds Anzahl erfolgreicher Builds
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Tipps und Tricks IIITipps und Tricks III
Durchführung des TestsDurchführung des Tests BuildBuild JSPC TestJSPC Test Java Beans TestJava Beans Test DeploymentDeployment Validierung der Deployment Validierung der Deployment
DescriptorenDescriptoren Start der ServerStart der Server Serverseitige TestfälleServerseitige Testfälle Sicherung der ErgebnisseSicherung der Ergebnisse
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Tipps und Tricks IVTipps und Tricks IV
Gesamtes Team bekommt Gesamtes Team bekommt CruiseControl Status EmailCruiseControl Status Email
Verantwortlichen für die Verantwortlichen für die Stabilität des Integrationstest Stabilität des Integrationstest bennenenbennenen
Besetzung der Rolle DeployersBesetzung der Rolle Deployers Grenze zwischen Grenze zwischen
Qualitätssicherung und Qualitätssicherung und Entwicklertest vereinbaren Entwicklertest vereinbaren
Wartung der TestCase einplanenWartung der TestCase einplanen
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Noch nicht genug!Noch nicht genug!
Mailto: [email protected]: [email protected] „„Play with the Tools!“Play with the Tools!“ http://www.tom4.dehttp://www.tom4.de Lassen Sie sich von mir beraten.Lassen Sie sich von mir beraten.
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
TesttoolsTesttoolsCruiseControlCruiseControl http://cruisecontrol.sourceforge.net/http://cruisecontrol.sourceforge.net/
JMeterJMeter http://java.apache.org/jmeter/http://java.apache.org/jmeter/
WatchdogWatchdog http://jakarta.apache.org/watchdog/http://jakarta.apache.org/watchdog/
JUnitJUnit http://www.junit.org/http://www.junit.org/
CactusCactus http://jakarta.apache.org/commons/cactus/http://jakarta.apache.org/commons/cactus/index.htmlindex.html
JUnitXJUnitX http://www.exterme-java.de/http://www.exterme-java.de/
JTestJTest http://www.parasoft.com/products/jtest/http://www.parasoft.com/products/jtest/index.htmindex.htm
http://www.javaworld.com/jw-03-2001/jw-http://www.javaworld.com/jw-03-2001/jw-0323-lw-jtest.html0323-lw-jtest.html
QACenterQACenter http://www.compuware.com/products/http://www.compuware.com/products/qacenter/qacenter/
Jbuilder OpentoolsJbuilder Opentools http://www.borland.com/http://www.borland.com/
AntAnt http://jakarta.apache.org/ant/http://jakarta.apache.org/ant/
Rational Test SuiteRational Test Suite http://www.rational.com/http://www.rational.com/
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Test VeröffentlichungenTest Veröffentlichungen
Junit PrimerJunit Primer http://www.clarkware.com/articles/http://www.clarkware.com/articles/JUnitPrimer.htmlJUnitPrimer.html
Test Infect EJBTest Infect EJB http://www.javaworld.com/javaworld/jw-05-http://www.javaworld.com/javaworld/jw-05-2000/jw-0526-testinfect.html2000/jw-0526-testinfect.html
HttpUnitHttpUnit http://httpunit.sourceforge.net/http://httpunit.sourceforge.net/
Servlet TestingServlet Testing http://www.delphis.com/javacon2000/http://www.delphis.com/javacon2000/servlet.htmlservlet.html
JunitservletJunitservlet http://sourceforge.net/projects/junitservlethttp://sourceforge.net/projects/junitservlet
J2EEUnitJ2EEUnit http://sourceforge.net/projects/j2eeunit/http://sourceforge.net/projects/j2eeunit/
JUnitPerfJUnitPerf http://www.clarkware.com/software/http://www.clarkware.com/software/JUnitPerf.htmlJUnitPerf.html
JUnit best practices JUnit best practices http://www.javaworld.com/javaworld/jw-12-http://www.javaworld.com/javaworld/jw-12-2000/jw-1221-junit_p.html2000/jw-1221-junit_p.html
Continuous IntegrationContinuous Integration http://www.martinfowler.com/articles/http://www.martinfowler.com/articles/continuousIntegration.htmlcontinuousIntegration.html
Junit.org ArticlesJunit.org Articles http://www.junit.org/articles.htmhttp://www.junit.org/articles.htm
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
Test-BücherTest-BücherHightower/Lesiecki (Wiley Hightower/Lesiecki (Wiley 2001)2001)
Java Tools for eXtreme Programming Java Tools for eXtreme Programming
http://www.rickhightower.com/JavaXPToolkit/http://www.rickhightower.com/JavaXPToolkit/
Newkrik/Martin (Addsion Newkrik/Martin (Addsion Weseley 2001)Weseley 2001)
Extreme Programming in PracticeExtreme Programming in Practice
Splaine/Jaskiel (STQE Splaine/Jaskiel (STQE Publishing 2001Publishing 2001
The Web Testing HandbookThe Web Testing Handbook
Link (dpunkt verlag 2002)Link (dpunkt verlag 2002) Unit Tests mit JavaUnit Tests mit Java
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
JSP-BücherJSP-BücherFields/Kolb (Manning 2000)Fields/Kolb (Manning 2000) Web Development with Java Server PagesWeb Development with Java Server Pages
Kassem et al. (Addison Kassem et al. (Addison Wesley 2000)Wesley 2000)
Designing Enterprise Applications with the Designing Enterprise Applications with the Java 2 Plattform, Enterprise Edition (APM-Java 2 Plattform, Enterprise Edition (APM-Book)Book)
Pekowsky ( Addison Pekowsky ( Addison Wesley 2000)Wesley 2000)
JavaServer PagesJavaServer Pages
Turau (IX- dpunkt 2000)Turau (IX- dpunkt 2000) Java Server Pages -Dynamische Java Server Pages -Dynamische Generierung von Web-DokumentenGenerierung von Web-Dokumenten
Avedal et al. (Wrox 2000)Avedal et al. (Wrox 2000) Professional JSPProfessional JSP
Bergsten ( O‘Reilly 2000)Bergsten ( O‘Reilly 2000) JavaServerPagesJavaServerPages
Rossbach/Schreiber Rossbach/Schreiber (1999,2000)(1999,2000)
Java Server und ServletsJava Server und Servlets
(c) 2002 by Peter Roßbach [email protected] – JAX 2002
LinksLinksSun JSP Home PageSun JSP Home Page http://java.sun.com/jsp/http://java.sun.com/jsp/
OReilly JSP BookOReilly JSP Book http://www.TheJspBook.com/http://www.TheJspBook.com/
Jakarta(Tomcat, Ant, Taglib...)Jakarta(Tomcat, Ant, Taglib...) http://jakarta.apache.org/http://jakarta.apache.org/
Jsp TutorialJsp Tutorial http://www.ix.heise.de/ix/artikel/2000/07/152/http://www.ix.heise.de/ix/artikel/2000/07/152/
http://http://www.ix.heise.dewww.ix.heise.de/ix/artikel/2000/08/148//ix/artikel/2000/08/148/
http://www.ix.heise.de/ix/artikel/2000/09/172/http://www.ix.heise.de/ix/artikel/2000/09/172/
Manning BookManning Book http:/jspTags.com/http:/jspTags.com/
Jason Hunter SiteJason Hunter Site http://www.servlets.com/http://www.servlets.com/
JawaWorldJawaWorld http://www.javaworld.com/http://www.javaworld.com/
Bea Bea http://www.bea.com/http://www.bea.com/
OrionOrion http://www.orionserver.com/http://www.orionserver.com/
Jrun AllaireJrun Allaire http://www.alliare.com/jrun/http://www.alliare.com/jrun/
WebApp FrameworkWebApp Framework http://www.webapp.de/http://www.webapp.de/