• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
JSF Testing - Tools und Technics
 

JSF Testing - Tools und Technics

on

  • 2,859 views

 

Statistics

Views

Total Views
2,859
Views on SlideShare
2,859
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    JSF Testing - Tools und Technics JSF Testing - Tools und Technics Presentation Transcript

    • Andreas Hartmann, Stephan Müller | adesso AGJSF Testing: Tools undTechnics
    • Speaker Andreas Hartmann [hartmann@adesso.de] Principal Software Engineer Tätigkeitsschwerpunkte: - Konzeption und Implementierung von Softwarearchitekturen und Frameworks auf Basis der JEE Plattform - Serviceorientierte Architekturen und Portaltechnologien im Kontext der Versicherungs- und Banken-Branche Stephan Müller [smueller@adesso.de] Senior Software Engineer Tätigkeitsschwerpunkte: - Konzeption und Implementierung von Portalen und Webanwendungen - Serviceorientierte Architekturen und Webtechnologien JSF Testing: Tools und Technics
    • Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
    • Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
    • Classification Konstruktive QS Analytische QS Programmier Whitebox Test Guidelines Dynamische Tests Templates ReviewsChecklisten Statische Blackbox Test Tests Richtlinien Statische Analyse JSF Testing: Tools und Technics
    • Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
    • JSFUnitÜberblick• Entwickelt von JBoss Inc. und der JBoss Community• Testerstellung mit JUnit• In-Container Testing• Statische Analyse• Features – JSFUnit Console – JSF2.0 / Servlet 3.0 Unterstützung – RichFaces (AJAX) UnterstüzungURL: http://www.jboss.org/jsfunit/ JSF Testing: Tools und Technics
    • JSFUnitIn-Container Testing• Testausführung mit Cactus und HtmlUnit• Tests werden mit Anwendung im Container deployed – Ausführung durch Aufruf von Testseite oder JSFUnit Console• Testmöglichkeiten – Wert- und Zustandsänderungen in der Managed Beans – Navigationsregeln – Komponenten im UIViewTree – Validierung – FacesMessages JSF Testing: Tools und Technics
    • JSFUnit"Acrylic Box" Tests• Kombiniert Whitebox und Blackbox Tests• Führt JUnit Tests im WebContainer aus – Erzeugt realen HTTP Request auf JSF Seite – Prüft Änderungen im Server über JSF API Funktionen• Keine Mock-Objekte JSF Testing: Tools und Technics
    • JSFUnit"Acrylic Box" TestsBeispiel index.jsp <f:view> <h:form id="form1"> <h:outputText id="question" value="Bitte Namen eingeben:" /> <h:inputText id="input" value="#{mBean.text}" /> <h:commandButton id="submit" value="Absenden" action="/hello.jsp" /> </h:form> </f:view> hello.jsp <f:view> <h:outputText id="output" value="Hallo, #{mBean.text}" /> </f:view> JSF Testing: Tools und Technics
    • JSFUnit"Acrylic Box" TestsBeispiel public void testHalloAndreas() throws IOException { JSFSession jsfSession = new JSFSession( "/index.jsf" ); JSFClientSession client = jsfSession.getJSFClientSession(); JSFServerSession server = jsfSession.getJSFServerSession(); assertEquals( "/index.jsp", server.getCurrentViewID() ); client.setValue( "input", "Andreas" ); client.click( "submit" ); assertEquals( "/hello.jsp", server.getCurrentViewID() ); assertEquals( "Andreas", server.getManagedBeanValue( "#{mBean.text}" )); } JSF Testing: Tools und Technics
    • JSFUnitStatische Analyse (faces-config.xml)• Prüft die Managed Bean Definition – Sind alle Managed Beans im Scope Session oder Application serialisierbar? – Besitzt die Managed Bean für jede managed-property eine Setter- Methode? – Existieren doppelte Managed Bean Namen? – Ist der angegebene Scope gültig? – Existiert die angegebene Klasse? – Leitet die angegebene Klasse von der richtigen Klasse ab?• Testklasse erbt von AbstractFacesConfigTestCase JSF Testing: Tools und Technics
    • JSFUnitStatische Analyse (faces-config.xml)Beispiel import org.jboss.jsfunit.analysis.AbstractFacesConfigTestCase; public class StaticAnalysisFacesConfigTest extends AbstractFacesConfigTestCase { private static Set<String> paths = new HashSet() {{ add( "WebContent/WEB-INF/faces-config.xml" ); }}; public StaticAnalysisFacesConfigTest() { super( paths ); } } JSF Testing: Tools und Technics
    • JSFUnitStatische Analyse (Views)• Prüft Value & Method Expressions – Wird eine nicht-existente Managed Beans referenziert? – Wird eine nicht-existente Action referenziert? – Wird ein nicht-existenter ActionListener referenziert?• Testklasse erbt von AbstractViewTestCase JSF Testing: Tools und Technics
    • JSFUnitStatische Analyse (Views)Beispiel import org.jboss.jsfunit.analysis.AbstractViewTestCase; public class StaticAnalysisViewTest extends AbstractViewTestCase { private static Set<String> absoluteViewPaths = new HashSet() {{ add( "WebContent/index.jsp" ); }}; private static Set<String> recursiveViewPaths = new HashSet() {{ add( "WebContent/views" ); }}; public StaticAnalysisViewTest() { super( absoluteViewPaths, recursiveViewPaths, "WebContent/WEB-INF/faces-config.xml" ); } } JSF Testing: Tools und Technics
    • Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
    • Apache Shale TestÜberblick• Sub-Projekt des Apache Shale Projekts – Entwickelt von der Apache Community – Seit Mai 2009 auf Apache Attic ("Projekt-Friedhof")• Stellt Mock-Objekte für den Servlet Container und JSF bereit• Testerstellung mit JUnitURL: http://shale.apache.org/shale-test/ JSF Testing: Tools und Technics
    • Apache Shale TestWhitebox Test• Zentrale JSF Framework Klassen werden durch Mock-Objekte simuliert – Application – ExternalContext – FacesContext – Lifecycle• Verhalten einer UI Komponente kann über Unit-Tests verifiziert werden – Konvertierung – Validierung – Datenübernahme in Modell• Testklasse erbt von AbstractJsfTestCase JSF Testing: Tools und Technics
    • Apache Shale TestWhitebox TestBeispiel@Overridepublic void setUp() throws Exception { super.setUp(); // JSF initialisieren UIViewRoot viewRoot = new UIViewRoot(); viewRoot.setViewId( VIEW_ID ); facesContext.setViewRoot( viewRoot ); List<UIComponent> children = viewRoot.getChildren(); UIInput inputField = new UIInput(); inputField.setId( INPUT_FIEDL_ID ); inputField.setValue( INPUT_FIEDL_VALUE ); children.add( inputField ); . . . JSF Testing: Tools und Technics
    • Apache Shale TestWhitebox TestBeispielpublic void testAddGlobalNotification() { assertFalse( facesContext.getMessages().hasNext() ); Notification notification = NotificationFactory.newGlobalNotification( Mvc4JsfDisplayMessage.SYSTEM_FEHLER, Notification.Severity.SEVERITY_ERROR ); myViewController.addNotification( notification ); assertTrue( facesContext.getMessages().hasNext() );} JSF Testing: Tools und Technics
    • Apache Shale TestWhitebox TestBeispielpublic void testGetUIComponent() { UIInput inputField = (UIInput)myViewController.getComponent( INPUT_FIEDL_ID ); assertEquals( inputField.getValue(), INPUT_FIEDL_VALUE );} JSF Testing: Tools und Technics
    • Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
    • Selenium/WebdriverÜberblick• Testframeworks für Web-Anwendungen• Erleichtern die Erstellung automatisierter Tests• Unterstützen gängige Browser – Hilfreich für Kompatibilitätstest• Tests werden in einem Fenster des gewünschten Browser ausgeführt• Testerstellung mit JUnitURL: http://seleniumhq.org/ JSF Testing: Tools und Technics
    • Selenium/WebdriverSelenium• Führt Tests als JavaScript Anwendung im Browser aus• Viele unterstützte Browser – Firefox, IExplorer, Safari, Opera, Google Chrome, etc.• Browserunabhängige Tests – Ausführung in unterschiedlichen Browsern ohne Anpassung JSF Testing: Tools und Technics
    • Selenium/WebdriverSelenium-IDE• Firefox-Plugin• Capture-and-Replay Funktionalität – Interaktives Testen im Browser – Aufzeichnen und Ausführen von Tests – Exportieren von Tests als HTML, Java, C#, PHP, Perl, Python und Ruby Code JSF Testing: Tools und Technics
    • Selenium/WebdriverSelenium-RC / Selenium-Grid• Testautomatisierung mit Selenium-RC – Testentwicklung in Java, C#, PHP, Perl, Python und Ruby – Unterstützte Browser: Firefox, IExplorer, Safari, Opera, Google Chrome, etc.• Parallele Tests mit Selenium-Grid – Steuert mehrere Instanzen von Selenium-RC – Zeitersparnis durch Parallelisierung – Einsatz für Lasttests – Amazon EC2 Unterstützung JSF Testing: Tools und Technics
    • Selenium/WebdriverSeleniumBeispiel @Test public void fillInputFieldAndSubmit() { selenium.open( "/de/" ); assertEquals( "adesso AG - Herzlich willkommen!", selenium.getTitle() ); // Eingabefeld auslesen, Suchbegriff eingeben & Anfrage absenden assertEquals( "Suchen", selenium.getValue( "textfield" ) ); selenium.type( "textfield", "Jobs" ); selenium.click( "suchicon" ); selenium.waitForPageToLoad( "30000" ); assertEquals( "adesso AG - Ergebnisse Ihrer Suchanfrage“, selenium.getTitle() ); } JSF Testing: Tools und Technics
    • Selenium/WebdriverWebdriver• Verfolgt gleichen Ansatz wie Selenium• Aber: Steuert Browser über einen Treiber fern – Native Treiber für IExplorer, Firefox, Chrome• Integration in Selenium 2.0• Stärken – Behandlung von multiplen Frames, Browserfenstern, Popups und Alerts – Seiten-Nagivation – AJAX UI Elemente JSF Testing: Tools und Technics
    • Selenium/WebdriverWebdriverBeispiel @Test public void fillInputFieldAndSubmit() { driver.get( "http://www.adesso.de" ); assertEquals( "adesso AG - Herzlich willkommen!", driver.getTitle() ); // Eingabefeld finden, leeren, Suchbegriff eingeben & Anfrage absenden WebElement search = driver.findElement( By.id( "textfield" ) ); assertEquals( "Suchen", search.getValue() ); search.clear(); search.sendKeys( "Jobs" ); search.submit(); // Titel der Seite prüfen assertEquals( "adesso AG - Ergebnisse ihrer Suchanfrage", driver.getTitle() ); } JSF Testing: Tools und Technics
    • Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
    • JMeter & MATJMeter• Werkzeug zur Durchführung von Lasttests − Http − FTP − JDBC − SOAP/XML-RCP − JUnit• Erstellung von Testplänen• PerformancemessungURL: http://jakarta.apache.org/jmeter/ JSF Testing: Tools und Technics
    • JMeter & MATJMeter JSF Testing: Tools und Technics
    • JMeter & MATJMeter goes JSF• Regular Expression Extractor• HTTP Request* JSF Testing: Tools und Technics
    • JMeter & MATHeap Dumpjmap -dump:file=d:/wasteMemory.hprof 4300 JSF Testing: Tools und Technics
    • JMeter & MATEclipse Memory Analyzer JSF Testing: Tools und Technics
    • Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
    • Put it Together Easy Apache WebDriver JMeter & QS Tools JUnit JSFUnit Shale Selenium MAT Mock Presentation-Layer Business-Layer Integration-Layer JSF Testing: Tools und Technics
    • Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
    • Testing Startup• Auswahl der für das Projekte angemessenen Testwerkzeuge• Testanforderungen bei der Architektur mit berücksichtigen• Festlegung was wie getestet werden soll• Integration der Tests in den Buildprozess• Regressionsfähigkeit der Tests• Testdaten JSF Testing: Tools und Technics
    • Testing StartupTesting and moreQM Plan Abnahme von Quality-Gates• Organisation, Mittel, Planung, • Abnahmeprotokoll für Meilensteine, Reporting und Werkzeuge der an denen eine Qualitätskontrolle im Qualitätssicherung Projekt erfolgt Wichtiger Erfolgsfaktor: Unterstützung des Managements sicherstellenQS-Projektsteckbrief Review• Inhalte und Termine eines • Fachliche Qualitätssicherung Projekts mit Fokus auf Qualitätssicherung • Architektur-Review • Code-Review JSF Testing: Tools und Technics
    • Vielen Dank für Ihre Aufmerksamkeit.info@adesso.de / www.adesso.de