# TTCN-3

TTCN-3, kurz für Testing and Test Control Notation, ist eine domänenspezifische Programmiersprache zum Testen von kommunikationsbasierten Systemen. TTCN-3 wird beispielsweise für das Testen von Kommunikationsprotokollen und deren Schnittstellen eingesetzt. Außerdem wird es für das Testen von eingebetteten Systemen verwendet. TTCN-3 dient ebenso zur Spezifikation und Dokumentation von Testabläufen.
Die Vorgänger TTCN und TTCN-2 standen noch für Tree and Tabular Combined Notation.

## Standardisierungsgremien

Herausgeber des Standards sind ETSI und ITU-T.

## Typische Anwender

3GPP, OPEN Alliance, TETRA Association, IMS Forum, WiMAX-Forum, AUTOSAR, MOST Cooperation, OMA

## Eigenschaften
### Abstraktion

TTCN-3 ist eine abstrakte Testsprache, die verschiedene Repräsentationen unterstützt:
* textuelle Repräsentation (Core Notation)
* grafische Repräsentation (Graphical Format, GFT)
Die Repräsentationen von TTCN-3 sind gleichwertig. Außerdem besteht ein standardisiertes Mapping zwischen den einzelnen Repräsentationsarten.

### Erweiterbarkeit

Ein herausragendes Merkmal von TTCN-3 ist seine Erweiterbarkeit und mögliche Integrationen wie:
* Einbindung externer Datendefinitionen (ASN.1, IDL, XML und WSDL)
* Einbindung externer Funktionen (Java, C, C#)
* Adaption für das System Under Test (Testadapter/Codec)

### Standardisierte Schnittstellen: TCI und TRI

Zusätzlich zum textuellen und grafischen Repräsentationsformat beinhaltet TTCN-3 die standardisierten Schnittstellen TRI (TTCN-3 Runtime Interface) und TCI (TTCN-3 Control Interface).
* TRI – Adaption der abstrakten TTCN-3 Core Notation an das reale System unter Test
* TCI – Anbindung der TTCN-3 Core Notation an die Testplattform und das Text Management System (GUI, Commandline Version). Weiterhin wird die Spezifikation der Codierung und Logausgaben des Testflows vorgenommen.

### Anwendungsgebiete

* Mobile communications (LTE, WiMAX, 3G, TETRA, GSM)
* Broadband technologies (ATM, DSL)
* Middleware platforms (WebServices, CORBA, CCM, EJB)
* Internet protocols (SIP, IMS, SIGTRAN and IPv6)
* Smart Cards
* Automotive (TSN, AVB, OPEN, AUTOSAR, WAVE-DSRC, ITS-G5, eCall, MOST, CAN)
* Internet of Things (oneM2M)

## Werkzeuge zu TTCN-3

Für die Ausführung von Testfällen, die in TTCN-3 spezifiziert sind, werden ein Compiler sowie ein Laufzeitsystem benötigt. Diese werden von verschiedenen Herstellern angeboten:
* Spirent Communications → TTworkbench
* OpenTTCN → OpenTTCN Tester
* Elvior → TestCast

### TTthree

TTthree ist ein Compiler, der Anfang 2000 als Gemeinschaftsentwicklung der Arbeitsgruppe ÜBB der Technischen Universität Berlin und des Forschungsinstituts Fraunhofer Fokus entwickelt wurde. 2001 war TTthree der erste lauffähige TTCN-3-Compiler bei ETSI. Die Weiterentwicklung dieses Compilers sowie dessen Integration in ein IDE (Integration Development Environment) erfolgte anschließend bei der in Berlin ansässigen Ausgründung Testing Technologies IST GmbH, die als Überbau des reinen Compilers die TTworkbench entwickelte. TTthree ist lizenzrechtlich nur in Kombination mit der TTworkbench erhältlich. 2016 wurde Testing Technologies und damit die Weiterentwicklung von TTworkbench von Spirent Communications übernommen.

### TTworkbench

Die von Spirent Communications entwickelte TTworkbench ist eine integrierte Testentwicklungs- und Testausführungsumgebung basierend auf TTCN-3 und Eclipse IDE.

#### Lizenz

Die TTworkbench wird kommerziell von Spirent Communications lizenziert.

#### Aufbau

Die Anbindung der Oberfläche an den Compiler wird in einer Client-Server-Architektur realisiert; diese eher ungewöhnliche Methode der Interprozesskommunikation mit einem Compiler wurde gewählt, weil in der Frühphase der Entwicklung der Sprache TTCN-3 vielfach große Testreihen automatisiert aus der Vorgängerversion TTCN-2 übersetzt wurden und damit keine Aufteilung in verschiedene Module vorhanden war. Durch die Delegierung der Compile-Aufträge an einen Compiler-Server erhoffte man sich Performanzgewinne durch Caching-Mechanismen. Die Kommunikation zwischen der Oberfläche und dem Compiler erfolgt über binär codiertes XML.
Inzwischen sind die meisten Testreihen entweder manuell in sinnvolle Module strukturiert oder als Neuentwicklung gleich modular konzipiert worden, sodass der Punkt des Client-Server-Compilers wieder in den Hintergrund getreten ist.

#### TTCN-3 Editor

Die Konzipierung von TTCN-3 als abstrakte Sprache, die mehrere gleichwertige Repräsentationen kennt, wird in der TTworkbench umgesetzt, indem Testfälle sowohl in der textuellen als auch in der grafischen Darstellung (GFT) editiert werden können.
Datentypen können aus einer Reihe von Sprachen importiert werden, beispielsweise aus ASN.1, XSD, WSDL und IDL, sodass in diesem Fall auf eine textuelle Darstellung in TTCN-3 weitgehend verzichtet werden kann.

#### Verteiltes Testen durch TTmex

Die Laufzeitumgebung (Test Executable, TE), in der die in TTCN-3 spezifizierten Testfälle (Test Cases) tatsächlich abgearbeitet werden, kann bei der TTworkbench entweder lokal (das heißt auf demselben Rechner) gestartet werden, oder verteilt auf verschiedenen Rechnern zum Einsatz kommen. Durch die Parallelität kann die Gesamttestzeit erheblich reduziert werden. Die TTworkbench unterstützt das verteilte Testen mit Hilfe des TTmex-Plugins.

#### Integration in Eclipse

Die Hauptaufgabe von TTCN-3 besteht darin, in beliebigen Sprachen implementierte Protokolle und Anwendungen zu testen. Oft werden daher Programmteile, die in anderen Sprachen geschrieben sind, im Zusammenhang mit TTCN-3 eingesetzt. Die TTworkbench ist daher auf Eclipse basiert, das mit seinen Sichten und Perspektiven eine erweiterbare Plattform darstellt, um mehrere Sprachen und Anwendungen zu kombinieren.

##### Java

Die TTworkbench ist in Java implementiert, was durch die Integration in Eclipse nahegelegt ist. Auch die in TTCN-3 spezifizierten Testfälle werden in Java (das heißt in JAR-Dateien) übersetzt und als solche in der Laufzeitumgebung abgearbeitet.

#### Erweiterbarkeit

Einige übliche Plugins :
* ASN.1, FTP, GPIB, IDL, MOST, RS232, Telnet, TTmex, UDP, WSDL
Die TTworkbench realisiert eine Reihe ihrer Features durch ein Plugin-Konzept, zum Beispiel für weitere externe Sprachen oder Protokolle. Oft werden durch diese Plugins Möglichkeiten zum Import von Datentypen aus diesen Sprachen eröffnet. In der TTworkbench ist dieses Architekturkonzept der Rich Client Platform (RCP, seit Eclipse Version 3.0) konsequent umgesetzt, daher wird auch die Kernsprache, TTCN-3, erst durch ein Plugin verfügbar.
Anwender haben die Möglichkeit, eigene Plugins zu schreiben und einzubinden, etwa um den Aufruf von externen Funktionen von den in TTCN-3 spezifizierten Testfällen aus zu ermöglichen oder um spezielle Codecs einzubinden. Ebenso sind die (im Standard von TTCN-3 spezifizierten) Test-Adapter als Plugins realisiert.

#### Testkampagnen und Reporte

Wenn ein Hersteller ein Protokoll mit Hilfe von Testfällen spezifiziert, die in TTCN-3 geschrieben sind, dann stellt diese Liste von Testfällen zwar eine Testreihe dar, doch ist diese in der Praxis oft zu umfangreich und zu wenig gegliedert, um direkte Anwendung zu finden. Ein schlichtes Abarbeiten aller Testfälle dauert in der Regel zu lange und verlangt zu viel Vorbereitung, oft von entsprechender zu testender Hardware.
Die von der ETSI für TTCN-3 spezifizierten Testfälle (Test Cases) werden daher in der TTworkbench um das Konzept von Testkampagnen (Test Campaigns) und Metakampagnen (Meta Campaigns) erweitert. Mit Hilfe dieser Mittel lassen sich große Test-Suites zur Abarbeitung in der Laufzeitumgebung abbilden und gliedern.
Testkampagnen können vom Tester erstellt werden und stellen dabei Listen von zur konkreten Ausführung vorgesehenen Testfällen dar; einzelne Testfälle können hierbei noch parametrisiert werden. Ebenso kann eine Anzahl der Durchläufe für die einzelnen Testfälle festgelegt werden. Metakampagnen hingegen stellen Listen von Testkampagnen dar, die zur konkreten Ausführung vorgesehen sind.
Aus gelaufenen Testkampagnen und Metakampagnen und den dabei entstandenen Log-Dateien lassen sich in der TTworkbench Reports generieren. Diese Reporte können beispielsweise in HTML ausgegeben werden.

#### Verbreitung

Die TTworkbench hat nach Herstellerangaben einen Marktanteil von 30 bis 50 Prozent für automatisiertes Testen mittels TTCN-3. Einige tausend Lizenzen befinden sich im Umlauf; Universitäten und Forschungseinrichtungen können unter Umständen eine kostenlose Lizenz erhalten. Das Produkt wird monatlich mehrere Hundertmal heruntergeladen.

## TTCN-3 Training

Alle Anbieter von TTCN-3 basierten Werkzeugen bieten zur Testsprache sowie zum Werkzeug ein individuelles Training an, wobei Spirent Communications der erste akkreditierte Trainingsanbieter ist. Das akkreditierte Training setzt sich systematisch mit allen zehn Teilen des TTCN-3 Standards auseinander. Hierbei werden nicht nur theoretische Aspekte durchleuchtet, sondern die Teilnehmer werden durch verschiedene praktische Übungen geführt. Dazu gehört die Entwicklung mehrerer Testfälle von Scratch bis zur Ausführung gegen ein System Under Test.