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.
Präsentation von Steven Feuerstein über UnitTesting von PL/SQL
Frameworks zum Unit-Testing von PL/SQL Programmen.
Name | Version | Licence | Test style | Link |
---|---|---|---|---|
utPLSQL | 2.2 | GPL | Stored Procedures | URL |
Quest code tester | ? | proprietary | declarative | URL |
PL/Unit | ? | proprietary | PL/SQL packages | URL |
PLUTO – PL/SQL Unit Testing for Oracle | 49 | Artistic License/GPL | PL/SQL classes | URL |
ruby-plsql-spec | 0.2.1 | free | Ruby DSL | URL |
DBFit | 1.1 | GPL | functional specifikation | URL |
DBUnit | 2.4.8 | Lesser GPL | Java/XML | URL |
SQLDeveloper | 3.0 | proprietary | Wizards, SQL | URL |
Quelle: http://www.vilinski.de/tag/plsql
Kommentare
Kommentar veröffentlichen