In diesem Post erkläre ich die Arbeitsweise und grundlegende Architektur des Unit-Testing Frameworks utPLSQL.

utplsql-plsql-unit-testing-framework-architektur-und-arbeitsweise

Architektur

Das utPLSQL Unit-Testing-Framework kann m.E. in 4 wesentliche „Komponenten“ sowie einen Konfigurationsmodul unterteilt werden:

  1. Generierung (utGen) – Es unterstützt den PL/SQL Entwickler bei der initialen Generierung von PL/SQL Test-Packages auf Basis von bestehenden PL/SQL SourceCodes.
  2. Assertion-Bibliothek (utAssert) -Des Weiteren stellt das Framework eine umfangreiche Sammlung von vordefinierten Assertions zur Verfügung, um die Erwartungshaltung des Entwicklers in den Unit-Tests zu überprüfen.
  3. Ausführung (utPLSQL) – Nach der Entwicklung von Unit-Tests, müssen diese automatisiert auf der lokalen Entwicklungs- sowie Continuous Integration Umgebung ausgeführt werden.
  4. Reporting (utResult und utOutput) – Das flexible Reporting wertet durchgeführte Tests sowie TestSuiten aus und bietet verschiedene Möglichkeiten der Aufbereitung des Test-Results an.

Das Konfigurationsmodul (utConfig) hat unmittelbaren Einfluss auf die Komponenten: Generierung, Ausführung sowie Reporting. Eine Konfiguration bezieht sich immer auf genau einen DB-User.

Das utPLSQL Unit-Testing Frameworks muss auf jeder Datenbank installiert werden, in der Unit-Tests entwickelt und/oder ausgeführt werden. Es besteht im wesentlichen aus PL/SQL Packages und Tabellen. Puplic Synonyme ermöglichen allen DB-Usern der Datenbank Zugriff auf das utPLSQL Unit-Testing Frameworks.

Arbeitsweise

Das utPLSQL Unit-Testing-Framework verfolgt einen ganzheitlichen Ansatz, d.h. es unterstützt bei der Erstellung sowie bei der Ausführung und Auswertung von Unit-Tests.

Development

Ein PL/SQL Entwickler wird sich vorzugsweise mit der Generierungskomponente und der Assertion Bibliothek auseinander setzten. Die Representation eines Unit-Tests im utPLSQL Framework ist ein PL/SQL Packages. Dieses kann initial durch das Framework generiert werden. Jedoch sollte man keine vollständig implementierten PL/SQL Unit-Test Packages vom Framework erwarten. Die eigentlichen Implementierungsaufwand muss immer noch der PL/SQL Entwickler leisten. Ein wesentlicher Bestanteil eines Tests sind die sogenannten Assertions. Diese Bewerten das Ergebnis eines jedes einzelnen Tests.

Execution

Unter den Oberbegriff Execution fasse ich alles zusammen was für die Ausführung und Auswertung von PL/SQL Unit-Test verantwortlich ist. Ziel sollte es m.E. sein, diese Framework-Komponenten einmalig, z.B. auf der Continuous-Integration Umgebung, einzurichten und bei jedem Build/Deployment vollautomatisiert ausführen zu lassen.