Liste von Modultest-Software

Modultestsoftware (meist aber "Test-Frameworks", englisch Unit test frameworks) bezeichnet Software-Frameworks zur Durchführung von Modultests (oft auch Komponententests genannt). Sie dienen dem Nachweis von Fehlern in einzelnen Komponenten (Modulen) einer Software, beispielsweise einzelnen Klassen. Als Voraussetzung für Refactoring kommt ihm besondere Bedeutung zu. Nach jeder Änderung sollte durch Ablauf aller Testfälle nach Programmfehlern gesucht werden.

Modultestsoftware bzw. Test-Frameworks gibt es mittlerweile für fast jede Programmiersprache. Oft haben die Namen dieser Frameworks die Form xyzUnit (z. B. JUnit für Java, siehe unten). Testrahmen dienen dazu, den Quelltext besser und automatisch testen zu können. Damit kann nach Modifikationen am Quelltext relativ schnell festgestellt werden, ob die vorher erstellten Tests immer noch dieselben Ergebnisse haben.

Liste

ABAP

  • ABAP Unit ist die Implementierung des Frameworks für ABAP und steht ab SAP NetWeaver Release 2004 zur Verfügung.
  • TEST.easy testet direkt ABAP und ABAP-OO sowie Datenbank und Filesystem ohne Programmierung, ist selbst in ABAP implementiert und steht ab SAP NetWeaver 7.02 SP13 zur Verfügung[1]

Ada

Nach Art, Umfang und Lizenz unterscheidbare Testwerkzeuge für Ada schließen ein:

  • Ahven[2], eine portable Bücherei für einfache Tests, im Verfahren an JUnit-Tests angelehnt.
  • AUnit[3], eine auf Ada zugeschnittene Variante von JUnit aus dem GNAT-Umfeld.
  • VectorCAST/Ada[4], ein Werkzeug für das automatisierte Unit- und Integration-Testing.

ASCET

Time Partition Testing (TPT): Modellbasierter Modultest des physikalischen Modells als auch des Implementierungsmodells, ebenfalls für ASCET-DEVELOPER.

C

Für die Programmiersprache C gibt es verschiedene Implementationen, die sich hauptsächlich in ihrem Funktionsumfang, Lizenzen und Einsatzgebieten unterscheiden:

  • BTC EmbeddedTester:[5] Kommerzielles Werkzeug für Modultests inklusiver automatischer Testfall-Generierung. Zertifiziert für ISO 26262, IEC 61508 und verwandte Standards.
  • Cantata++: Kommerzielles Werkzeug für Modultests, Modulintegrationstests und Überdeckungstests, auch für Embedded Software.
  • cfix:[6] Spezialisiert für Win32 und Windows NT kernel mode-Entwicklung. Lizenziert unter der GNU Lesser General Public License (LGPL). Basierend auf cfix existiert mit Visual Assert[7] ein Add-In, welches Visual Studio um Unit Testing-Funktionalität erweitert.
  • Check:[8] Einfach zu nutzendes Framework mit Ausführung in separatem Adressraum (übersteht Speicherzugriffsverletzungen) und IDE-kompatiblen Ausgaben.
  • CUnit:[9] Umfangreiche Implementation. Lizenziert unter der GNU Lesser General Public License (LGPL). Das Projekt wird unter SourceForge gehostet.
  • Embedded Unit: Spezielles Framework für Embedded Systems. Lizenziert unter der MIT-Lizenz. Das Projekt wird ebenfalls unter SourceForge gehostet.
  • MinUnit: Demonstration eines minimalistischen Frameworks, Public Domain.
  • Sput:[10] Simples, portables C Unit Testing Framework, einzelne Header-Datei, 2-Clause BSD-Lizenz.
  • TESSY: Kommerzielles Werkzeug für Modultests, Modulintegrationstests und Überdeckungstests, speziell für Embedded Software.
  • Testwell ctc++ Test Coverage Analyser für Modul-/Unit-Tests für alle embedded Systeme.
  • Time Partition Testing (TPT): Kommerzielles Werkzeug von PikeTec für modellbasiertes Testen eingebetteter Steuerungs- und Regelungssysteme. TPT unterstützt für zu testenden C-Code die automatische Testrahmengenerierung inklusive einer automatischen Schnittstellenanalyse sowie die automatische Testdurchführung, Auswertung und Protokollierung.
  • uCUnit: Spezielles Framework für kleine Mikrocontrollersysteme. Lizenziert unter der Common Public License (CPL) v1.0.
  • VectorCAST/C++: Kommerzielles Werkzeug für Modultests, Modulintegrationstests und Überdeckungstests, vor allem für sicherheits- und missionskritische Embedded Software.

