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
St...
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
...
Seite
Testumgebung
www.consol.de8
Call Interfaces
Verify results
Code Versionierung (Git)
Application Server
(System Under...
9Seite
Citrus Testfall
•  XML Testfallbeschreibung
www.consol.de
<testcase name="FirstSampleITest">
<meta-info>
<author>Ch...
10Seite
Testaktionen
•  Testfall besteht aus 1-n Testaktionen
•  Erweiterbarkeit um eigene Testaktionen!
www.consol.de
Nam...
11Seite
Nachrichten senden
•  Payload und Header werden definiert
•  Vordefinierten Endpoint wird referenziert
www.consol....
12Seite
Nachrichten empfangen
•  Erwartete Payload und Header werden definiert
•  Vordefinierter Endpoint wird referenzier...
13Seite
Endpoints
•  Fertige Komponenten - nur Konfiguration notwendig!
–  citrus-jms, citrus-http, citrus-ws, citrus-ssh,...
14Seite
Test Variablen
www.consol.de
<send endpoint="helloRequestJmsEndpoint">
<message>
<data>
<![CDATA[
<HelloRequest xm...
15Seite
Java DSL
•  @CitrusTest Java Annotation
www.consol.de
import org.testng.annotations.Test;
import com.consol.citrus...
Seite
Zusammenfassung
•  Schnittstellen & Integration Tests
–  Automatisiert, Versioniert, Wiederholbar, Zuverlässig
•  Ei...
Seite
Zusammenfassung
•  Fertige Komponenten
•  Nachrichten Senden und Empfangen
•  Validieren und Verifizieren
•  Keine S...
18Seite
Informationen
•  Homepage
• http://citrusframework.org
•  Tutorials
• http://citrusframework.org/tutorials.html
• ...
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...
Nächste SlideShare
Wird geladen in …5
×

Citrus Agile Testing Meetup (german)

587 Aufrufe

Veröffentlicht am

Slides to the Agile Testing Meetup Lightning Talk in Munich. Slides are in german language as the Meetup was done in german

Veröffentlicht in: Software
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
587
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Citrus Agile Testing Meetup (german)

  1. 1. Wir unternehmen IT. Citrus Automatisierte Integrationstests 22. Juni 2015
  2. 2. Seite Mission: Integrationstest www.consol.de2 App BApp A Schnittstelle / Vertrag SOAP / WSDL
  3. 3. Seite Mission: Integrationstest www.consol.de3 App BApp A Schnittstelle / Vertrag SOAP / WSDL Simulator ? Mock ?
  4. 4. Seite Mission: Integrationstest www.consol.de4 App A Schnittstelle / Vertrag SOAP / WSDL
  5. 5. Seite Mission: Integrationstest www.consol.de5 System Under Test Webclient Kunde Agent / Techniker Mobile, PDA Verträge Stammdaten Dienstleister Shipping
  6. 6. Seite Dienstleister Stammdaten Agent / Techniker Mission: Integrationstest www.consol.de6 System Under Test Kunde
  7. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  19. 19. Seite 19 www.consol.de Fragen ?
  20. 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

×