Wir unternehmen IT.
Citrus
Automatisierte
Integrationstests
22. Juni 2015
Seite
Mission: Integrationstest
www.consol.de2
App BApp A
Schnittstelle / Vertrag
SOAP / WSDL
Seite
Mission: Integrationstest
www.consol.de3
App BApp A
Schnittstelle / Vertrag
SOAP / WSDL
Simulator ?
Mock ?
Seite
Mission: Integrationstest
www.consol.de4
App A
Schnittstelle / Vertrag
SOAP / WSDL
Seite
Mission: Integrationstest
www.consol.de5
System
Under Test
Webclient
Kunde
Agent / Techniker
Mobile, PDA
Verträge
Stammdaten
Dienstleister
Shipping
Seite
Dienstleister
Stammdaten
Agent / Techniker
Mission: Integrationstest
www.consol.de6
System
Under Test
Kunde
Seite
Build Lifecycle
www.consol.de7
Build-Lifecycle
Checkout &
Compile
Code
Änderung
Citrus
Integration
Tests
Unit
Tests
Package &
Deploy
Build-Tool (Maven)
Unit Test Framework
Citrus Test Framework
JUnit TestNG
Surefire Plugin
Test Execution
Seite
Testumgebung
www.consol.de8
Call Interfaces
Verify results
Code Versionierung (Git)
Application Server
(System Under Test)
Citrus Projekt
Build-Tool (Maven)
Continuous Build (Jenkins)
Test Reporting
Checkout Sources
Compile
Package
Deploy
Execute
Tests
Create
Reports
DBMS
Save
Update
Delete
Trigger Build
9Seite
Citrus Testfall
•  XML Testfallbeschreibung
www.consol.de
<testcase name="FirstSampleITest">
<meta-info>
<author>Christoph Deppisch</author>
<creationdate>2014-11-06</creationdate>
<status>DRAFT</status>
<last-updated-by>Christoph Deppisch</last-updated-by>
<last-updated-on>2013-11-14T00:00:00</last-updated-on>
</meta-info>
<description>This is a sample test case</description>
<actions>
<echo>
<message>TODO: Code the test!</message>
</echo>
<!-- Test actions go in here -->
[...]
</actions>
</testcase>
10Seite
Testaktionen
•  Testfall besteht aus 1-n Testaktionen
•  Erweiterbarkeit um eigene Testaktionen!
www.consol.de
Name Beschreibung Name Beschreibung
send Versenden einer Nachricht sql SQL Abfragen ausführen
receive Empfang einer Nachricht sleep Zeitspanne warten
echo Text ausgeben create-varaibles Testvariable(n) erstellen
java Java Code ausführen iterate Schleife
groovy Groovy Code ausführen repeat-until-true Schleife mit Bedingung
input Benutzereingabe repeat-onerror-until-true Fehlerschleife
assert Ausnahme erwarten parallel Parallele Ausführung
catch Ausnahme abfangen sequential Sequentielle Ausführung
ant ANT Skript ausführen conditional Bedingte Ausführung
11Seite
Nachrichten senden
•  Payload und Header werden definiert
•  Vordefinierten Endpoint wird referenziert
www.consol.de
<send endpoint="helloRequestJmsEndpoint">
<message>
<data>
<![CDATA[
<HelloRequest xmlns="http://consol.de/schemas/HelloService.xsd">
<MessageId>123456789</MessageId>
<CorrelationId>1020304050</CorrelationId>
<User>Christoph</User>
<Text>Hello Citrus</Text>
</HelloRequest>
]]>
</data>
</message>
<header>
<element name="Operation" value="sayHello"/>
<element name="CorrelationId" value=“1020304050"/>
</header>
</send>
12Seite
Nachrichten empfangen
•  Erwartete Payload und Header werden definiert
•  Vordefinierter Endpoint wird referenziert
www.consol.de
<receive endpoint="helloResponseJmsEndpoint">
<message>
<data>
<![CDATA[
<HelloResponse xmlns="http://consol.de/schemas/HelloService.xsd">
<MessageId>9988776655</MessageId>
<CorrelationId>1020304050</CorrelationId>
<User>Citrus</User>
<Text>Hello User</Text>
</HelloResponse>
]]>
</data>
</message>
<header>
<element name="Operation" value="sayHello"/>
<element name="CorrelationId" value=“1020304050"/>
</header>
</receive>
13Seite
Endpoints
•  Fertige Komponenten - nur Konfiguration notwendig!
–  citrus-jms, citrus-http, citrus-ws, citrus-ssh, citrus-ftp, citrus-mail,
citrus-camel, citrus-vertx, ...
www.consol.de
<!– HelloService JMS endpoints -->
<citrus-jms:endpoint id="helloRequestJmsEndpoint"
destination-name="JMS.HelloService.Request.Queue"/>
<citrus-jms:endpoint id="helloResponseJmsEndpoint"
destination-name="JMS.HelloService.Response.Queue"/>
<!-- SOAP web service client -->
<citrus-ws:client id="helloSoapClient"
request-url="http://localhost:8080/test"/>
<!– SOAP web server -->
<citrus-http:server id="helloSoapServer"
port="18080"
auto-start="true"
resource-base="src/citrus/resources"/>
14Seite
Test Variablen
www.consol.de
<send endpoint="helloRequestJmsEndpoint">
<message>
<data>
<![CDATA[
<HelloRequest xmlns="http://consol.de/schemas/HelloService.xsd">
<MessageId>${messageId}</MessageId>
<CorrelationId>${correlationId}</CorrelationId>
<User>${user}</User>
<Text>Hello Citrus</Text>
</HelloRequest>
]]>
</data>
</message>
<header>
<element name="Operation" value="sayHello"/>
<element name="CorrelationId" value="${correlationId}"/>
</header>
</send>
<variables>
<variable name="messageId" value="citrus:randomString(10)"/>
<variable name="correlationId" value="citrus:currentDate()"/>
<variable name="user" value="Christoph"/>
</variables>
15Seite
Java DSL
•  @CitrusTest Java Annotation
www.consol.de
import org.testng.annotations.Test;
import com.consol.citrus.dsl.TestNGCitrusTestBuilder;
public class MyFirstTest extends TestNGCitrusTestBuilder {
@CitrusTest(name="JavaDslTest")
public void test() {
description("This is a Test");
variable("text", "Hello World!");
echo("Hello Citrus!");
echo("${text}");
}
Seite
Zusammenfassung
•  Schnittstellen & Integration Tests
–  Automatisiert, Versioniert, Wiederholbar, Zuverlässig
•  Ein Framework testet alle Schnittstellen
–  Client + Server
–  SOAP Http, JMS, FTP, REST, SSH, TCP/IP, XML, JSON, CSV, ...
–  Kompletter UseCase (1-n Schnittstellen) in einem Testfall
•  Standards verwenden
–  Continuous Integration: Jenkins, Hudson, TeamCity, ...
–  Unit Test Frameworks: JUnit / TestNG
–  Build Lifecylce: Maven, ANT, Gradle
www.consol.de16
Seite
Zusammenfassung
•  Fertige Komponenten
•  Nachrichten Senden und Empfangen
•  Validieren und Verifizieren
•  Keine Simulatoren, keine Mocks notwendig
•  Keine verteilte Logik
•  Keine verteilte Dokumentation
•  Keine aufwändige Fehlersuche
•  Hohe Erweiterbarkeit
–  Eigene Testaktionen erstellen
–  Eigene Adapter (proprietäre Schnittstellen)
–  Eigene Validator Implementierungen (z.B. Excel, EDIFACT)
www.consol.de17
18Seite
Informationen
•  Homepage
• http://citrusframework.org
•  Tutorials
• http://citrusframework.org/tutorials.html
•  User Guide
• http://citrusframework.org/reference/html/index.html
•  Mailing List
• user@citrusframework.org
•  Twitter
• @citrus_test
•  Blog
• http://labs.consol.de/tags/citrus/
www.consol.de
Seite 19 www.consol.de
Fragen ?
Seite 20 www.consol.de
ConSol* Software GmbH
Franziskanerstraße 38
D-81669 München
Tel: +49-89-45841-100
Fax: +49-89-45841-111
info@consol.de
www.consol.de

Weitere ähnliche Inhalte

PDF
Arquillian & Citrus
PDF
Testing Microservices with a Citrus twist
PPTX
ODP
Präsentation webservices
PDF
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
PDF
camunda BPM @ JUG München
PDF
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
PPTX
Monitoring von SAP mit check_sap_health
Arquillian & Citrus
Testing Microservices with a Citrus twist
Präsentation webservices
Das dreckige Dutzend - ADF Migration nach 12c in der IKB - DOAG 2014.
camunda BPM @ JUG München
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Monitoring von SAP mit check_sap_health

Ähnlich wie Citrus Agile Testing Meetup (german) (20)

PDF
Java oberflächlich betrachtet - Welche GUI ist die richtige?
PPTX
check_sap_health
PDF
Wieviel client braucht das web
PDF
Die Zukunft der Webstandards - Webinale 31.05.2010
PDF
IBM Chat/Sametime Migration (CCTY 2016 Munich)
PDF
Back to the Frontend – aber nun mit Microservices
PPTX
Ionic 2 - Hybridapps auf Steroiden
PDF
Creasoft-Akademie - Mobile Multiplattform Apps
PDF
Cloud – Intune
PPTX
Lasttest auf Zuruf CloudTest on Demand webinar presentation
PDF
Wieviel Client braucht das Web?
PDF
HTML5 und node.js Grundlagen
PDF
Oracle WebLogic for DevOps
PDF
Oracle WebLogic for DevOps
PDF
OSMC 2016 | Hello Redfish, goodbye IPMI - Die Zukunft des Hardware-Monitorings
PDF
OSMC 2016 - Hello Redfish, Goodbye IPMI - The future of Hardware Monitoring
PDF
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
KEY
Web 2.0 revisited
PPTX
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
PDF
3) TRANSCONNECT®-Webschnittstellen für die Cloud, IoT & Co. - TRANSCONNECT-Ta...
Java oberflächlich betrachtet - Welche GUI ist die richtige?
check_sap_health
Wieviel client braucht das web
Die Zukunft der Webstandards - Webinale 31.05.2010
IBM Chat/Sametime Migration (CCTY 2016 Munich)
Back to the Frontend – aber nun mit Microservices
Ionic 2 - Hybridapps auf Steroiden
Creasoft-Akademie - Mobile Multiplattform Apps
Cloud – Intune
Lasttest auf Zuruf CloudTest on Demand webinar presentation
Wieviel Client braucht das Web?
HTML5 und node.js Grundlagen
Oracle WebLogic for DevOps
Oracle WebLogic for DevOps
OSMC 2016 | Hello Redfish, goodbye IPMI - Die Zukunft des Hardware-Monitorings
OSMC 2016 - Hello Redfish, Goodbye IPMI - The future of Hardware Monitoring
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
Web 2.0 revisited
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
3) TRANSCONNECT®-Webschnittstellen für die Cloud, IoT & Co. - TRANSCONNECT-Ta...
Anzeige

