SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
JSF-Anwendungen
testen mit AcceptIT
internerVortrag in der akquinet tech@spree
Schreibt mehr gute !
End-to-End Tests!
Routinearbeit
• d.h.: 

gutesVerständnis der 

Anforderung!
• Top Down Entwurf 

=> bessere Architektur!
• End-To-End = Top Down
s. http://www.sigs.de/download/oop_09/Dirbach%20NEU.pdf
Wissensarbeit
• d.h.:

Problem und Lösung

sind noch unklar!
• ständiger Wechsel 

zwischen Problem-

und Lösungsraum!
• End-To-End =>

Konzentration auf

Was und Warum
Beispiel: WSDL,
SOAP & Exceptions
Erfahrungswerte aus
einem Integrationsprojekt
• Aufgabe:

Integration eines SOAP-basierten Webdienst!
• Erkenntnisse!
• Standardverhalten war einfach!
• korrektesVerhalten in Randfällen nicht!
• End-To-End als effizientes
Entwicklungsinstrument
Weboberflächen
und ihre Logikanteile
Testabdeckung eines
JSF-Projekts
• größtes Modul hat
geringste
Testabdeckung mit
Unit-Tests!
• Grund:

JSF-Integration
erschwert Isolation
für Unit-Test
15,4%
XHTML: 20k LOC
:=
20kLOC GUI-Logik
XHTML: 20k LOC
Coverage?
Unit Test
Object Under TestPro:!
- schnell!
- validiert API-Entwurf

Contra:!
- wenig Aussage über Systems!
- robuste Testssuite kann schwierig sein
Unit Under Test
+ 3rd party Code
Integrations Test
Pro:!
- validiert Teilsysteme

Contra:!
- herausfordernder Schnitt der Teilsysteme
System Under Test
End to End Test
Pro:!
- Hohe Aussage über System!
- Entkopplung von Test und Systemcode

Contra:!
- Aufwand!
!
=> Notwendigkeit einer guten Testarchitektur
Nutze die Macht
der Tests, Luke!
Willkommen in der ersten Klasse!
Tests als

1st Class Citizen
• gleiche Anforderungen an Testcode wie an
Produktivcode, insb. bzgl.!
• Wartbarkeit!
• Verständlichkeit!
• Tests => Aufwand => Investition!
• Abwesenheit von Tests :=

Wette, dass Software fehlerfrei ist und nicht
weiterentwickelt wird…

=> mutig
AcceptIt
Ein Vorgeschmack
public!class!SampleTest!{!
!
!!!!@Rule!
!!!!public!final!AcceptItRule!acceptItRule!=!!
!!!new!AcceptItRule();!
!
!!!!@Inject!
!!!!TestBean!testBean;6
!
!!!!@Test!
!!!!public!void!canInjectSimpleBean()!{!
!!!!!!!!assertThat(testBean).isNotNull();!
!!!!}6
}
Guiceberry vs. AcceptIt
• Injection

mit Guice!
• TestScope

• Injection

mit CDI!
• TestScope!
• InjectionPoint

Herausforderungen beim
Testen von Webanwendungen
   
driver.findElement(By.id("q")).sendKeys(text);
   
driver.findElement(By.id("q")).sendKeys(text);
Finden
Finden
wait.until(ExpectedConditions.titleIs("Google"));
   
driver.findElement(By.id("q")).sendKeys(text);
Finden
wait.until(ExpectedConditions.titleIs("Google"));
   
driver.findElement(By.id("q")).sendKeys(text);
Wartenund
Das war ….
Spagetthi-Code
Anwendung
Page Object
Test
WebDriver
Browser
Anwendung
Page Object
Test
WebDriver
Browser
Anwendung
Page Object
Test
WebDriver
Browser
Fernsteuern des Browser
Anwendung
Page Object
Test
WebDriver
Browser
alle fachlichen Operationen
einer Seite
@PageObject!
public!class!GooglePage!{!
!
!!!!@Inject!
!!!!private!WebDriver!driver;!
!
!!!!@FindBy(name!=!"q")!
!!!!private!WebElement!searchField;6
!
public6void6search(String6in)6{}6
}
Anwendung
Page Object
Test
WebDriver
Browser
fachliche Tests.
!!!!@Inject!
!!!!GooglePage!googlePage;!
!!!
!!!!@Test!
!!!!public!void!canSearchForAkquinet()!{!
!!!!!!!!googlePage.get();!
!!!!!!!!googlePage.search("akquinet.de");!
!
!!!!!!!!assertThat(googlePage.getSearchResults())6
66.contains("akquinet!AG");!
!!!!}
=> Fokus auf Fachlichkeit, 

