# Cantata++

Cantata++ oder einfach Cantata, wie es in den neueren Versionen genannt wird, ist ein patentrechtlich geschütztes Computerprogramm für Softwaretests während der Laufzeit von C- und C++-Programmen.

## Überblick

Cantata gehört zur Gruppe der dynamischen Testwerkzeuge. Diese bringen kompilierte Testfälle und den hinzu gebundenen Prüfling auf der Host- bzw. einer Zielplattform zur Ausführung. Die Anbindung eines Debuggers erfolgt optional.
Klassische Anwender dieser Software-Testverfahren sind Entwicklungsteams für Host-Software oder für Hardware-nahe Programmierung von Eingebetteten Systemen. Benutzer von Cantata sind in der Regel Software-Entwickler sowie Test-Designer für Softwaretests.
Die IDE von Cantata ist Eclipse-basiert und stellt darüber hinaus ein Eclipse-Plugin für entsprechende Entwicklungsumgebungen z. B. der Compilerhersteller bereit. Umgekehrt können alle Eclipse-Plugins, die in der Cantata IDE nutzbar sind, installiert werden. Da das Programm über eine integrierte Kommandozeile verfügt, eignet es sich ebenso zur Einbindung von Testautomatisierung und Kontinuierlicher Integration.
Entwickelt wird Cantata vom Konzern QA Systems. Die QA Systems GmbH hat das Produkt und dessen gesamtes Entwicklungsteam im Jahr 2012 von IPL Information Processing Ltd. übernommen und daraufhin die QA Systems Ltd. mit Sitz in Bath (UK) gegründet.

## Funktionsweise

Mit Cantata erstellt der Benutzer eine Reihe von Modultests, Modulintegrationstests und Überdeckungstests für C- und C++-Code.
Die Notwendigkeit solcher Tests ergibt sich meist aus der Produkthaftung, die sich nach dem aktuellen Stand der Technik bemisst. Dieser drückt sich wiederum in Normen, wie z. B. IEC 61508 und Derivaten wie ISO 26262 oder EN 50128 aus. Darunter sind Anforderungen formuliert, wie die funktionale Sicherheit hinsichtlich einer Sicherheitsanforderungsstufe überprüft werden sollen.
Welche C- und C++-Sourcen in Cantata getestet werden, legt der Benutzer zu Beginn eines Testzyklus fest. Seine Entscheidung trifft er in Abhängigkeit von der Reife der Module, deren Schnittstellen sich möglichst nicht mehr ändern sollten. Nach dieser Auswahl setzt der Benutzer ein eigenständiges Software-Testprojekt auf, das quasi parallel zum Software-Entwicklungsprojekt geführt und gepflegt wird.
Eine Kopie des Quelltextes (Software Under Test, Prüfling) wird mit zusätzlichen Anweisungen ausgestattet und umgeben. Diese Instrumentierung eines Moduls ist notwendig, da sie dazu dient, den Prüfling technisch in einen ausführbaren Rahmen zu setzen. Der Testrahmen wird durch Cantata generiert und enthält bspw. den Testtreiber und den notwendigen Programm-Einsprungpunkt main, da dieser im Prüfling selbst meist fehlt.
Einzelne Funktionen / Methoden des Moduls werden mit festzulegenden Eingabewerten ausgeführt. Die Resultatwerte werden mit festzulegenden erwarteten Werten verglichen. Diese Testfallspezifikation ist Aufgabe des Test-Designers und erfolgt nach seinem Ermessen, zufolge einer abgestimmten Teststrategie, oder anhand der vorliegenden Spezifikation funktionaler Anforderungen.
Weil der Prüfling im Software-Entwicklungsprojekt von anderen Modulen umgeben ist, müssen diese für einen Modultest aus dem Software-Testprojekt entfernt werden. An deren Stelle treten Substitute, welche dem Prüfling die tatsächliche Ausführung der umgebenden Module in vereinfachter Weise vortäuschen. Diese Substitute werden als Stubs oder Mocks bezeichnet und tragen dieselbe Funktionssignatur wie ihre Originale.
Ebenso werden über Cantata die Funktionsrümpfe solcher Stubs und Mocks generiert. Wahlweise automatisch auf der Kommandozeile oder in der IDE. Für die simplifizierte Implementierung des Substituts ist der Test-Designer zuständig. Dieser kann jedoch selbst bei der Programmierung auf einen Code-Generator zurückgreifen wenn er möchte. Das erweist sich vor allem beim Testen von Legacy-Code wiederverwendbarer Software-Komponenten als besonders nützlich.
Optional wird während der Laufzeit die Codeabdeckung gemessen, zusätzlich oder ausschließlich, d. h. wenn gewünscht sogar ohne vorherige Testfallspezifikation. Überdeckungstests sind ebenfalls relevant für sicherheitskritische Anwendungen mit SIL. Messen lassen sich damit bspw. Anweisungsüberdeckung, Entscheidungsüberdeckung und weitere.
Cantata unterscheidet sich im Vergleich zu anderen Software-Testtools: Bei Cantata gibt der Test-Designer nur einen kleinen Teil des Testfalles über den grafischen Dialog ein. Den Rest programmiert er im strukturierten Quellcode des Testrahmens. Das fertige Test-Binary (= Binärdatei, die mit dem Test ausgeführt wird) enthält die Testwerte.

## Produkteigenschaften
### Host-Betriebssysteme

* Microsoft Windows
* Linux
* Solaris
* andere

### Objektsprachen

* C
* C++

### Zielcompiler

* Gnu gcc/g++
* Green Hills
* IAR Systems
* iSYSTEM
* Keil
* NEC / Renesas
* Tasking
* Visual Studio C/C++
* Wind River
* weitere

### Lizenzbedingungen

* Floating License Server.
* Eine einzelne Lizenz kann aus dem Floating License Server ausgeliehen werden
* Node Locked License.