Arquillian

31
Titel

Transcript of Arquillian

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

UnitTesting

IntegrationTesting

• 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 theplumbing of container management, deployment andframework initialization so you can focus on the task at hand,writing your tests. Real tests!»

Skip the BuildTest In-Container

ARQUILLIAN

• Massgeschneiderte Builds on-the-fly• Automatische Deployments• In-Container Testing - «the real thing!»• Integration mit Junit & IDE & Maven• Und Extensions

FEATURES

ArquillianTestrunner

MicroDeployment

CDI Bean

GewöhnlicheTestmethode

ARQUILLIAN TESTCASE

ARCHITEKTUR

«a simple, Apache-licensed Java API for assembling archives likeJARs, 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 EmbeddedVollständige Liste unter https://docs.jboss.org/author/display/ARQ/Container+adapters

CONTAINERS

The Big Testowskiin CDI+EJB+JPA incident

�Starring JBoss 7.1 & Websphere 8.5

Co-Starring Hibernate & H2 DatabaseDirected By Arquillian

Guest MS Excel

MOVIE TIME

DANKE WZU!

WegsucheVerifikation 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

• PersistenceTesting the Persistence Layer

• Drone, GrapheneAJAX-enable functional Tests for web-based UI

• Spring«replace the Spring test framework with Arquillian

and gain access to all the Arquillian extensions, inparticular 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