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
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