# Expecco

Expecco (Eigenschreibweise: expecco) ist ein Werkzeug zur grafischen Entwicklung, Ausführung und Automatisierung von Testfällen im Bereich Soft- und Hardwaretests. Testfälle werden graphisch als Aktivitätsdiagramme modelliert und auf Knopfdruck sofort (d. h. ohne den Zwischenschritt eines Generators) mittels dynamischer Just-in-time-Kompilierung in ausführbaren Code überführt und ausgeführt. Die explorative Testerstellung wird durch Debug-Funktionen (Singlestep, Breakpoints, Trace von Funktionen und Datenflüssen) unterstützt. Einsatzbereiche sind primär Integrations- und Abnahmetests sowie Regressionstests komplexer Systeme aus den Bereichen Automotive, Luft- und Raumfahrt, Telekommunikation, Automatisierung und Steuerung sowie Logistik, Banking und Finanzsoftware.

## Methodik

Expecco ist ein Black Box Testsystem. Dem System Under Test (SUT) wird über Schnittstellen vom Testsystem eine Außenwelt simuliert (Anreize), dann dessen korrektes Verhalten direkt oder über Mess- und Prüfgeräte verifiziert. Sowohl Anreize als auch die Verifizierung werden vom Testsystem durchgeführt. Testfälle werden vorrangig als Aktivitätsdiagramme mit funktionalen Aktionsbausteinen modelliert. Dazu werden Aktionsbausteine hierarchisch zu komplexeren Aktionen kombiniert. Die Weitergabe von Parametern, Eingangswerten sowie Resultaten erfolgt gemäß dem Datenflussmodell über konfigurierbare Warteschlangen (vgl. Coloured Petrinet und Flow Based Programming). Elementare Aktionsbausteine werden aus bestehenden Bibliotheken per Drag and Drop platziert. Es ist aber auch möglich, dass diese vom Anwender oder Drittanbietern selbst in einer JavaScript-ähnlichen Skriptsprache erstellt werden. Die Skriptsprache ist Teil des Tools und somit plattformübergreifend. Testsuiten können ohne Änderung auf Windows, Linux und Unix basierten Systemen entwickelt und ausgeführt werden. Durch Parametrisierung und Virtualisierung von Bausteinen können Teilsequenzen in mehreren Testfällen wiederverwendet werden.
Testabläufe können ohne Programmierkenntnisse grafisch modelliert und automatisiert werden. Zur Kommunikation mit dem System Under Test werden aber typischerweise elementare Bausteine benötigt, welche die Schnittstelle zu existierenden Funktionen als Funktionsaufruf in eine DLL, Java oder .NET Klasse oder den Aufruf von externen Programmen oder Diensten (SOAP, XML-RPC, REST) realisieren. Dies kann als Nachteil gewertet werden, da hierzu eine gewisse Programmiererfahrung benötigt wird.
Durch die Kombination von graphischer Modellierung mit dynamischer Übersetzung wird hier versucht, die Probleme klassischer modellbasierter Entwicklung (lange turn around Zeiten, erschwerte Fehlersuche im Modell) zu umgehen.
Hauptmerkmale:
* Modellierung von Testfällen als Aktivitätsdiagramm
* Kurze turn-around Zeiten, durch dynamische Just-in-time-Kompilierung
* Unterstützung des Testentwicklungsprozesses durch erweiterte Debug-Funktionen
* Plattformunabhäng
* Selbstdokumentierend, (Modell stellt Ausführungsspezifikation dar)

## Schnittstellen

Die Kommunikation mit dem SUT erfolgt über Schnittstellenbausteine, welche in domänenspezifischen Bibliotheken zusammengefasst sind. Diese unterstützen u. a.:
* Test von Internet/Intranet Anwendungen (Capture/Replay von Sitzungen im Webbrowser, Generierung synthetischer Useraktionen)
* Test von Desktop-Anwendungen (Java SWT u. Swing, Qt und andere)
* Test von Android/iOS-Anwendungen
* Test von Windows-Mobile-Anwendungen
* Zugriff auf Klassen und GUI-Komponenten von Java- und .Net-Framework-Anwendungen
* Protokolle und Nachrichtenkodierungen (ASN.1, SOAP, XML-RPC, REST, SNMP, XML, Message Queues, SWIFT, Some/IP, MQTT)
* Interaktion über Prüf- und Debugschnittstellen

## Import von Testbeschreibungen

Aktivitätsdiagramme können in verschiedenen Formaten teilweise oder vollständig importiert werden: XMI, Enterprise Architect, BPEL, MindMaps, Word- und Excel-Testfallbeschreibungen.

## Einbindung in die Infrastruktur

Expecco selbst kann als Teil eines unternehmensweiten Qualitymanagements von anderen Tools gestartet und falls erforderlich auch ferngesteuert werden. Expecco kann mit Jenkins/Hudson, Polarion, HP Quality Center und anderen Tools kombiniert werden, und Reports in kompatiblen Formaten erzeugen (JUnit-XML, PDF, Text etc.). Via SOAP, XML-RPC oder Telnet können Tests auch von beliebigen anderen Programmen gestartet und kontrolliert werden.

## Einsatz

Die Software ist bei verschiedenen Unternehmen weltweit im Einsatz, unter anderen bei Airbus, Brose, Alcatel-Lucent, Swisscom, UBS, Deutsche Telekom, T-Systems sowie Visteon.