SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Titel
AGENDA
• Einführung Integration Testing
• Arquillian & ShrinkWrap
• Movie Time
• Erfahrungen aus dem Projekt ZPS
• Ausblick & Fazit
• Fragen
State Based Testing
UNIT TESTING
Collaboration Testing (mit Stubs oder Mocks)
UNIT TESTING
Use Case oder User Story based Validierung
INTEGRATION TESTING
Eingebettet in möglichst realistische Laufzeitumgebung
INTEGRATION TESTING
z.B. Last-, Sicherheit-, Usability-, Recoverytests
SYSTEM TESTING
Unit
Testing
Integration
Testing
• Fokussiert auf eine Klasse
• Atomare Validierung
• Schnell
• Zusammenspiel atomarer Einheiten
• Validierung von Ergebnissen
• Einbettung in Systemumgebung
• Grobgranular
• Langsam
ABGRENZUNG
MANAGED CODE
• Abhängigkeiten mocken
• Datenquellen konfigurieren
• Laufzeitumgebung starten
• Artifakt(e) builden und deployen
• Classpath-Problematik
• Big Bang vermeiden
HERAUSFORDERUNGEN
Arquillian
«Picking up where unit tests leave off, Arquillian handles all the
plumbing of container management, deployment and
framework initialization so you can focus on the task at hand,
writing your tests. Real tests!»
Skip the Build
Test In-Container
ARQUILLIAN
• Massgeschneiderte Builds on-the-fly
• Automatische Deployments
• In-Container Testing - «the real thing!»
• Integration mit Junit & IDE & Maven
• Und Extensions
FEATURES
Arquillian
Testrunner
Micro
Deployment
CDI Bean
Gewöhnliche
Testmethode
ARQUILLIAN TESTCASE
ARCHITEKTUR
«a simple, Apache-licensed Java API for assembling archives like
JARs, WARs, EARs; developed by the JBoss Community»
Benefits:
● Inkrementeller save and re-run
● Build überspringen
● Micro-Deployments
SHRINKWRAP
SHRINKWRAP IN ACTION
Test Enrichment
• Testcase Abhängigkeiten werden aufgelöst.
• Unterstützt werden:
– @EJB
– @Inject
– @Resource
– @PersistenceContext
– @PersistenceUnit
– @ArquillianResource
TEST ENRICHMENT
• Schnittstelle zum Container
• Aktivierung erfolgt dynamisch in der Laufzeit
• Konfiguration mittels Maven Profile
CONTAINER ADAPTER
• Embedded
• Gleiche JVM wie der Test runner
• Testprotokoll local oder remote
• Lifecycle durch Arquillian (start/stop)
• Remote
• Separate JVM
• Testprotokoll remote (connect /disconnect)
• Managed
• Wie Remote aber mit Lifecycle Management
CONTAINER MODES
Container R M E Spec
JBoss 7.1   V6 Java EE 6
Glassfish 3.1    Java EE 6
WebSphere 8   Java EE 6
WebSphere 7  Java EE 5
Oracle Weblogic 12.1  Java EE 6.0
Apache OpenEJB 3.1  EJB 3.0
Weld EE/SE 1.1  CDI
Apache OpenWebBeans 1.0  CDI
Tomcat 7.0   V6 Servlet 3.0
Jetty 7.0 - -  ~ Servlet 3.0
Remote Managed Embedded
Vollständige Liste unter https://docs.jboss.org/author/display/ARQ/Container+adapters
CONTAINERS
The Big Testowski
in CDI+EJB+JPA incident
š
Starring JBoss 7.1 & Websphere 8.5
Co-Starring Hibernate & H2 Database
Directed By Arquillian
Guest MS Excel
MOVIE TIME
DANKE WZU!
Wegsuche
Verifikation Mapping Fahrplanauskunft auf ZPS-Netz
ZPS PROTOTYP
Ingredienzen eines instabilen Systems:
• Experimentelle Algorithmen
• Oft ändernde Daten
• Neue Technologie EJB 3.1
• Prototypische Vereinfachungen
Ziele:
• Enable Change
• Automatisierte Validierung von Resultaten
BEWEGGRÜNDE
• Integration Testing mit Arquillian
• Embedded Glassfish
• Embedded HSQL Database
• Mit realen Daten
• Maven Integration
• Continuous Testing auf Jenkins
LÖSUNGSANSATZ
• Erfolgreiche Verifikation der Systemantworten
• Frustrierendes Setup
• Einfach und sexy zur Entwicklungszeit
• Laufzeit wird schnell problematisch
• Embedded Containers sind tricky
• Vereinfacht den Entwicklungsprozess
• Sprecht vorher mit eurem WZU Kontakt !
LESSIONS LEARNED
• Persistence
Testing the Persistence Layer
• Drone, Graphene
AJAX-enable functional Tests for web-based UI
• Spring
«replace the Spring test framework with Arquillian
and gain access to all the Arquillian extensions, in
particular Drone»
AUSBLICK
Herausforderungen:
• Komplexe Deployments
• Fehlersuche
Tipps:
• Die eigene «Story» braucht Zeit & Ausdauer
• Keine Angst vor schmutzigen Händen
Ausprobieren. Es lohnt sich.
FAZIT
FRAGEN

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Chris Michael Klinger
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Containerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayContainerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayTobias Schneck
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHFlorian Holzhauer
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopNETWAYS
 
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...Trivadis
 
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...Trivadis
 
Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014inovex GmbH
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
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-Umfeldgedoplan
 
