SlideShare ist ein Scribd-Unternehmen logo
Andreas Hartmann, Stephan Müller | adesso AG

JSF Testing: Tools und
Technics
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       Reviews

Checklisten                                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üzung


URL: http://www.jboss.org/jsfunit/

         JSF Testing: Tools und Technics
JSFUnit
In-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" Tests
Beispiel
   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" Tests
Beispiel
 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
JSFUnit
Statische 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
JSFUnit
Statische 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
JSFUnit
Statische 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
JSFUnit
Statische 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 JUnit


URL: http://shale.apache.org/shale-test/




         JSF Testing: Tools und Technics
Apache Shale Test
Whitebox 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 Test
Whitebox Test
Beispiel
@Override
public 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 Test
Whitebox Test
Beispiel
public 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 Test
Whitebox Test
Beispiel
public 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 JUnit




URL: http://seleniumhq.org/



        JSF Testing: Tools und Technics
Selenium/Webdriver
Selenium
• 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/Webdriver
Selenium-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/Webdriver
Selenium-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/Webdriver
Selenium
Beispiel
  @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/Webdriver
Webdriver
• 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/Webdriver
Webdriver
Beispiel
  @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 & MAT
JMeter
• Werkzeug zur Durchführung von Lasttests
   − Http
   − FTP
   − JDBC
   − SOAP/XML-RCP
   − JUnit
• Erstellung von Testplänen
• Performancemessung


URL: http://jakarta.apache.org/jmeter/


        JSF Testing: Tools und Technics
JMeter & MAT
JMeter




     JSF Testing: Tools und Technics
JMeter & MAT
JMeter goes JSF
• Regular Expression Extractor




• HTTP Request*




       JSF Testing: Tools und Technics
JMeter & MAT
Heap Dump




jmap -dump:file=d:/wasteMemory.hprof 4300

       JSF Testing: Tools und Technics
JMeter & MAT
Eclipse 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 Startup
Testing and more
QM 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 sicherstellen


QS-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

Weitere ähnliche Inhalte

Andere mochten auch

ki
kiki
ki
martin
 
Shanghai big tradeshow calendar 2014 collection by MARKYE@LIERJIA.CN
Shanghai big tradeshow calendar 2014 collection by MARKYE@LIERJIA.CN Shanghai big tradeshow calendar 2014 collection by MARKYE@LIERJIA.CN
Shanghai big tradeshow calendar 2014 collection by MARKYE@LIERJIA.CN
YiMu Exhibition Services Co.,Ltd.
 
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Ajax, JSF, Facelets, Eclipse & Maven tutorialsAjax, JSF, Facelets, Eclipse & Maven tutorials
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Raghavan Mohan
 
document
documentdocument
document
Sascha Nawrot
 
Funciones A1t2
Funciones A1t2Funciones A1t2
Funciones A1t2
Adolfo Castillo Navarro
 
Portfolio
PortfolioPortfolio
Portfolio
Dimitris Vayenas
 
Infolitigpart1
Infolitigpart1Infolitigpart1
Infolitigpart1
chrislanger9
 
Curso de marketing em mídias sociais
Curso de marketing em mídias sociaisCurso de marketing em mídias sociais
Curso de marketing em mídias sociais
Edney Souza
 
Recherche
RechercheRecherche
Recherche
Patrice Leroux
 
Attack_Simulation_and_Threat_Modeling
Attack_Simulation_and_Threat_ModelingAttack_Simulation_and_Threat_Modeling
Attack_Simulation_and_Threat_Modeling
Oluseyi Akindeinde
 
IBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticasIBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticas
rodrigoareis
 
00 a linguagem html
00 a linguagem html00 a linguagem html
00 a linguagem html
Vasco Ferreira
 
Search engines
Search enginesSearch engines
Search engines
Anshuman Tyagi
 
Introduction to Ext JS 4
Introduction to Ext JS 4Introduction to Ext JS 4
Introduction to Ext JS 4
Stefan Gehrig
 
Training for Foster Parents
Training for Foster ParentsTraining for Foster Parents
Training for Foster Parents
- Mark - Fullbright
 
Proceedings online v2
Proceedings online v2Proceedings online v2
Proceedings online v2
Nick Sage
 
Adobe Digital Publishing Suite by dualpixel
Adobe Digital Publishing Suite by dualpixelAdobe Digital Publishing Suite by dualpixel
Adobe Digital Publishing Suite by dualpixel
dualpixel
 
互联网搜索技巧
互联网搜索技巧互联网搜索技巧
互联网搜索技巧
bemyfriend
 
Métricas em mídias sociais (versão 2010)
Métricas em mídias sociais (versão 2010)Métricas em mídias sociais (versão 2010)
Métricas em mídias sociais (versão 2010)
Edney Souza
 
