Citrus Agile Testing Meetup (german)

594 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
594
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
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

×