Prozesse
DB Struktur
Zukunfts-
sicherheit
Strategische Beratung
Wartung & Support
Wartung
Aktualisierung Analyse
Oracle Lizenzmanagement
Benjamin Jörger 215.11.2010
DB Struktur
Dienste
Sicherheit
Verfügbarkeit
Implementierung
Aktualisierung
Administration
Support
Projektmanagement
Planung
Koordination
Ausführung
Test & Freigabe
Analyse
Konsolidierung
Management
Agenda
o Continuous Integration
o PL/SQL Testframeworks
Benjamin Jörger 315.11.2010
o Hudson als CI-Server
o PL/SQL – Continuous Integration mit Hudson
Voraussetzungen für Continuous Integration
o CI- Servero Hudson (Open Source)
o Tests bzw. Testszenarien
Benjamin Jörger 615.11.2010
o Versionskontrollsystemo Subversion / SVN
o Bereitschaft der Entwickler bzw. des Managements
Vorteile durch Continuous Integration
o Höhere Qualität des Quellcodes
o Zeitnahe Fehlererkennung
Benjamin Jörger 715.11.2010
o Kostenreduktion im Fehlerfall
Nachteile durch Continuous Integration
o Höherer Zeitaufwand bei der Entwicklungo Zusätzliche Pflege des Testsystemso Testentwickler/-szenarien nötigo Funktionale vs. GUI-Tests
Benjamin Jörger 915.11.2010
o Kontrollen notwendigo Werden die Sourcen kontinuierlich eingecheckt?o Wie hoch ist die Testabdeckung?
Testframeworks
� Erstellen von Testcases mit Assertions
Warum ein Testframework?
Benjamin Jörger 1115.11.2010
� Bereitstellung von Pre-/Postmethoden
� Organisation von Testfällen in Suiten
� Reporting
Übersicht an PL/SQL Testframeworks
� PL/Unit
� Einfache Installation (Package) +
� Einfache Implementierung von Tests +
Benjamin Jörger 1215.11.2010
� Einfache Implementierung von Tests +
� Keine eigenen Statistiken –
� Keine Integrationsmöglichkeit zu CI –
� www.plunit.com
Übersicht an PL/SQL Testframeworks
� PLUTO
� Einfache Installation (Package) +� Objektorientierter Ansatz + / –� Keine eigenen Statistiken –
Benjamin Jörger 1315.11.2010
� Keine eigenen Statistiken –� Keine Integrationsmöglichkeit zu CI –� http://code.google.com/p/pluto-test-framework
� Artistic License/GPL
Übersicht an PL/SQL Testframeworks
� utPLSQL
� Einfache De-/Installation (Package) +� Eigene Statistiken +
Benjamin Jörger 1515.11.2010
� Eigene Statistiken +� Integrationsmöglichkeit zu CI +� http://utplsql.sourceforge.net� GPL
Übersicht an PL/SQL Testframeworks
� utPLSQL Packageübersicht
Package Beschreibung
utPLSQL Kontrollmechanismen für die Tracinginformationen,Starten von Tests bzw. Testsuiten
utConfig Konfiguration der Testumgebung
Benjamin Jörger 1715.11.2010
( User, Fileoutput, Dateformat, Delimiter, Recompile, u.v.m. )
utResult Diverse Möglichkeiten die Ergebnisse des letzten Testlaufs auszuwerten (Iteration der Ergebnisse, Zugriff auf alle Ergebnisse, Fehler true/false, …)
utAssert Umfangreiche Assertions nicht nur auf skalare Werte,
sondern auch für Tabellen, Objekte, Queries
utGen Codegenerator für die einfache Erstellung von neuen Testsuiten
utOutput Speicher für mehrere Testläufe(Ergebnisse) und Zugriffsmethoden
utSuite Handling von Testsuites (CRUD)
utPackage Handling von Testpackages einer Suite (CRUD)
Hudson als Continuous Integration Server
o Einfache Installation und Konfiguration
o Open Source
o Plugin Konzept für diverse Build Tools
Benjamin Jörger 1915.11.2010
o Plugins für viele Programmiersprachen
o Plugins für differenzierte Auswertungen
o Plugins für Benachrichtigungen
o www.hudson.org
Ziele von Versionskontrollsystemen
o Eine einheitliche Codebasis für mehrere Entwickler
o Bereitstellung von Basisfunktionaltäteno Checkouto Commito Updateo Merge
Benjamin Jörger 2315.11.2010
o Merge
o Bereitstellung von „Working Software“
o Anbietero Subversion (SVN / Open Source)o Concurrent Versions System (CVS / Open Source)o IBM Rational ClearCase
Ziele von Build Tools
o Build Tools erstellen aus Quellcode auslieferbare Softwarepakete sie lösen bestehende Abhängigkeiten automatisch auf
o PL/SQL bauen ???o Konfiguration des Plugins o Konfiguration der Jobs die von Hudson ausgeführt werden sollen
Benjamin Jörger 2515.11.2010
o Anbietero Anto Maveno Buildroot
1. Installation und Konfiguration vono Maveno utPLSQLo Subversiono Hudson
Step by Step
Benjamin Jörger 2715.11.2010
2. Erstellen von PL/SQL Packages für den Produktionsbetrieb
3. Erstellen von Testpackages per utPLSQL
4. Anlegen eines Jobs in Hudson
Erstellen von Testpackages per utPLSQL
Erzeugen des Testrumpfes per Generator
executGen.testpkg ('betweenstr');
DBMS_OUTPUT
CREATE OR REPLACE PACKAGE ut_betweenstr
Benjamin Jörger 2815.11.2010
CREATE OR REPLACE PACKAGE ut_betweenstr
IS
PROCEDURE ut_setup;
PROCEDURE ut_teardown;
PROCEDURE ut_<method 1>;
PROCEDURE ut_<method n>;
END ut_betweenstr;
/
Aufbau von Testmethoden
…PROCEDURE ut_test_equals
IS
against_this VARCHAR2(2000);
check_this VARCHAR2(2000);
BEGIN
against_this := 'cde';
check_this:=BETWNSTR (STRING_IN => 'abcdefgh‘, START_IN => 3, END_IN => 5);
Benjamin Jörger 2915.11.2010
check_this:=BETWNSTR (STRING_IN => 'abcdefgh‘, START_IN => 3, END_IN => 5);
utAssert.eq ('normal', check_this, against_this);
against_this := 'ab';
check_this :=BETWNSTR (STRING_IN => 'abcdefgh‘, START_IN => 0, END_IN => 2);
utAssert.eq ('zero start', check_this, against_this);
…
END ut_BETWNSTR;
/
PROCEDURE ut_test_null_values
….
Asstertions
• utAssert.isnull
• utAssert.isnotnull
• utAssert.eq
• utAssert.eqtable
Benjamin Jörger 3015.11.2010
• utAssert.eqquery
• utAssert.eqoutput
• utAssert.objexists
• utAssert.objnotexists
•….
Konfiguration von Maven
o Installation des Plugins „maven-utplsql-plugin“ vonhttp://code.google.com/p/maven-utplsql-plugin
o Anlegen einer „pom.xml“ Datei, welche die Konfiguration der auszuführenden Testsuite beinhaltet
Benjamin Jörger 3115.11.2010
o Konfiguration der Abhängigkeiten (Dependencies)o Konfiguration der Datenbankverbindung bzw. des Treiberso Konfiguration der Testsuite bzw. des Packages das ausgeführt
werden soll
Resumee
+ Testen auf allen Ebenen möglich+ Nutzen vorhandener Ressourcen+ Skalierbar+ Bessere, messbare Codequalität+ Frühe Fehlererkennung+ Stabile, erprobte Lösung
Benjamin Jörger 3415.11.2010
+ Stabile, erprobte Lösung
- Konfigurationsaufwand- Entwicklung von Tests und Szenarien kostet Ressourcen- Berechtigungskonzept innerhalb der Datenbank
Essential Bytes GmbH & Co. KG
Steinebühlstraße 30
77749 Hohberg
Kontakt
77749 Hohberg
http://www.essential-bytes.de