GreenWater Stakeholders Package
GreenWater Stakeholders PackageGreenWater Stakeholders Package
GreenWater Stakeholders Package
Jeff Lemon
 

Andere mochten auch (20)

ki
kiki
ki
 
Shanghai big tradeshow calendar 2014 collection by MARKYE@LIERJIA.CN
Shanghai big tradeshow calendar 2014 collection by MARKYE@LIERJIA.CN Shanghai big tradeshow calendar 2014 collection by MARKYE@LIERJIA.CN
Shanghai big tradeshow calendar 2014 collection by MARKYE@LIERJIA.CN
 
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Ajax, JSF, Facelets, Eclipse & Maven tutorialsAjax, JSF, Facelets, Eclipse & Maven tutorials
Ajax, JSF, Facelets, Eclipse & Maven tutorials
 
document
documentdocument
document
 
Funciones A1t2
Funciones A1t2Funciones A1t2
Funciones A1t2
 
Portfolio
PortfolioPortfolio
Portfolio
 
Infolitigpart1
Infolitigpart1Infolitigpart1
Infolitigpart1
 
Curso de marketing em mídias sociais
Curso de marketing em mídias sociaisCurso de marketing em mídias sociais
Curso de marketing em mídias sociais
 
Recherche
RechercheRecherche
Recherche
 
Attack_Simulation_and_Threat_Modeling
Attack_Simulation_and_Threat_ModelingAttack_Simulation_and_Threat_Modeling
Attack_Simulation_and_Threat_Modeling
 
IBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticasIBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticas
 
00 a linguagem html
00 a linguagem html00 a linguagem html
00 a linguagem html
 
Search engines
Search enginesSearch engines
Search engines
 
Introduction to Ext JS 4
Introduction to Ext JS 4Introduction to Ext JS 4
Introduction to Ext JS 4
 
Training for Foster Parents
Training for Foster ParentsTraining for Foster Parents
Training for Foster Parents
 
Proceedings online v2
Proceedings online v2Proceedings online v2
Proceedings online v2
 
Adobe Digital Publishing Suite by dualpixel
Adobe Digital Publishing Suite by dualpixelAdobe Digital Publishing Suite by dualpixel
Adobe Digital Publishing Suite by dualpixel
 
互联网搜索技巧
互联网搜索技巧互联网搜索技巧
互联网搜索技巧
 
Métricas em mídias sociais (versão 2010)
Métricas em mídias sociais (versão 2010)Métricas em mídias sociais (versão 2010)
Métricas em mídias sociais (versão 2010)
 
GreenWater Stakeholders Package
GreenWater Stakeholders PackageGreenWater Stakeholders Package
GreenWater Stakeholders Package
 

Ähnlich wie JSF Testing - Tools und Technics

Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
gedoplan
 
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
Marc Müller
 
Testing tools
Testing toolsTesting tools
Testing tools
Sebastian Springer
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
jlink
 
Softwarequalitätssicherung mit Continuous Integration Tools
 Softwarequalitätssicherung mit Continuous Integration Tools Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
gedoplan
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungChristian Baranowski
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
Marc Müller
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
GFU Cyrus AG
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumBenjamin Schmid
 
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetproTest-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Marc Müller
 
Kata - Java - Tests - JUnit 4
Kata - Java - Tests - JUnit 4Kata - Java - Tests - JUnit 4
Kata - Java - Tests - JUnit 4
kaftanenko
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
Marc Müller
 
Wicket Kurzübersicht
Wicket KurzübersichtWicket Kurzübersicht
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013
Nico Orschel
 
Webbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriverWebbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriver
Andi Albrecht
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
Hendrik Lösch
 
Relevance Assessment Tool - Ein Werkzeug zum Design von Retrievaltests sowie ...
Relevance Assessment Tool - Ein Werkzeug zum Design von Retrievaltests sowie ...Relevance Assessment Tool - Ein Werkzeug zum Design von Retrievaltests sowie ...
Relevance Assessment Tool - Ein Werkzeug zum Design von Retrievaltests sowie ...
Hamburg University of Applied Sciences (HAW)
 
Automated testing of JavaFX UI components
Automated testing of JavaFX UI componentsAutomated testing of JavaFX UI components
Automated testing of JavaFX UI components
Wolfgang Weigend
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-Pipeline
OPEN KNOWLEDGE GmbH
 

Ähnlich wie JSF Testing - Tools und Technics (20)

Feige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-UmfeldFeige sein! Testen im Java-EE-Umfeld
Feige sein! Testen im Java-EE-Umfeld
 
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
BASTA 2016 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch...
 
Testing tools
Testing toolsTesting tools
Testing tools
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
 