keine direkte Interaktion mit WebDriver
Ein Beispielprojekt
Chuck
Norris
Approved
90%
Try!
Als Dessert:
Der Mehrwert zu Guiceberry
Anwendung
Page Object
Test
WebDriver
Browser
Wiederverwendung!
Page Atom
@PageObjectAtom!
public!class!SearchFieldUsingWebElement!{!
!
!!!!@Inject!
!!!!WebElement!searchField;!
!
!!!!public!void!search(String!query)!{!
!!!!!!!!searchField.sendKeys(query);!
!!!!!!!!searchField.submit();!
!!!!}!
}
@PageObjectAtom!
public!class!SearchFieldUsingWebElement!{!
!
!!!!@Inject!
!!!!WebElement!searchField;!
!
!!!!public!void!search(String!query)!{!
!!!!!!!!searchField.sendKeys(query);!
!!!!!!!!searchField.submit();!
!!!!}!
}
!@Inject!
!@FindBy(name!=!"q")!
!private!SearchFieldUsingWebElement!search;!
@PageObjectAtom!
public!class!SearchFieldUsingWebElement!{!
!
!!!!@Inject!
!!!!WebElement!searchField;!
!
!!!!public!void!search(String!query)!{!
!!!!!!!!searchField.sendKeys(query);!
!!!!!!!!searchField.submit();!
!!!!}!
}
!@Inject!
!@FindBy(name!=!"q")!
!private!SearchFieldUsingWebElement!search;!
Conversion!
Aus der
Praxis
Die Situation
Das Ziel
Wie verspeist man
einen Elefanten?
Stück für
Stück
Die Charakeristik
der Pferde
@Test6
public6void6navigiereZurNiederlassung()6{6
666homePage.get();6
!
666ClientAgenciesListPage6ger6=66
666666homePage.niederlassung("Deutschland");6
66
666assertThat(ger.getNiederlassungen())6
66666666.hasSize(22)6
66666666.haveExactly(1,6sc("KUNDE!GmbH!Sylt"))6
66666666.haveExactly(1,6sc("KUNDE!xyz"))6
66666666;6
}6
http://www.sigs.de/download/
oop_09/Dirbach%20NEU.pdf
JSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptIt

Mais conteúdo relacionado

Destaque

WordPress - das sind wir alle
WordPress - das sind wir alleWordPress - das sind wir alle
WordPress - das sind wir allefrankstaude
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacionAndrés Gómez
 
Diagnostico Local
Diagnostico LocalDiagnostico Local
Diagnostico LocalJD_NUBE
 
PRESENTACION SOBRE LIDERAZGO EN ADENAG (UNVM)
PRESENTACION SOBRE LIDERAZGO EN ADENAG (UNVM)PRESENTACION SOBRE LIDERAZGO EN ADENAG (UNVM)
PRESENTACION SOBRE LIDERAZGO EN ADENAG (UNVM)Marcelo Montes
 
Conduccion vehicular
Conduccion vehicularConduccion vehicular
Conduccion vehicularXinito Xin
 
Como grabar un CD en NERO Express por: LUIS QUEVEDO
Como grabar un CD en NERO Express por: LUIS QUEVEDOComo grabar un CD en NERO Express por: LUIS QUEVEDO
Como grabar un CD en NERO Express por: LUIS QUEVEDOManuel Lobaton
 
Escuela estrucuralista Clase Dra Ana Chavez
Escuela estrucuralista Clase Dra Ana ChavezEscuela estrucuralista Clase Dra Ana Chavez
Escuela estrucuralista Clase Dra Ana ChavezMely Bustillos
 
TYPO3 Dokumentation mit ReStructuredText
TYPO3 Dokumentation mit ReStructuredTextTYPO3 Dokumentation mit ReStructuredText
TYPO3 Dokumentation mit ReStructuredTextPeter Linzenkirchner
 
Konzeptum Kundenportale
Konzeptum KundenportaleKonzeptum Kundenportale
Konzeptum KundenportaleKONZEPTUM GmbH
 
MySQl - "after select"
MySQl  - "after select"MySQl  - "after select"
MySQl - "after select"frankstaude
 

Destaque (20)

WordPress - das sind wir alle
WordPress - das sind wir alleWordPress - das sind wir alle
WordPress - das sind wir alle
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 
Diagnostico Local
Diagnostico LocalDiagnostico Local
Diagnostico Local
 
ÖW Marketingkampagne Sommer 2014 Deutschland
ÖW Marketingkampagne Sommer 2014 DeutschlandÖW Marketingkampagne Sommer 2014 Deutschland
ÖW Marketingkampagne Sommer 2014 Deutschland
 
eZ Components
eZ ComponentseZ Components
eZ Components
 