C++

  • Boost Test Library
  • Cantata: Kommerzielles Werkzeug für Modultests, Modulintegrationstests und Überdeckungstests von C und C++ Code.
  • Casmine vom MySQL Workbench Team entwickeltes C++17 Test Framework mit BDD Funktionalität - modelliert nach dem Javascript Test Framework Jasmine, GPL Lizenz, typsicher und auto-registrierend, erweiterbar.
  • cfix:[6] Spezialisiert für Win32 und Windows NT kernel mode-Entwicklung. Lizenziert unter der GNU Lesser General Public License (LGPL). Basierend auf cfix existiert mit Visual Assert[7] ein Add-In, welches Visual Studio um Unit Testing-Funktionalität erweitert.
  • CppUnit ist die Portierung von JUnit auf C++. Ursprünglich wurde es von Michael Feathers geschrieben, ist jetzt aber ein offenes Projekt unter SourceForge. Da er allerdings den Eindruck hatte, dass CppUnit mittlerweile zu kompliziert zu installieren war, entschied sich Feathers, die abgespeckte Variante CppUnitLite[11] zu schreiben.
  • CUTE:[12] ein simples, erweiterbares C++ Unit Testing Framework mit einem an JUnit angelehnten Plugin für Eclipse CDT.
  • CxxTest, CppTest: Beides offene Projekte auf SourceForge.
  • Google Test von Google entwickeltes C++-Test-Framework.
  • libunittest: Eine portable Testbibliothek basierend auf C++11.[13]
  • Qt unterstützt Modultests (QTestLib).
  • TESSY: Professionelles Werkzeug für Modul-/Unit-Tests, speziell von Embedded Software.
  • Testwell CTA++ C++ Test Aider
  • Testwell ctc++ Test Coverage Analyser für Modul-/Unit-Tests (C, C++, Java, C#).
  • Time Partition Testing (TPT): Kommerzielles Werkzeug von PikeTec für modellbasiertes Testen eingebetteter Steuerungs- und Regelungssysteme. TPT unterstützt für zu testenden C-Code die automatische Testrahmengenerierung inklusive einer automatischen Schnittstellenanalyse sowie die automatische Testdurchführung, Auswertung und Protokollierung.
  • VectorCAST/C++: Kommerzielles Werkzeug für Modultests, Modulintegrationstests und Überdeckungstests, vor allem für sicherheits- und missionskritische Embedded Software.

COBOL

  • CobolUnit ist ein zu XUnit kompatibles Framework.
  • savvytest[14] ist ein auf Eclipse basierendes (kommerzielles) Testtool zur Erfassung und Durchführung von Komponententests, das vorwiegend zum Testen von Mainframe-Komponenten (insbesondere COBOL unter z/OS) konzipiert wurde. Zudem wird die rein technische Schnittstelle durch zusätzliche Spezifikationen in einer fachlichen Sicht dargestellt und mit Testdaten versorgt. Die Tests an sich werden sprach- und plattformunabhängig gespeichert.

Dart

Unittest ist bei Dart in der Bibliothek unittest verfügbar[15].

Delphi

DUnit ist eine Portierung von JUnit für Embarcadero Delphi. In der Version „Delphi 2005“ wurde es von Borland (später CodeGear, heute Embarcadero Technologies) als fester Bestandteil in die Entwicklungsumgebung aufgenommen.

Java

JavaScript

JSUnit[16] wurde von Edward Hieatt nach dem Vorbild JUnit gebaut und bietet manuelle wie auch komplett integrierte Tests für JavaScript mit browser- und betriebssystemübergreifenden Testservern. Die Entwickler von JSUnit empfehlen allerdings mittlerweile die Verwendung von Jasmine. Weitere Testframeworks für JavaScript sind YUI[17], mocha[18] oder QUnit.

Lingo (Macromedia Director)

LingoUnit ist ein Framework für die interpretierte Skriptsprache Lingo in Macromedias Autorensystem Director, welches ebenfalls unter SourceForge geführt wird.

.NET

  • NUnit ursprünglich eine 1:1-Portierung von JUnit auf das .Net-Framework, insbesondere für C# und Visual Basic .NET. Wurde mittlerweile mit spezifischen .NET Features erweitert neu geschrieben und unterstützt alle .NET-Sprachen.
  • xUnit.net:[19] Wurde vom Erfinder von NUnit geschrieben und ist die neueste Technologie zum Testen von .NET-Sprachen.
  • MSTest: Microsoft bietet das in Visual Studio integrierte Unit-Test-Framework MSTest an.
  • PEX: Microsoft bietet das in Visual Studio integrierte Unit-Test-Framework PEX an. Dies dient zur automatischen Generierung von Unit-Tests und den dazugehörigen Test Cases.[20][21]
  • Time Partition Testing (TPT): Kommerzielles Werkzeug von PikeTec für modellbasiertes Testen eingebetteter Steuerungs- und Regelungssysteme. Für die Anbindung an .NET steht eine Programmierschnittstelle (API) an die TPT-VM zur Testausführung zur Verfügung.

Perl

  • Perl hat eine weit zurückreichende Geschichte automatischer Tests. Perl selbst wird automatisch getestet und zur Perldistribution gehören eine Reihe von Testmodulen. Hier beginnt man am besten mit Test::Simple, arbeitet sich zu Test::More vor und taucht dann in die Tiefen von Test::Class und den weiteren Modulen ab. Diese verwenden alle das Test Anything Protocol (TAP).[22]
  • Des Weiteren gibt es Test::Unit und Test::Unit::Lite, welche Derivate von JUnit sind.

PHP

  • PHPUnit ist die Portierung von JUnit auf PHP und wurde von Sebastian Bergmann geschrieben.
  • APHPUnit führt alle Testfälle in eigenen Prozessen aus. Dadurch ist es möglich, seiteneffektfrei z. B. statische Variablen zu testen. Weiterhin ist die Ausführung sehr schnell, da multiple Testfälle parallel ausgeführt werden.[23]
  • Simpletest ist eine nicht mehr aktiv weiterentwickelte Portierung von JUnit, die um weitere Funktionen wie Mock Objects und Funktionen zum Testen von Web-Seiten erweitert wurde.

PL/SQL

  • utPLSQL[24] ist ein UnitTest-Framework für PL/SQL, welches ebenfalls unter SourceForge geführt wird.
  • Code Tester for Oracle ist ein kommerzielles Produkt zur Definition und Durchführung Unit Tests für PL/SQL. Es handelt sich um eine Weiterentwicklung von utPLSQL und wird von Dell vertrieben.
  • SQL Developer enthält Features zur Definition und Durchführung Unit Tests für PL/SQL. Diese IDE ist kostenlos und wird von Oracle vertrieben. Zum Betrieb ist ein Repository auf einer Oracle-Datenbank erforderlich.

Python

  • Ein Unittest-Modul ist fester Bestandteil der Python-Standard-Bibliothek.
  • pytest[25] ist ein Open Source Test-Framework und ermöglicht im Vergleich zum Unittest-Modul der Standardbibliothek eine einfachere und effektivere Definition von Tests.
  • HILSTER Testing Framework (htf)[26] ist ein Unittest-Framework mit Erweiterungen für Hardware-in-the-Loop zum Test von eingebetteten Systemen.[27]

Ruby

  • Unittest ist in Ruby in der Standard-Bibliothek als Test::Unit oder RUnit verfügbar.
  • RSpec ist ein verhaltensgetriebenes Entwicklungs- und Testframework für Ruby.

Matlab/Simulink

  • BTC EmbeddedTester:[5] unterstützt den Requirements-basierten Test und automatisierten Back-to-Back Test von Simulink, TargetLink und Embedded Coder Modellen. Zertifiziert für ISO 26262, IEC 61508 und verwandte Standards.
  • Simulink Design Verifier von The MathWorks generiert Testfälle zur vollständigen Überdeckung und einen Testrahmen. Zum Einsatz kommen dabei Formale Methoden.
  • SystemTest von The MathWorks kann Modelle testen und dabei auch Parameter verändern. Inputstimuli können manuell oder durch statistische Verteilungen generiert werden.
  • Time Partition Testing (TPT) von PikeTec[28] ist ein kommerzielles Werkzeug für modellbasiertes Testen eingebetteter Steuerungs- und Regelungssysteme. TPT unterstützt für zu testenden Simulink- oder TargetLinkmodelle die automatische Testrahmengenerierung inklusive einer automatischen Schnittstellenanalyse sowie die automatische Testdurchführung, Auswertung und Protokollierung. Back-to-Back Tests können automatisiert zwischen MiL und SiL ausgeführt werden.
  • mlUnit[29] xUnit Framework zum Testen von Matlab-Skripten

Shell(s)

Smalltalk

SUnit: Das vermutlich erste Framework zum Erstellen von Komponententests wurde von Kent Beck für die Programmiersprache Smalltalk geschrieben. Die Idee wurde schnell auf andere Programmiersprachen übertragen.

Tcl

Tcl enthält das Modul tcltest für Modultests. Auch andere Test-Frameworks wurden in Tcl geschrieben, bekannt ist etwa DejaGnu, mit dem der gcc getestet wird. Zudem kann man in wenigen Zeilen ein „Framework“ selbst erstellen:

   proc test {command expected} {
      catch {uplevel 1 $command} res
      if {$res ne $expected} {
         puts "$command->$res, not $expected"
      }
   }

Tests (in eigenen Quelldateien, oder direkt beim Code) sehen dann so aus: man gibt eine Anweisung und das erwartete Ergebnis an. Wenn ein unerwartetes Ergebnis ausgewertet wird, so wird dies angezeigt:

   test {expr 3 + 4} 7

Transact-SQL

TSQLUnit[32] ist ein Framework für Unittests in Transact-SQL. Es hält sich an die Tradition des xUnit Frameworks, das es für viele Programmiersprachen gibt.

Visual Basic 6

vbUnit: Das deutsche Unternehmen Maaß Computertechnik aus Bochum hat das xUnit Framework für Visual Basic 6 implementiert. vbUnit ist nicht vollkommen Open Source. In der kostenpflichtigen Version 3 Professional erhält man das Unit Testing Framework für Visual Basic 6 inklusive eines Microsoft Visual Studio 6 Add-on. Die Basic Version von vbUnit wird unter der GNU Lesser General Public License (LGPL) angeboten, das heißt, dass man zu dieser Version sowohl die kompilierten Komponenten als auch den Quellcode erhält. Der TestRunner und das Add-on für Microsofts Visual Studio 6 in der Professional-Ausgabe sind kostenpflichtig und nicht Open Source.

Tessy

Tessy ist ein Werkzeug zum automatisierten Modultest von in C oder C++ geschriebener Software, besonders für Embedded Systeme.

Siehe auch

Weblinks

Einzelnachweise

  1. TEST.easy. Abgerufen am 5. März 2019.
  2. Ahven- Unit Testing Library for Ada Programming Language. Abgerufen am 30. September 2016.
  3. AUnit. Ada unit testing framework. (Nicht mehr online verfügbar.) Archiviert vom Original am 30. September 2016; abgerufen am 30. September 2016.
  4. Ada Unit and Integration Testing Tool. Abgerufen am 30. September 2016.
  5. a b https://www.btc-es.de/de/produkte/uebersicht.html
  6. a b cfix-testing.org
  7. a b visualassert.com
  8. https://libcheck.github.io/check/
  9. cunit.sourceforge.net
  10. www.use-strict.de/sput-unit-testing/
  11. CppUnitLite-Beschreibungsseite - Ward's Wiki u. a. m. Download-Link
  12. cute-test.com
  13. libunittest C++ library
  14. savvytest beim Hersteller savignano software solutions
  15. Unit Testing with Dart
  16. JSUnit
  17. YUI (Memento vom 26. Juli 2013 im Internet Archive)
  18. [1]
  19. xUnit.net. Abgerufen am 6. November 2022 (englisch).
  20. Pex and Moles - Isolation and White box Unit Testing for .NET
  21. PEX - Automatisches Generieren von Unit-Tests (Memento vom 9. Januar 2014 im Internet Archive)
  22. testanything.org
  23. APHPUnit
  24. utplsql bei SourceForge
  25. pytest: helps you write better programs. Abgerufen am 6. November 2022 (englisch).
  26. HILSTER Testing Framework. Abgerufen am 6. November 2022 (englisch).
  27. https://docs.hilster.io/htf/latest/
  28. PikeTec
  29. mlUnit
  30. Website: code.google.com. Git-Repos: github.com
  31. Selbstauskunft: shunit2.txt
  32. TSQLUnit beiSourceForge