Server 2012 Hyper-V & Client Hyper-V
Server 2012 Hyper-V & Client Hyper-VServer 2012 Hyper-V & Client Hyper-V
Server 2012 Hyper-V & Client Hyper-VDigicomp Academy AG
 
Das eigene Test Lab, für jeden! (CeBIT-Edition mit Demo-Videos)
Das eigene Test Lab, für jeden! (CeBIT-Edition mit Demo-Videos)Das eigene Test Lab, für jeden! (CeBIT-Edition mit Demo-Videos)
Das eigene Test Lab, für jeden! (CeBIT-Edition mit Demo-Videos)Peter Kirchner
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
oVirt 3.5 - Einführung und Evaluierungsergebnisse
oVirt 3.5 - Einführung und EvaluierungsergebnisseoVirt 3.5 - Einführung und Evaluierungsergebnisse
oVirt 3.5 - Einführung und Evaluierungsergebnisseinovex GmbH
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit RexJan Gehring
 
Stackstorm – Event driven Automation
Stackstorm – Event driven AutomationStackstorm – Event driven Automation
Stackstorm – Event driven Automationinovex GmbH
 

Was ist angesagt? (20)

Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Containerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayContainerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony Day
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
 
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
Trivadis TechEvent 2016 Ablösung einer Tivoli Monitoring Umgebung mit OpenSou...
 
Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014Einführung in Elasticsearch - August 2014
Einführung in Elasticsearch - August 2014
 
Testen mit Arquillian
Testen mit ArquillianTesten mit Arquillian
Testen mit Arquillian
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
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
 
Server 2012 Hyper-V & Client Hyper-V
Server 2012 Hyper-V & Client Hyper-VServer 2012 Hyper-V & Client Hyper-V
Server 2012 Hyper-V & Client Hyper-V
 
Das eigene Test Lab, für jeden! (CeBIT-Edition mit Demo-Videos)
Das eigene Test Lab, für jeden! (CeBIT-Edition mit Demo-Videos)Das eigene Test Lab, für jeden! (CeBIT-Edition mit Demo-Videos)
Das eigene Test Lab, für jeden! (CeBIT-Edition mit Demo-Videos)
 
Einführung Maven
Einführung MavenEinführung Maven
Einführung Maven
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
oVirt 3.5 - Einführung und Evaluierungsergebnisse
oVirt 3.5 - Einführung und EvaluierungsergebnisseoVirt 3.5 - Einführung und Evaluierungsergebnisse
oVirt 3.5 - Einführung und Evaluierungsergebnisse
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
 
Stackstorm – Event driven Automation
Stackstorm – Event driven AutomationStackstorm – Event driven Automation
Stackstorm – Event driven Automation
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 

Andere mochten auch

Testing JSF with Arquillian and Selenium
Testing JSF with Arquillian and SeleniumTesting JSF with Arquillian and Selenium
Testing JSF with Arquillian and SeleniumLukáš Fryč
 
Arquillian: Helping web developers and QA get along
Arquillian: Helping web developers and QA get alongArquillian: Helping web developers and QA get along
Arquillian: Helping web developers and QA get alongLukáš Fryč
 
Arquillian - Integration Testing Made Easy
Arquillian - Integration Testing Made EasyArquillian - Integration Testing Made Easy
Arquillian - Integration Testing Made EasyJBUG London
 
Arquillian : An introduction
Arquillian : An introductionArquillian : An introduction
Arquillian : An introductionVineet Reynolds
 