PRESENTACION SOBRE LIDERAZGO EN ADENAG (UNVM)
PRESENTACION SOBRE LIDERAZGO EN ADENAG (UNVM)PRESENTACION SOBRE LIDERAZGO EN ADENAG (UNVM)
PRESENTACION SOBRE LIDERAZGO EN ADENAG (UNVM)
 
Ipad
Ipad Ipad
Ipad
 
Pilze 1
Pilze 1Pilze 1
Pilze 1
 
Conduccion vehicular
Conduccion vehicularConduccion vehicular
Conduccion vehicular
 
La informàtica en la educaciòn
La informàtica en la educaciònLa informàtica en la educaciòn
La informàtica en la educaciòn
 
Como grabar un CD en NERO Express por: LUIS QUEVEDO
Como grabar un CD en NERO Express por: LUIS QUEVEDOComo grabar un CD en NERO Express por: LUIS QUEVEDO
Como grabar un CD en NERO Express por: LUIS QUEVEDO
 
que es un blog
que es un blogque es un blog
que es un blog
 
Google Docs
Google DocsGoogle Docs
Google Docs
 
Escuela estrucuralista Clase Dra Ana Chavez
Escuela estrucuralista Clase Dra Ana ChavezEscuela estrucuralista Clase Dra Ana Chavez
Escuela estrucuralista Clase Dra Ana Chavez
 
57 135-1-pb
57 135-1-pb57 135-1-pb
57 135-1-pb
 
TYPO3 Dokumentation mit ReStructuredText
TYPO3 Dokumentation mit ReStructuredTextTYPO3 Dokumentation mit ReStructuredText
TYPO3 Dokumentation mit ReStructuredText
 
Computadoras
ComputadorasComputadoras
Computadoras
 
Konzeptum Kundenportale
Konzeptum KundenportaleKonzeptum Kundenportale
Konzeptum Kundenportale
 
Analisis de videos
Analisis de videosAnalisis de videos
Analisis de videos
 
MySQl - "after select"
MySQl  - "after select"MySQl  - "after select"
MySQl - "after select"
 

Semelhante a JSF Anwendungen testen mit AcceptIt

JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP UnitsCadaxo GmbH
 
Domain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenDomain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenRoland Ewald
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitNico Orschel
 
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Alex Sili
 
2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und TestsDaniel Fisher
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Community ITmitte.de
 
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
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013superflomo
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015AboutYouGmbH
 
Bi testing media_factory_0.10
Bi testing media_factory_0.10Bi testing media_factory_0.10
Bi testing media_factory_0.10inovex GmbH
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
 
Objektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBObjektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBMinerva SoftCare GmbH
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
Frontend Development für Backend Developer
Frontend Development für Backend DeveloperFrontend Development für Backend Developer
Frontend Development für Backend DeveloperChristoph Hautzinger
 
Das funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesDas funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesChristian Güdemann
 

Semelhante a JSF Anwendungen testen mit AcceptIt (20)

JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 
Domain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenDomain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwenden
 
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis NachhaltigkeitDWX 2014 -  Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
DWX 2014 - Coded UI in der Praxis: Von Lokalisierung bis Nachhaltigkeit
 
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
 
2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
 
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
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
 
Bi testing media_factory_0.10
Bi testing media_factory_0.10Bi testing media_factory_0.10
Bi testing media_factory_0.10
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Arquillian
ArquillianArquillian
Arquillian
 
Objektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBObjektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWB
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
.NET zu .NET Core
.NET zu .NET Core.NET zu .NET Core
.NET zu .NET Core
 
Frontend Development für Backend Developer
Frontend Development für Backend DeveloperFrontend Development für Backend Developer
Frontend Development für Backend Developer
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
Das funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesDas funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPages
 

Mais de Torsten Fink

MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Torsten Fink
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumTorsten Fink
 
Docker in der Anwendungsentwicklung
Docker in der AnwendungsentwicklungDocker in der Anwendungsentwicklung
Docker in der AnwendungsentwicklungTorsten Fink
 
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Torsten Fink
 
OptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenOptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenTorsten Fink
 
Haskell aus einer Java EE Perspektive
Haskell aus einer Java EE PerspektiveHaskell aus einer Java EE Perspektive
Haskell aus einer Java EE PerspektiveTorsten Fink
 

Mais de Torsten Fink (7)

MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
 
Docker in der Anwendungsentwicklung
Docker in der AnwendungsentwicklungDocker in der Anwendungsentwicklung
Docker in der Anwendungsentwicklung
 
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
 
OptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenOptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten Schulstandorten
 
Haskell aus einer Java EE Perspektive
Haskell aus einer Java EE PerspektiveHaskell aus einer Java EE Perspektive
Haskell aus einer Java EE Perspektive
 

JSF Anwendungen testen mit AcceptIt