Drucken

Unit Testing mit Boost Test

Auf Unit Tests (deutsch: Modultests, auch: Komponententests) kann heutzutage in der professionellen Software-Entwicklung nicht mehr verzichtet werden. Sie sind wesentlicher Bestandteil der Qualitätssicherung und tragen dafür Sorge, das Code langfristig änderbar und evolvierbar bleibt. Ohne Unit Tests kann es keine Refactorings geben, denn wie will man sonst beweisen, dass das Modul nach der Restrukturierung noch das gleiche Verhalten zeigt wie vor den Umbaumaßnahmen? Eine gute und einfache Möglichkeit für Unit Tests in C++ bietet die Boost Test Library, die ich in diesem Tutorial vorstellen werde.

Ohne Tests geht es nicht!

CCD LogoAutomatisierte Unit-Tests gehören zu den Praktiken des Gelben Grads des Clean Code Developments, und das nicht ohne Grund:

  • Sie decken früh Fehler auf und prüfen das Modul isoliert.
  • Sie nehmen dem Entwickler die Angst vor Refactorings: während der Umstrukturierung unbeabsichtigt eingebaute Fehler werden sofort entdeckt.
  • Dadurch, das Unit Tests die Module per definitionem isoliert testen müssen (...alles andere wären nämlich Integrationstests!), wird der Entwickler dazu angehalten das zu testende Modul so zu schreiben, das es keine lästigen und unnötigen Abhängigkeiten besitzt (Software Design For Testability).
  • Neben dem Aufdecken von Fehlern dienen Unit Tests auch dazu, im Rahmen einer testgetriebenen Entwicklung (TDD) das Design einer Software zu beeinflussen und einen inkrementellen Entwurf zu unterstützen.
  • Wird eine Software erweitert, so helfen Unit Tests unbeabsichtigte Auswirkungen dieser Erweiterungen auf bereits existierende Bestandteile des Systems zu entdecken.
  • So ganz nebenbei fällt auch eine Schnittstellen-Dokumentation für die Module ab, denn die Unit Tests zeigen einem Entwickler der das Modul verwenden möchte, wie dieses zu benutzen ist.
  • Durch Automatisierung der Tests spart man Zeit und erhöht die Produktionseffizienz, denn durch die immerwährende Wiederholung aller Testfälle (Regression) werden unerwünschte Nebenwirkungen oder Seiteneffekte bei Codeänderungen schnell aufgedeckt.

Unit Tests finden allerdings nur dann die volle Akzeptanz der Entwickler, wenn ihre Erstellung einfach ist und durch ein gutes Framework unterstützt wird. Ist hingegen die Testerstellung ein langwieriges und kompliziertes Unterfangen, so wird dieses - insbesondere unter Zeitdruck - sehr schnell vernachlässigt werden. Im C++-Umfeld gibt es mittlerweile zahlreiche Unit Test Frameworks, eines davon ist die Boost Test Library (kurz: boost.test). Dieses Tutorial zeigt nun kurz einen Einstieg in diese Bibliothek anhand eines sehr minimalen C++ Projektbeispiels unter Microsoft Visual-Studio 2010.

Boost Test

Zunächst benötigen wir eine aktuelle Version der Boost Library, die wir uns bei www.boost.org oder direkt bei SourceForge herunterladen können. Nach dem Entpacken der Library muss zunächst das Boost-eigene Build Tool Boost.Jam (bjam) erzeugt werden; darauf möchte ich im Einzelnen nicht näher eingehen, eine Anleitung dazu findet man u.a. hier. Ebenfalls nicht näher beschreiben möchte ich den Build der Boost Bibliothek mit Hilfe von bjam, da es auch hierzu zahlreiche Anleitungen im WWW gibt (siehe z.B. Building Boost Library for Visual C++).

Amazon Ads...

Hosted by...

Creative Commons License

Dieses Werk bzw. dieser Inhalt steht unter einer Creative Commons Namensnennung-Nicht-kommerziell-Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz.

Fork me on GitHub