Making Your Results Visible - A Test Result Dashboard and Comparison Tool
Making Your Results Visible - A Test Result Dashboard and Comparison ToolMaking Your Results Visible - A Test Result Dashboard and Comparison Tool
Making Your Results Visible - A Test Result Dashboard and Comparison ToolXiaoxing Hu
 
How to Use Selenium, Successfully
How to Use Selenium, SuccessfullyHow to Use Selenium, Successfully
How to Use Selenium, SuccessfullySauce Labs
 
Testing Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianTesting Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianReza Rahman
 
Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014Oren Rubin
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reza Rahman
 
QA Automation Solution
QA Automation SolutionQA Automation Solution
QA Automation SolutionDataArt
 

Andere mochten auch (12)

Arquillian
ArquillianArquillian
Arquillian
 
Testing JSF with Arquillian and Selenium
Testing JSF with Arquillian and SeleniumTesting JSF with Arquillian and Selenium
Testing JSF with Arquillian and Selenium
 
Arquillian: Helping web developers and QA get along
Arquillian: Helping web developers and QA get alongArquillian: Helping web developers and QA get along
Arquillian: Helping web developers and QA get along
 
Testing the Java EE
Testing the Java EETesting the Java EE
Testing the Java EE
 
Arquillian - Integration Testing Made Easy
Arquillian - Integration Testing Made EasyArquillian - Integration Testing Made Easy
Arquillian - Integration Testing Made Easy
 
Arquillian : An introduction
Arquillian : An introductionArquillian : An introduction
Arquillian : An introduction
 
Making Your Results Visible - A Test Result Dashboard and Comparison Tool
Making Your Results Visible - A Test Result Dashboard and Comparison ToolMaking Your Results Visible - A Test Result Dashboard and Comparison Tool
Making Your Results Visible - A Test Result Dashboard and Comparison Tool
 
How to Use Selenium, Successfully
How to Use Selenium, SuccessfullyHow to Use Selenium, Successfully
How to Use Selenium, Successfully
 
Testing Java EE Applications Using Arquillian
Testing Java EE Applications Using ArquillianTesting Java EE Applications Using Arquillian
Testing Java EE Applications Using Arquillian
 
Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014Page Objects Done Right - selenium conference 2014
Page Objects Done Right - selenium conference 2014
 
Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!Reactive Java EE - Let Me Count the Ways!
Reactive Java EE - Let Me Count the Ways!
 
QA Automation Solution
QA Automation SolutionQA Automation Solution
QA Automation Solution
 

Ähnlich wie Arquillian

Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoOPEN KNOWLEDGE GmbH
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Ralf Sigmund
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusOPEN KNOWLEDGE GmbH
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
 
Qualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfQualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfOliver Lemm
 
JUG MZ OSGi Lightning Talk
JUG MZ OSGi Lightning TalkJUG MZ OSGi Lightning Talk
JUG MZ OSGi Lightning TalkThilo Käsemann
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungengedoplan
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballastgedoplan
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
Java EE hochverfügbar
Java EE hochverfügbarJava EE hochverfügbar
Java EE hochverfügbargedoplan
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsJosef Adersberger
 
JEE und Micro – kein Widerspruch!
JEE und Micro – kein Widerspruch!JEE und Micro – kein Widerspruch!
JEE und Micro – kein Widerspruch!gedoplan
 
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
 

Ähnlich wie Arquillian (20)

Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
 
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
Wjax integrationsprojekte auf dem weg zur continuous delivery 2011 11-10
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
 
Qualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdfQualitätssicherung für APEX Anwendungen.pdf
Qualitätssicherung für APEX Anwendungen.pdf
 
.NET zu .NET Core
.NET zu .NET Core.NET zu .NET Core
.NET zu .NET Core
 
JUG MZ OSGi Lightning Talk
JUG MZ OSGi Lightning TalkJUG MZ OSGi Lightning Talk
JUG MZ OSGi Lightning Talk
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungen
 
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballast
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
Java EE hochverfügbar
Java EE hochverfügbarJava EE hochverfügbar
Java EE hochverfügbar
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
JEE und Micro – kein Widerspruch!
JEE und Micro – kein Widerspruch!JEE und Micro – kein Widerspruch!
JEE und Micro – kein Widerspruch!
 
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
 

