PL/SQL Unit testing

Datenbank unit testing best practise:

  • Eine private Datenbank Instanz für jeden Developer. Beim Entwickeln von Tests für Datenbanken ist sehr wichtig, dass der Zustand von dem Datenbank Schema und Daten während der Entwicklung sich nicht verändert. Deswegen, in Projekten mit mehreren Entwicklern, sollte jeder Entwickler in eigener privater Instanz arbeiten, um Konflikten mit anderen Entwicklern oder Programmen zu vermeiden.
  • Tests müssen unabhängig von Resultaten der anderen Tests sein. Am einfachsten kann man das erreichen, indem man vor jedem Test die Datenbank in initialen Zustand versetzt. Als mögliche Lösung kann man nach jedem Test die Datenbank Schema vollständig aufräumen, oder einfach keine Test Daten und Ergebnisse speichern (Rollback nach jedem Test).
  • Eine Cleanup Funktion. Es ist oft nötig oder unvermeidlich (automatisches commit beim DDL Operationen in Oracle), dass während der Test-Ausführung, Daten in der Datenbank gespeichert werden. Man sollte für diese Fälle eine Cleanup Funktion entwickeln, die das ganze Schema in Initialzustand versetzt, zum Beispiel durch das Einspielen von DB Dump, oder vollständiges Aufräumen der Inhalte aller Tabellen.
  • Kleine Datasets. Für die meisten Unit-Tests ist das vollständige Datenbank Inhalt nicht erforderlich. Stattdessen sollte man womöglich nur kleine, spezifische Datasets für jeden Test erstellen, was die Fehleranalyse erleichtert und einzelnen Tests unabhängig voneinander macht.
  • Gemeinsame Datasets. Viele Tests verwenden ähnliche Initialdaten, um die Entwicklung von solchen Tests zu vereinfachen, sollte man gemeinsame Datasets definieren, die von unterschiedlichen Tests wiederverwendet werden können. Die gemeinsame Datasets können auch vor der Ausführung von Test-Suits (die auf gemeinsamen Daten basieren), direkt in die Datenbank gespeichert werden, um die Test-Initialisierung zu verkürzen. Nach der Test-Suite Ausführung muss die Cleanup Funktion ausgeführt werden.
Weitere Links:
Präsentation von Steven Feuerstein über UnitTesting von PL/SQL

Frameworks zum Unit-Testing von PL/SQL Programmen.

NameVersionLicenceTest styleLink
utPLSQL2.2GPLStored ProceduresURL
Quest code tester?proprietarydeclarativeURL
PL/Unit?proprietaryPL/SQL packagesURL
PLUTO – PL/SQL Unit Testing for Oracle49Artistic License/GPLPL/SQL classesURL
ruby-plsql-spec0.2.1freeRuby DSLURL
DBFit1.1GPLfunctional specifikationURL
DBUnit2.4.8Lesser GPLJava/XMLURL
SQLDeveloper3.0proprietaryWizards, SQLURL


Quelle: http://www.vilinski.de/tag/plsql

Kommentare

Beliebte Posts aus diesem Blog

trunc(sysdate) - nette Spiele mit dem Datum

Zufallszahlen und -text generieren - DBMS_RANDOM

Laufzeiten umrechnen, Sekundenangaben lesbar darstellen