JSF Testing - Tools und Technics

3,217 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,217
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JSF Testing - Tools und Technics

  1. 1. Andreas Hartmann, Stephan Müller | adesso AGJSF Testing: Tools undTechnics
  2. 2. 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
  3. 3. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  4. 4. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  5. 5. 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
  6. 6. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. 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
  22. 22. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  31. 31. 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
  32. 32. JMeter & MATJMeter JSF Testing: Tools und Technics
  33. 33. JMeter & MATJMeter goes JSF• Regular Expression Extractor• HTTP Request* JSF Testing: Tools und Technics
  34. 34. JMeter & MATHeap Dumpjmap -dump:file=d:/wasteMemory.hprof 4300 JSF Testing: Tools und Technics
  35. 35. JMeter & MATEclipse Memory Analyzer JSF Testing: Tools und Technics
  36. 36. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  37. 37. 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
  38. 38. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  39. 39. 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
  40. 40. 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
  41. 41. Vielen Dank für Ihre Aufmerksamkeit.info@adesso.de / www.adesso.de

×