Citrus Agile Testing Meetup (german)

  • 2. Seite Mission: Integrationstest www.consol.de2 App BApp A Schnittstelle / Vertrag SOAP / WSDL
  • 3. Seite Mission: Integrationstest www.consol.de3 App BApp A Schnittstelle / Vertrag SOAP / WSDL Simulator ? Mock ?
  • 5. Seite Mission: Integrationstest www.consol.de5 System Under Test Webclient Kunde Agent / Techniker Mobile, PDA Verträge Stammdaten Dienstleister Shipping
  • 6. Seite Dienstleister Stammdaten Agent / Techniker Mission: Integrationstest www.consol.de6 System Under Test Kunde
  • 7. Seite Build Lifecycle www.consol.de7 Build-Lifecycle Checkout & Compile Code Änderung Citrus Integration Tests Unit Tests Package & Deploy Build-Tool (Maven) Unit Test Framework Citrus Test Framework JUnit TestNG Surefire Plugin Test Execution
  • 8. Seite Testumgebung www.consol.de8 Call Interfaces Verify results Code Versionierung (Git) Application Server (System Under Test) Citrus Projekt Build-Tool (Maven) Continuous Build (Jenkins) Test Reporting Checkout Sources Compile Package Deploy Execute Tests Create Reports DBMS Save Update Delete Trigger Build
  • 9. 9Seite Citrus Testfall •  XML Testfallbeschreibung www.consol.de <testcase name="FirstSampleITest"> <meta-info> <author>Christoph Deppisch</author> <creationdate>2014-11-06</creationdate> <status>DRAFT</status> <last-updated-by>Christoph Deppisch</last-updated-by> <last-updated-on>2013-11-14T00:00:00</last-updated-on> </meta-info> <description>This is a sample test case</description> <actions> <echo> <message>TODO: Code the test!</message> </echo> <!-- Test actions go in here --> [...] </actions> </testcase>
  • 10. 10Seite Testaktionen •  Testfall besteht aus 1-n Testaktionen •  Erweiterbarkeit um eigene Testaktionen! www.consol.de Name Beschreibung Name Beschreibung send Versenden einer Nachricht sql SQL Abfragen ausführen receive Empfang einer Nachricht sleep Zeitspanne warten echo Text ausgeben create-varaibles Testvariable(n) erstellen java Java Code ausführen iterate Schleife groovy Groovy Code ausführen repeat-until-true Schleife mit Bedingung input Benutzereingabe repeat-onerror-until-true Fehlerschleife assert Ausnahme erwarten parallel Parallele Ausführung catch Ausnahme abfangen sequential Sequentielle Ausführung ant ANT Skript ausführen conditional Bedingte Ausführung
  • 11. 11Seite Nachrichten senden •  Payload und Header werden definiert •  Vordefinierten Endpoint wird referenziert www.consol.de <send endpoint="helloRequestJmsEndpoint"> <message> <data> <![CDATA[ <HelloRequest xmlns="http://consol.de/schemas/HelloService.xsd"> <MessageId>123456789</MessageId> <CorrelationId>1020304050</CorrelationId> <User>Christoph</User> <Text>Hello Citrus</Text> </HelloRequest> ]]> </data> </message> <header> <element name="Operation" value="sayHello"/> <element name="CorrelationId" value=“1020304050"/> </header> </send>
  • 12. 12Seite Nachrichten empfangen •  Erwartete Payload und Header werden definiert •  Vordefinierter Endpoint wird referenziert www.consol.de <receive endpoint="helloResponseJmsEndpoint"> <message> <data> <![CDATA[ <HelloResponse xmlns="http://consol.de/schemas/HelloService.xsd"> <MessageId>9988776655</MessageId> <CorrelationId>1020304050</CorrelationId> <User>Citrus</User> <Text>Hello User</Text> </HelloResponse> ]]> </data> </message> <header> <element name="Operation" value="sayHello"/> <element name="CorrelationId" value=“1020304050"/> </header> </receive>
  • 13. 13Seite Endpoints •  Fertige Komponenten - nur Konfiguration notwendig! –  citrus-jms, citrus-http, citrus-ws, citrus-ssh, citrus-ftp, citrus-mail, citrus-camel, citrus-vertx, ... www.consol.de <!– HelloService JMS endpoints --> <citrus-jms:endpoint id="helloRequestJmsEndpoint" destination-name="JMS.HelloService.Request.Queue"/> <citrus-jms:endpoint id="helloResponseJmsEndpoint" destination-name="JMS.HelloService.Response.Queue"/> <!-- SOAP web service client --> <citrus-ws:client id="helloSoapClient" request-url="http://localhost:8080/test"/> <!– SOAP web server --> <citrus-http:server id="helloSoapServer" port="18080" auto-start="true" resource-base="src/citrus/resources"/>
  • 14. 14Seite Test Variablen www.consol.de <send endpoint="helloRequestJmsEndpoint"> <message> <data> <![CDATA[ <HelloRequest xmlns="http://consol.de/schemas/HelloService.xsd"> <MessageId>${messageId}</MessageId> <CorrelationId>${correlationId}</CorrelationId> <User>${user}</User> <Text>Hello Citrus</Text> </HelloRequest> ]]> </data> </message> <header> <element name="Operation" value="sayHello"/> <element name="CorrelationId" value="${correlationId}"/> </header> </send> <variables> <variable name="messageId" value="citrus:randomString(10)"/> <variable name="correlationId" value="citrus:currentDate()"/> <variable name="user" value="Christoph"/> </variables>
  • 15. 15Seite Java DSL •  @CitrusTest Java Annotation www.consol.de import org.testng.annotations.Test; import com.consol.citrus.dsl.TestNGCitrusTestBuilder; public class MyFirstTest extends TestNGCitrusTestBuilder { @CitrusTest(name="JavaDslTest") public void test() { description("This is a Test"); variable("text", "Hello World!"); echo("Hello Citrus!"); echo("${text}"); }
  • 16. Seite Zusammenfassung •  Schnittstellen & Integration Tests –  Automatisiert, Versioniert, Wiederholbar, Zuverlässig •  Ein Framework testet alle Schnittstellen –  Client + Server –  SOAP Http, JMS, FTP, REST, SSH, TCP/IP, XML, JSON, CSV, ... –  Kompletter UseCase (1-n Schnittstellen) in einem Testfall •  Standards verwenden –  Continuous Integration: Jenkins, Hudson, TeamCity, ... –  Unit Test Frameworks: JUnit / TestNG –  Build Lifecylce: Maven, ANT, Gradle www.consol.de16
  • 17. Seite Zusammenfassung •  Fertige Komponenten •  Nachrichten Senden und Empfangen •  Validieren und Verifizieren •  Keine Simulatoren, keine Mocks notwendig •  Keine verteilte Logik •  Keine verteilte Dokumentation •  Keine aufwändige Fehlersuche •  Hohe Erweiterbarkeit –  Eigene Testaktionen erstellen –  Eigene Adapter (proprietäre Schnittstellen) –  Eigene Validator Implementierungen (z.B. Excel, EDIFACT) www.consol.de17
  • 18. 18Seite Informationen •  Homepage • http://citrusframework.org •  Tutorials • http://citrusframework.org/tutorials.html •  User Guide • http://citrusframework.org/reference/html/index.html •  Mailing List • user@citrusframework.org •  Twitter • @citrus_test •  Blog • http://labs.consol.de/tags/citrus/ www.consol.de
  • 20. Seite 20 www.consol.de ConSol* Software GmbH Franziskanerstraße 38 D-81669 München Tel: +49-89-45841-100 Fax: +49-89-45841-111 info@consol.de www.consol.de