Cantata Logo - unit and integration testing tool for C/C++


FLEXIBLE TESTTECHNIKEN


Embedded Unit- und Integrationstests:
Ein Werkzeug für alles, was Sie brauchen.

Cantata ist das dynamische Tool für Unit- und Integrationstests in C und C++. Das Werkzeug hilft, Tests zu atomatisieren. Und schafft so die Basis, die Sicherheitsstandards für Software zu erfüllen. Was in der Softwareentwicklung best practise ist, kann mit Cantata ganz einfach in den Programmieralltag umgesetzt werden.


Welches sind die effektivsten und effizientesten Kombinationen von Testtechniken für Ihre C- und C++-Codes? Mit Cantata können Sie sie auswählen.


Was auch immer in C und C++ möglich ist, mit Cantata können Sie es umsetzen. Denn Cantata Tests laufen auf jedem Code-Editor.

Gezielte Flexibilität

 

Keine einzelne Tool-Suite kann alle Arten von Tests unterstützen – da macht auch Cantata keine Ausnahme. Der Fokus von Cantata liegt auf den Anforderungen an Unit- und Integrationstests, die an standardkonformen C- und C++-Code in eingebetteten Systemen gelegt werden.


Wie sollen Ihre Unit- und Integrationstests gestaltet sein, damit sie Ihre Anforderungen erfüllen? Wie können Sie Ihre eigenen Tests verbessern? Mit Cantata stellen Sie sich Ihr optimales Test-Set zusammen.

Cantata is focused on the unit and integration testing requirements of standard compliant dynamic testing C and C++ code on embedded systems

Testtechniken: Das kann Cantata

Requirements driven testing - Cantata verifying that software does as it is supposed to - Requirements data - Test information - Requirements management tools

TESTS AUF BASIS DER ANFORDERUNGEN

 

Macht die Software tatsächlich das, was sie tun soll? Mit Cantata testen Sie Ihre Software auf Basis Ihrer Anforderungen (Low-Level Anforderungen, Spezifikationen oder Modelle).


Der Cantata Test Harness testet den Code über ein Testskript. Dabei ruft es Funktionen mit ausgewählten Inputs (Parameter und Daten) auf. Der Abgleich des tatsächlichen mit dem erwarteten Verhalten der Software erfolgt automatisiert.


Da die Anforderungen in die Cantata-IDE importiert werden können, ist es viel einfacher, Testfälle zu definieren und die Anforderungen mit Testfällen und Testskripts nachzuverfolgen (weitere Informationen finden Sie in der Funktionalität "Cantata Anforderungen nachverfolgen")

ROBUSTHEITSTESTS

 

Cantata unterstützt dynamische Stabilitätstests. So kann geprüft werden, ob der Code auch mit abweichenden Bedingungen fertig wird. Dabei werden Techniken eingesetzt, die von allen Sicherheitsstandards verlangt werden. Zum Beispiel:

  • abnormal system initialization
  • invalid inputs & data
  • failure mode handling
  • boundary values
  • arithmetic edge conditions
  • timing constraints
  • memory allocation
  • error seeding

Stabilitätstests sind mit den Cantata Robustness Regel-Sets ganz einfach. Die Regel-Sets enthalten vordefinierte Werte für die Basisdatentypen in Testschleifen. Alle verfügbaren globalen Daten werden automatisch auf unbeabsichtigte Änderungen geprüft. Mit den Cantata Testskripten und dem Wrapping können ganz einfach abweichende Testvorbedingungen erstellt werden. Genauso einfach ist es, Fehler während der Tests gezielt zu platzieren (weitere Informationen finden Sie in der Funktionalität "Cantata Einzigartige Aufrufsteuerung").

Robustness testing image - abnormal system initialization - invalid inputs & data - failure mode handling - Boundary values - arithmetic edge condition - Timing constraints - memory allocation - error sending - Cantata flexible testing techniques - wall of code
Structural testing identifies source code untested by requirements driven and robustness tests - Cantata code coverage will find any unexecuted code - flow chart template