Arquillian

  • 2. AGENDA • Einführung Integration Testing • Arquillian & ShrinkWrap • Movie Time • Erfahrungen aus dem Projekt ZPS • Ausblick & Fazit • Fragen
  • 4. Collaboration Testing (mit Stubs oder Mocks) UNIT TESTING
  • 5. Use Case oder User Story based Validierung INTEGRATION TESTING
  • 6. Eingebettet in möglichst realistische Laufzeitumgebung INTEGRATION TESTING
  • 7. z.B. Last-, Sicherheit-, Usability-, Recoverytests SYSTEM TESTING
  • 9. • Fokussiert auf eine Klasse • Atomare Validierung • Schnell • Zusammenspiel atomarer Einheiten • Validierung von Ergebnissen • Einbettung in Systemumgebung • Grobgranular • Langsam ABGRENZUNG
  • 11. • Abhängigkeiten mocken • Datenquellen konfigurieren • Laufzeitumgebung starten • Artifakt(e) builden und deployen • Classpath-Problematik • Big Bang vermeiden HERAUSFORDERUNGEN
  • 12. Arquillian «Picking up where unit tests leave off, Arquillian handles all the plumbing of container management, deployment and framework initialization so you can focus on the task at hand, writing your tests. Real tests!» Skip the Build Test In-Container ARQUILLIAN
  • 13.
  • 14. • Massgeschneiderte Builds on-the-fly • Automatische Deployments • In-Container Testing - «the real thing!» • Integration mit Junit & IDE & Maven • Und Extensions FEATURES
  • 17. «a simple, Apache-licensed Java API for assembling archives like JARs, WARs, EARs; developed by the JBoss Community» Benefits: ● Inkrementeller save and re-run ● Build überspringen ● Micro-Deployments SHRINKWRAP
  • 19. Test Enrichment • Testcase Abhängigkeiten werden aufgelöst. • Unterstützt werden: – @EJB – @Inject – @Resource – @PersistenceContext – @PersistenceUnit – @ArquillianResource TEST ENRICHMENT
  • 20. • Schnittstelle zum Container • Aktivierung erfolgt dynamisch in der Laufzeit • Konfiguration mittels Maven Profile CONTAINER ADAPTER
  • 21. • Embedded • Gleiche JVM wie der Test runner • Testprotokoll local oder remote • Lifecycle durch Arquillian (start/stop) • Remote • Separate JVM • Testprotokoll remote (connect /disconnect) • Managed • Wie Remote aber mit Lifecycle Management CONTAINER MODES
  • 22. Container R M E Spec JBoss 7.1   V6 Java EE 6 Glassfish 3.1    Java EE 6 WebSphere 8   Java EE 6 WebSphere 7  Java EE 5 Oracle Weblogic 12.1  Java EE 6.0 Apache OpenEJB 3.1  EJB 3.0 Weld EE/SE 1.1  CDI Apache OpenWebBeans 1.0  CDI Tomcat 7.0   V6 Servlet 3.0 Jetty 7.0 - -  ~ Servlet 3.0 Remote Managed Embedded Vollständige Liste unter https://docs.jboss.org/author/display/ARQ/Container+adapters CONTAINERS
  • 23. The Big Testowski in CDI+EJB+JPA incident š Starring JBoss 7.1 & Websphere 8.5 Co-Starring Hibernate & H2 Database Directed By Arquillian Guest MS Excel MOVIE TIME
  • 26. Ingredienzen eines instabilen Systems: • Experimentelle Algorithmen • Oft ändernde Daten • Neue Technologie EJB 3.1 • Prototypische Vereinfachungen Ziele: • Enable Change • Automatisierte Validierung von Resultaten BEWEGGRÜNDE
  • 27. • Integration Testing mit Arquillian • Embedded Glassfish • Embedded HSQL Database • Mit realen Daten • Maven Integration • Continuous Testing auf Jenkins LÖSUNGSANSATZ
  • 28. • Erfolgreiche Verifikation der Systemantworten • Frustrierendes Setup • Einfach und sexy zur Entwicklungszeit • Laufzeit wird schnell problematisch • Embedded Containers sind tricky • Vereinfacht den Entwicklungsprozess • Sprecht vorher mit eurem WZU Kontakt ! LESSIONS LEARNED
  • 29. • Persistence Testing the Persistence Layer • Drone, Graphene AJAX-enable functional Tests for web-based UI • Spring «replace the Spring test framework with Arquillian and gain access to all the Arquillian extensions, in particular Drone» AUSBLICK
  • 30. Herausforderungen: • Komplexe Deployments • Fehlersuche Tipps: • Die eigene «Story» braucht Zeit & Ausdauer • Keine Angst vor schmutzigen Händen Ausprobieren. Es lohnt sich. FAZIT