Softwarequalitätssicherung mit Continuous Integration Tools
 Softwarequalitätssicherung mit Continuous Integration Tools Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit Selenium
 
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetproTest-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
 
Kata - Java - Tests - JUnit 4
Kata - Java - Tests - JUnit 4Kata - Java - Tests - JUnit 4
Kata - Java - Tests - JUnit 4
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
 
Wicket Kurzübersicht
Wicket KurzübersichtWicket Kurzübersicht
Wicket Kurzübersicht
 
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013
 
Webbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriverWebbrowser-Automatisierung mit Python und Selenium WebDriver
Webbrowser-Automatisierung mit Python und Selenium WebDriver
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Relevance Assessment Tool - Ein Werkzeug zum Design von Retrievaltests sowie ...
Relevance Assessment Tool - Ein Werkzeug zum Design von Retrievaltests sowie ...Relevance Assessment Tool - Ein Werkzeug zum Design von Retrievaltests sowie ...
Relevance Assessment Tool - Ein Werkzeug zum Design von Retrievaltests sowie ...
 
Automated testing of JavaFX UI components
Automated testing of JavaFX UI componentsAutomated testing of JavaFX UI components
Automated testing of JavaFX UI components
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-Pipeline
 

Mehr von adesso AG

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
adesso AG
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
adesso AG
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
adesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
adesso AG
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
adesso AG
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
adesso AG
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
adesso AG
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
adesso AG
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
adesso AG
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)adesso AG
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
adesso AG
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
adesso AG
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
adesso AG
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
adesso AG
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
adesso AG
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
adesso AG
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
adesso AG
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
adesso AG
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engine
adesso AG
 

Mehr von adesso AG (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engine
 

JSF Testing - Tools und Technics

  • 1. Andreas Hartmann, Stephan Müller | adesso AG JSF Testing: Tools und Technics
  • 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. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  • 4. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  • 5. Classification Konstruktive QS Analytische QS Programmier Whitebox Test Guidelines Dynamische Tests Templates Reviews Checklisten Statische Blackbox Test Tests Richtlinien Statische Analyse JSF Testing: Tools und Technics
  • 6. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  • 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üzung URL: http://www.jboss.org/jsfunit/ JSF Testing: Tools und Technics
  • 8. JSFUnit In-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. 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. JSFUnit "Acrylic Box" Tests Beispiel 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. JSFUnit "Acrylic Box" Tests Beispiel 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. JSFUnit Statische 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. JSFUnit Statische 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. JSFUnit Statische 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. JSFUnit Statische 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. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  • 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 JUnit URL: http://shale.apache.org/shale-test/ JSF Testing: Tools und Technics
  • 18. Apache Shale Test Whitebox 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. Apache Shale Test Whitebox Test Beispiel @Override public 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. Apache Shale Test Whitebox Test Beispiel public 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. Apache Shale Test Whitebox Test Beispiel public void testGetUIComponent() { UIInput inputField = (UIInput)myViewController.getComponent( INPUT_FIEDL_ID ); assertEquals( inputField.getValue(), INPUT_FIEDL_VALUE ); } JSF Testing: Tools und Technics
  • 22. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  • 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 JUnit URL: http://seleniumhq.org/ JSF Testing: Tools und Technics
  • 24. Selenium/Webdriver Selenium • 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. Selenium/Webdriver Selenium-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. Selenium/Webdriver Selenium-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. Selenium/Webdriver Selenium Beispiel @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. Selenium/Webdriver Webdriver • 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. Selenium/Webdriver Webdriver Beispiel @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. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  • 31. JMeter & MAT JMeter • Werkzeug zur Durchführung von Lasttests − Http − FTP − JDBC − SOAP/XML-RCP − JUnit • Erstellung von Testplänen • Performancemessung URL: http://jakarta.apache.org/jmeter/ JSF Testing: Tools und Technics
  • 32. JMeter & MAT JMeter JSF Testing: Tools und Technics
  • 33. JMeter & MAT JMeter goes JSF • Regular Expression Extractor • HTTP Request* JSF Testing: Tools und Technics
  • 34. JMeter & MAT Heap Dump jmap -dump:file=d:/wasteMemory.hprof 4300 JSF Testing: Tools und Technics
  • 35. JMeter & MAT Eclipse Memory Analyzer JSF Testing: Tools und Technics
  • 36. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  • 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. Agenda Classification JSFUnit Apache Shale Test Selenium/Webdriver JMeter & Eclipse Memory Analyzer Put it Together Testing Startup JSF Testing: Tools und Technics
  • 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. Testing Startup Testing and more QM 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 sicherstellen QS-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. Vielen Dank für Ihre Aufmerksamkeit. info@adesso.de / www.adesso.de