STRUKTURTESTS

 

Gibt es Code, der bei Anforderungs- oder Stabilitätsstests übersehen wurde? Mit Strukturtests werden diese Testlücken lokalisiert und identifiziert

 

Die Cantata Codeabdeckung (innerhalb und außerhalb der Cantata- Tests) findet diese Lücken – im speziellen Kontext oder ganz allgemein. Wie schließt man diese Lücken? Entweder mit weiteren Testfällen auf Basis neuer Testfälle. Dabei wird dokumentiert, weshalb der Code nicht in einem speziellen Kontext ausgeführt werden soll. Oder, indem man redundaten Code entfernt (weitere Informationen finden Sie in der Funktionalität "Cantata Codeabdeckung").

 

Cantata AutoTest generiert automatisch ganze Testskripte oder zusätzliche Testfälle. So wird das Ziel einer 100-Prozent-Abdeckung erreicht (weitere Informationen finden Sie in der Funktionalität "Cantata AutoTest")

BLACK-BOX-TESTS

 

Beim Black-Box-Testen wird der Code nur über seine Schnittstellen geprüft. Ob sich der Code korrekt verhält, kann hier auch ohne Kenntnis der internen Gegebenheiten geprüft werden.

 

Cantata bringt mehr Leistung ins Black-Box-Testen. Dieselben Funktionen können mit großen Daten-Sets – Input-Parameter oder Datenwerten – aufgerufen werden.

 

Die Reihenfolge der erwarteten Aufrufe und erwarteten Rückgabewerte kann variieren – abhängig von den Eingabedaten-Sets. Daneben werden die globalen Daten-Outputs während des Tests geprüft.

 

Die parametergesteuerten Testdaten-Sets von Cantata können über CSV importiert oder exportiert werden. Bei der Auswahl der Testvektoren hilft ein GUI-kombinatorischer Effektrechner. Die automatische Abdeckungsoptimierung in Cantata findet das jeweils bestmögliche Set der Testvektoren, das benötigt wird, um die Abdeckungsziele zu erreichen.

Black-box testing verifies code only via its public interfaces, and does not require knowledge of internal code implementation for checking correct behavior - Cantata brings power to black box testing
Cantata uses white box testing to verify code by granting access to the encapsulated code internals

WHITE-BOX-TESTS

 

Bei White-Box-Tests greift der Test auch auf eingeschlossene Code-Interna zu (private bzw. statische Daten und Funktionen).


Cantata gewährt Testern direkten Zugriff darauf, ohne dass der produktive Code mit bedingter Kompilierung verunreinigt wird. Für den Fall einer vollautomatischen Erreichbarkeitsausstattung geschieht dies nur während des Tests.

VERFAHRENS- UND ZUSTANDSTESTS

 

Cantata Verfahrenstests prüfen die Prozesslogik oder Algorithmen in Funktionen, indem sie geeignete Parameter-Sets oder Dateneingaben nutzen und prüfen, ob die Aufrufe und Wiedergabewerte so sind, wie es erwartet wird. Cantata analysiert den Source Code, um Testskripte zu generieren mit den notwendigen Test-Hooks auf Funktionsparametern und den für die User zugänglichen Daten für Eingabe und Prüfung.


Zustände werden über Auslösebedingungen getestet. Sie schaffen Ereignisse, um korrekte Zustandsübergänge zu prüfen. Cantata-White-Box-Tests macht das besonders effizient, denn es verfügt über einen direkten Zugang zu lokalen statischen Funktionsdaten.

 

Um sicher zu sein, dass der Code auch in verschiedenen Zuständen getestet worden ist, kann die benutzerdefinierte Kontext-Codeabdeckung in Cantata eingesetzt werden (weitere Informationen finden Sie in der Funktionalität "Cantata Codeabdeckung").

 

 

