Auf der Suche nach einem geeigneten PL/SQL Unit-Test-Framework / Tool bin ich auf einige potentielle Kanditaten gestoßen. Aber welches Tool bzw. welches Unit-Testing Framework passt am besten zu meinem Kundenprojekt?

Anforderungen

Um sich für „das richtige“ Tool bzw. Framework zu entscheiden, möchte ich euch kurz erläutern, welche Anforderungen wir eigentlich haben.

  • da die CI Umgebung unter Unix läuft, muss das Tool/Framework ebenfalls unter Unix läuffähig sein
  • die Intgration – Ausführung sowie Auswertung – in Jenkins sollte möglich sein – bestenfalls mit einem Plugin
  • die erstellten Tests müssen in einem Versionierungstool abgelegt werden können
  • die Anschaffungskosten spielen eine sehr große Rolle bei meinem Kunden – daher idealerweise kostenfrei
  • Ein PL/SQL Entwickler sollte in die Lage versetzt werden, die Testfälle selbstständig zu erstellen

Tools und Frameworks

Ich habe mich auf die Suche begeben und folgenden potentiellen Kanditaten untersucht.

SQL-Developer Unit Testing Framework

Da der SQL-Developer schon in meinem Projekt eingesetzt wird, war es naheliegend das integrierte Unit Testing Framework mit grafischer Unterstützung zu testen. Nachdem ich das Repository installiert und den ersten Testfall geschrieben haben, ist mir sofort aufgefallen, dass Object Types als Parameter in einer Methode nicht unterstützt werden. Leider ist in meinem Projekt so ziemlich jede Methode mit Object Types bestückt. Als Workaround müsste ich nun alle Methoden in einer Testmethode wrappen und die Object Types somit „auflösen“. Das ist bei der Anzahl an Methoden nicht zeitnah umsetzbar und somit war mein Top Kanditat nach wenigen Stunden aus dem Rennen. Im Oracle SQL Developer Exchange habe ich auch gleich den entsprechenden Post entdeckt. Eine Bitte an euch, votet für dieses Feature – dann wird es vielleicht in einer der kommenden SQL Developer Versionen integriert werden.

Ein Erfahrungsbericht aus einem anderen Projekt, hatte mich in meiner Entscheidung, den SQL-Developer Unit-Testing-Framework nicht weiter in Betracht zu ziehen, bekräftigt. Mir wurden von vielen Bugs in der Software berichtet – by the way – das Projekt steigt jetzt auch auf ein anderen Unit-Testing-Framework um. Mehr Infos zum SQL-Developer

PL/SQL Developer – Test Manager

Wie auch der SQL Developer ist der PL/SQL Developer in dem Projekt im Einsatz. Es handelt sich bei dem Test Manager wirklich nur um eine ganz rudimentäre Unterstützung bei der Erstellung von Tests. Das größte Problem – die Tests können nur im PL/SQL Developer „abgespielt“ werden. Einen separaten „Runner“ für ein anderes Betriebssystem gibt es nicht. Von daher ist ist der PL/SQL Developer ebenfalls raus.

TOAD Development Suite  – Code Tester for Oracle

Der Code Tester for Oracle wurde unter der Leitung von Steve Feuerstein von der Firma Dell entwickelt. Um es nutzen zu können, müsst ihr die TOAD Development Suite erwerben. Diese kostet so ca. 2.500€ pro Installation. Von daher hat der Preis hier die Auswahl weiter eingeschränkt. Hat jemand von euch Erfahrung mit dem Code Tester sammeln können?

DB-Unit

Der Tipp kam von einem Java-Entwickler – tolles Open Source Tool aber ein Haken hat die ganze Sache, die Tests werden in Java geschrieben. Wer also DB-Entwickler mit Java Skills im Team sollte sich DB-Unit  auf jeden Fall näher ansehen.

utPLSQL

Dieses Framework utPLSQL wurde 1999 von Steven Feuerstein initial entwickelt und wird seitdem ständig weiterentwickelt. Es handelt sich dabei um ein Open Source Projekt – mehr Informationen findet ihr hier. Das Framework erfüllt alle oben genannten Anforderungen.

Fazit

Wir haben uns für das Unit-Testing Framework utPLSQL in der Version 2.3.1 entschieden. Es erfüllt, wie schon erwähnt, alle oben genannten Anforderungen. Wie das Framework funktioniert und wie wir es in unerem Projekt integriert haben, erfahrt ihr in der PL/SQL Unit-Tests – Blogserie.