Procedural and state machine testing diagram - Cantata procedural tests verify the processing logic or algorithms in functions - flow chart
Parallel inheritance hierarchy diagram - Cantata Object oriented testing - makes C++ isolation testing easy

OBJEKTORIENTIERTES TESTEN

 

Die Cantata OO-Style-Tests stehen als Klassen für Testmethoden, Templates oder Clusterklassen zur Verfügung. Sie bieten:

  • Automatisierte Wiederverwendung von Testfällen über eine parallele Vererbungshierarchie
  • Automatisierte Testklassen-Vererbungsstruktur über vererbte Klassen
  • Automatisierte konkrete Umsetzungen abstrakter Basisklassen (ABCs) oder Pure Virtual Methods (PVMs)

Um die Klassenabhängigkeitsketten aufzubrechen und isolierte C++-Tests zu vereinfachen, findet und löst Cantata automatisch Abhängigkeiten auf undefinierte Verweise, die nicht direkt von der Software während des Tests aufgerufen werden (weitere Informationen finden Sie in der Funktionalität "Cantata Einzigartige Aufrufsteuerung – Wrapping").

ISOLIERTE UNITTESTS

 

Cantata schreibt nicht vor, welcher Teil des Codes als Unit getestet wird oder wie sehr jede Unit vom Rest des Systems abgetrennt wird. Cantata ist da völlig flexibel. Die automatisch konfigurierbare Generation von Stubs und Isolates zum Simulieren und die Wrapper für das interne und externe Abfangen von Aufrufen machen es während des Tests möglich. Cantata prüft, sobald eine Unit kompiliert wird, ob die internen Prozesse richtig laufen und ob die Interfaces (Parameter und Daten) korrekt eingesetzt werden. Und das ohne Zugriff auf den Rest des Systems.


Dafür erstellt Cantata einen initialen ausführbaren Testfall für jede Funktion und jede Methode in der oder den ausgewählten Quelldatei/en. Die Cantata Unittests rufen eine Funktion auf und initialisieren dabei alle Input- und Output-Parameter, die verfügbaren Daten und erwarteten Aufrufreihenfolge. Die einzelnen Testfälle sind voneinander unabhängig, ebenso wie die Plattformen, auf denen sie laufen. So verhindert man eine Verkettung von Abhängigkeiten.

Cantata uses Isolation unit testing of C/C++ - Automatic configurable generation of stubs and isolates to simulate, and wrappers to intercept calls made both externally and internally by the unit under test
Cantata driven integration tests are just large unit tests for C/C++ - Cantata Test script - global data

INTEGRATIONSTESTS

 

Integrationstests mit Cantata sind im Grunde große Unittests. Aus mehreren Units wird jedoch eine Gruppe gebildet, die dann als einzelne ausführbare Datei arbeitet. Ein solcher Test kann das interne Verhalten jeder Unit prüfen. Viel wichtiger ist aber, dass gleichzeitig die Interaktionen der einzelnen Units geprüft werden, zum Beispiel:

  • inter-unit memory allocation
  • order of data read / writes
  • order of calls between units

Die Integrationstests mit Cantata sind flexibel. Die Zugangspunkte für Testskripte sind frei wählbar, ob es sich nun um interne oder externe Simulationen (Stubs oder Isolates) handelt. Oder um Wrapper für verschiedene Integrationstestarten (top-down, bottom-up oder all-as-one).
Es ist auch möglich, die Cantata Wrapper in einer Testumgebung einzusetzen, die nicht von Cantata bereitgestellt wird. Damit gewinnen Sie eine bessere Kontrolle über die Integrationstests.


 

Die oben dargestellten Techniken können in unterschiedlichen Kombinationen angewendet werden, sodass sie mit den Anforderungen der Sicherheitsstandards und den Best-Practises der Industrie perfekt übereinstimmen.


Wie werden Testfälle optimal aufgebaut? Welche Anforderungen stellen die einzelnen Sicherheitsstandards? Weitere Informationen erhalten Sie in unseren umfangreichen "Resources".

Start
Trial
QA-Systems