4 Testgetriebene Entwicklung mit PHPUnit

Größe: px
Ab Seite anzeigen:

Download "4 Testgetriebene Entwicklung mit PHPUnit"

Transkript

1 57 4 Testgetriebene Entwicklung mit PHPUnit»The fewer tests you write, the less productive you are and the less stable your code becomes.«erich Gamma 4. 1 Einleitung Das Testen von Software ist wichtig. Doch obwohl dies allen Softwareentwicklern bewusst sein dürfte, verhalten sich die meisten nicht entsprechend. Sie testen ihre Software entweder gar nicht, oder erst, wenn es zu spät ist. Vorurteile und vorgeschobene Gründe wie die folgenden führen zu einem Teufelskreis, dem nur schwer zu entkommen ist:»ich habe keine Zeit zum Testen.Testen von Software ist langweilig und stupide.mein Code ist praktisch fehlerfrei, auf jeden Fall gut genug.die Testabteilung testet. Die können das eh viel besser.«im Extreme Programming, das zu den so genannten agilen oder leichtgewichtigen Software-Entwicklungsprozessen gehört, wird dieser Teufelskreis durchbrochen, und zwar durch die Forderung, den Test zuerst zu schreiben und danach den Code, auf den sich der Test bezieht (Test-First- Ansatz). Das Vertrauen in den Code wird erhöht, die Auswirkungen von Änderungen an einer Stelle auf den restlichen Code können schnell und zuverlässig überprüft werden. Darüber hinaus führt diese Vorgehensweise zu Einfachheit, Testbarkeit und Wartbarkeit des Codes. Das Schreiben von neuem Produktionscode gestaltet sich beim Test- First-Ansatz in zwei Schritten: Test-First-Ansatz

2 58 4 Testgetriebene Entwicklung mit PHPUnit 1. Bevor neuer Produktionscode geschrieben wird, wird ein entsprechender Test geschrieben, der diesen Code motiviert. Dies sorgt einerseits dafür, dass es zu keinem Zeitpunkt Produktionscode gibt, für den kein Test existiert. Andererseits setzt sich der Programmierer beim Formulieren des Tests mit den Anforderungen an den zu schreibenden Code auseinander. 2. Es wird nur so viel Produktionscode geschrieben, wie es der Test verlangt. Mit anderen Worten: Läuft der Test, steht der Code. Refactoring Unit Test PHPUnit Ohne die automatisierte Ausführung von Entwicklertests auf Modulebene (englisch: Unit Tests), wie wir sie in diesem Kapitel diskutieren wollen, ist das Refactoring (deutsch:»neu herstellen«) von Code nur schwer möglich. Martin Fowler definiert Refactoring als»den Prozess, ein Softwaresystem so zu ändern, dass sich das externe Verhalten nicht ändert, jedoch die innere Struktur verbessert wird«. [Fowler1999] Hierzu gehören unter anderem Änderungen an der Struktur des Codes wie Umbenennung von Klassen und Methoden oder die Extraktion von Code einer Klasse in eine neue Klasse. Der Begriff des Unit Tests kommt ursprünglich aus der prozeduralen Programmierung. Dort entsprach die zu testende Programmeinheit einer Funktion oder Prozedur. In der objektorientierten Programmierung ist diese Definition weiter gefasst, so dass von einer einzelnen Methode, über eine gesamte Klasse bis hin zum gesamten System Programmeinheiten mit einem Unit Test getestet werden können. Unit Tests ermöglichen das ständige Refactoring von Code auf der Basis der folgenden Regeln: 1. Alle Unit Tests laufen. 2. Der Code kommuniziert alle seine Designkonzepte. 3. Der Code enthält keine Redundanz. 4. Der Code enthält, unter Berücksichtigung der obigen Regeln, die geringstmögliche Anzahl an Klassen und Methoden. Erst automatisierte Tests machen die zum Erreichen des einfachsten Designs nötigen Änderungen am Code sinnvoll durchführbar. Ohne sie müsste jede Methode einer jeden Klasse von Hand getestet werden, wenn der Code einer Klasse geändert wurde. In der Java-Welt bildet JUnit 1 den De-facto-Standard unter den Frameworks für Unit Tests. JUnit definiert eine allgemeine Struktur für Testfälle, gibt dem Entwickler die nötigen Werkzeuge an die Hand, um diese auszuführen, und übernimmt so einen großen Teil der Arbeit. Unter 1

3 4. 2 Testfälle und Zusicherungen 59 dem Namen PHPUnit 2 habe ich eine PHP-Portierung von JUnit entwickelt, die über PEAR als Open-Source-Software bezogen werden kann. Test Frameworks wie PHPUnit und JUnit erlauben die strikte Trennung von Produktionscode und Testcode. Tests können gruppiert werden, die Ausführungsreihenfolge hat keinen Einfluss auf das Ergebnis der einzelnen Tests. Neben PHPUnit2, der aktuellen Version von PHPUnit für PHP 5, gibt es mit PHPUnit eine Version für PHP 4, die nicht so umfangreich wie die Implementierung für PHP 5 ist und nicht mehr weiterentwickelt wird. PHPUnit2 enthält das auf JUnit basierte Unit-Test-Framework sowie ein Frontend für die Verwendung von der Kommandozeile. Neben der Funktionalität von JUnit bietet PHPUnit2 unter anderem auch die Funktionen von junitour 3 für unvollständige Tests und TestDox 4 für die agile Dokumentation. Die Installation des PHPUnit2-Paketes gestaltet sich dank des PEAR- Installers recht komfortabel: pear install --alldeps PHPUnit2 Im Folgenden betrachten wir die von PHPUnit2 bereitgestellten Klassen und werden sehen, wie mit ihnen Unit Tests geschrieben und automatisiert ausgeführt werden können. Abb. 4-1 Das PHPUnit2-Paket installieren 4. 2 Testfälle und Zusicherungen Ein Testfall (englisch: Test Case) wird als öffentliche Methode, die keinen Parameter erwartet, in einer Klasse definiert, die die Schnittstelle PHPUnit2_Framework_Test implementiert. In der Regel wird hierzu eine Klasse verwendet, die sich von PHPUnit2_Framework_TestCase ableitet. Hierbei sind die folgenden Namenskonventionen zu beachten: Testfall Der Name einer Klasse, die die Schnittstelle PHPUnit2_Framework_Test implementiert und Testfälle enthält, endet mit dem Suffix Test. Der Name einer Testfallmethode beginnt mit dem Präfix test. Plant man seine Testfälle bei der Anwendungsentwicklung nach dem Test- First-Ansatz geschickt, so kann man auch den von Eiffel eingeführten Ansatz»Entwurf durch Vertrag«(englisch: Design-by-Contract 5 ) verfolgen. Hierbei wird die Zusammenarbeit von unterschiedlichen Programm

4 60 4 Testgetriebene Entwicklung mit PHPUnit teilen (beispielsweise Methoden) in einem Vertrag geregelt. Dieser enthält mit den Vorbedingungen Zusicherungen, die der Aufrufer einer Methode zu erfüllen hat, sowie mit den Nachbedingungen Zusicherungen, die die aufgerufene Methode einzuhalten hat. Auf diese Weise können Anforderungen an die Funktion der Methode im Quelltext festgehalten werden. In einer Programmiersprache wie PHP, die im Gegensatz zu Eiffel nicht über eine Sprachunterstützung für den Design-by-Contract-Ansatz verfügt, kann man den Vertrag mit Hilfe entsprechender Testfälle formulieren. Dies wollen wir uns am Beispiel einer Klasse, die ein Bankkonto repräsentieren soll, genauer ansehen. Der Vertrag der Klasse BankAccount verlangt die Einhaltung der folgenden Bedingungen: Der Kontostand ist zu Beginn Null. Der Kontostand kann nicht negativ werden. Zusätzlich zu diesen Vereinbarungen legen wir die Schnittstelle fest, über die die Klienten der Klasse BankAccount mit dieser kommunizieren können: getbalance() fragt den aktuellen Kontostand ab. setbalance($balance) setzt den Kontostand auf einen neuen Wert. depositmoney($amount) modelliert das Einzahlen von Geld auf das Konto. withdrawmoney($amount) modelliert das Abheben von Geld von dem Konto. Bevor wir den Produktionscode, also die Klasse BankAccount, schreiben, setzen wir die Vereinbarungen in Testfälle um ( Beispiel 4-1 ). Die Wahl von»sprechenden Namen«für die Testfallmethoden, die die einzelnen Vertragspunkte ausdrücken, wird sich später noch als nützlich erweisen (siehe Abschnitt 4.6 ). Beispiel 4-1 Die Testfälle für die Klasse BankAccount require_once 'BankAccount.php'; require_once 'PHPUnit2/Framework/TestCase.php'; class BankAccountTest extends PHPUnit2_Framework_TestCase { public function testbalanceisinitiallyzero() { $ba = new BankAccount; $this->assertequals(0, $ba->getbalance()); public function testbalancecannotbecomenegative() { $ba = new BankAccount; $ba->withdrawmoney(1);

5 4. 2 Testfälle und Zusicherungen 61 $this->assertequals(0, $ba->getbalance()); $ba = new BankAccount; $ba->setbalance(-1); $this->assertequals(0, $ba->getbalance()); Wir haben nun gesehen, welche äußere Form ein Testfall bei der Verwendung von PHPUnit haben muss, doch wie teilen wir PHPUnit innerhalb einer Testmethode mit, ob ein Testfall erfolgreich durchlaufen wurde oder nicht? Durch die Ableitung unserer Testfallklasse von PHPUnit2_Framework_TestCase erbt sie eine Reihe von Methoden, mit denen eine Zusicherung (englisch: Assertion) überprüft werden kann. Diese Zusicherungen werden am Ende des Rumpfes einer Testmethode eingesetzt, um einen Ist-Zustand mit einem Soll-Zustand zu vergleichen. Das Ergebnis dieser Überprüfung wird automatisch als Ergebnis des Testfalls für die spätere Auswertung gespeichert. PHPUnit stellt die folgenden Zusicherungsmethoden zur Verfügung: Zusicherungen assertcontains($needle, $haystack, $message = '') assertnotcontains($needle, $haystack, $message = '') assertequals($expected, $actual, $message = '', $delta = 0) assertnull($object, $message = '') assertnotnull($object, $message = '') assertsame($expected, $actual, $message = '') assertnotsame($expected, $actual, $message = '') asserttrue($condition, $message = '') assertfalse($condition, $message = '') assertregexp($pattern, $string, $message = '') assertnotregexp($pattern, $string, $message = '') asserttype($expected, $actual, $message = '') assertnottype($expected, $actual, $message = '') $needle $haystack $actual $expected $delta $object NULLNULL $actual $expected $conditiontrue FALSE $string $pattern $actual $expected Tabelle 4-1 Die Zusicherungsmethoden von PHPUnit

6 62 4 Testgetriebene Entwicklung mit PHPUnit Der optionale Parameter $message definiert die Nachricht, die beim Scheitern des Tests zurückgegeben wird. Wird er nicht angegeben, so wird eine Standardnachricht erzeugt. Nach dieser Übersicht über die möglichen Zusicherungsmethoden, die wir für die Umsetzung unserer Testfälle verwenden können, ist es an der Zeit, den eigentlichen Produktionscode zu schreiben. zeigt eine mögliche Implementierung der Klasse BankAccount, die den Anforderungen der Testfälle entspricht. Beispiel 4-2 Die Klasse BankAccount class BankAccount { private $fbalance = 0; public function getbalance() { return $this->fbalance; public function setbalance($balance) { if ($balance >= 0) { $this->fbalance = $balance; public function depositmoney($amount) { if (is_numeric($amount) && $amount >= 0) { $this->fbalance += $amount; public function withdrawmoney($amount) { if (is_numeric($amount) && $amount >= 0 && $this->fbalance >= $amount) { $this->fbalance -= $amount; 4. 3 Testfälle ausführen und zusammenfassen Testsuite Eine Gruppe von Testfällen, Testsuite genannt, wird mit der Klasse PHPUnit2_Framework_TestSuite zusammengefasst und ausgeführt. Hierfür gibt es zwei Möglichkeiten. Bei der Erzeugung eines Objektes der Klasse PHPUnit2_Framework_TestSuite wird dem Konstruktor der Name ei-

7 4. 3 Testfälle ausführen und zusammenfassen 63 ner Klasse übergeben, die sich von PHPUnit2_Framework_TestCase oder einer Kindklasse ableitet. In diesem Fall wird der Testsuite für jede Methode dieser Klasse, deren Name mit test beginnt, ein Testfall hinzugefügt. Bei der Erzeugung eines Objektes der Klasse PHPUnit2_Framework_TestSuite wird dem Konstruktor kein Parameter übergeben. In diesem Fall können der zu Beginn leeren Testsuite mit der Methode addtest($test) Testfälle hinzugefügt werden. Bei dem Parameter $test handelt es sich um eine Referenz auf ein Objekt einer Klasse, die die Schnittstelle PHPUnit2_Framework_Test implementiert. Für die Erzeugung eines solchen Objektes ist dem Konstruktor der Name der zu testenden Methode zu übergeben. Für die Ausführung der Testfälle einer Testsuite wird ein Objekt der Klasse PHPUnit2_Framework_TestResult benötigt, das die Ergebnisse der einzelnen Testfälle für die spätere Auswertung aufnimmt. Mit Hilfe des Beobachter-Entwurfsmusters, das wir in Kapitel 7 näher betrachten werden, kann der Testverlauf durch Objekte, die sich von PHPUnit2_Framework_TestListener ableiten, beobachtet werden. Mit dem für die Kommandozeile entwickelten TextUI TestRunner führen wir nun die Testfälle der Klasse BankAccountTest aus. Die Quelldateien BankAccount.php und BankAccountTest.php müssen hierfür entweder im aktuellen Verzeichnis oder im include_path liegen. phpunit BankAccountTest PHPUnit by Sebastian Bergmann... Time: Beobachter Abb. 4-2 Ausführen der Testfälle einer Testfallklasse OK (2 tests) Für die automatisierte Ausführung von Testsuiten bietet sich der direkte Aufruf der Methode PHPUnit2_TextUI_TestRunner::run() aus dem Quelltext der Testsuite heraus an. Durch die Möglichkeit, Instanzen von PHPUnit2_Framework_TestSuite ineinander zu schachteln, können die Testfälle hierarchisch organisiert werden: Eine Klasse Projekt_Tests_All- Tests ( Beispiel 4-3 ) nimmt die Testfälle des gesamten Projektes auf. Für jedes Paket des Projekt gibt es eine Klasse ( Beispiel 4-4 ), in der die Testfälle für die Klassen des Paketes zusammengefasst sind. Die einzelnen Testfälle sind in Klassen wie Projekt_Tests_Paket_Klasse ( Beispiel 4-5 ) implementiert.

8 64 4 Testgetriebene Entwicklung mit PHPUnit Beispiel 4-3 Die Klasse Projekt_Tests _AllTests if (!defined('phpunit2_main_method')) { define( 'PHPUnit2_MAIN_METHOD', 'Projekt_Tests_AllTests::main' ); require_once 'PHPUnit2/Framework/TestSuite.php'; require_once 'PHPUnit2/TextUI/TestRunner.php'; require_once 'Projekt/Tests/Paket/AllTests.php'; class Projekt_Tests_AllTests { public static function main() { PHPUnit2_TextUI_TestRunner::run(self::suite()); public static function suite() { $suite = new PHPUnit2_Framework_TestSuite('Projekt'); $suite->addtest(projekt_tests_paket_alltests::suite()); return $suite; if (PHPUnit2_MAIN_METHOD == 'Projekt_Tests_AllTests::main') { Projekt_Tests_AllTests::main(); Die AllTests-Klassen implementieren einen Mechanismus, der der statischen Methode main() von Java entlehnt ist. Die Ausführung der Quelltextdatei einer solchen Klasse durch den PHP-Interpreter führt somit zur Ausführung der entsprechenden Testfälle. Beispiel 4-4 Die Klasse Projekt_Tests_ Paket_AllTests if (!defined('phpunit2_main_method')) { define( 'PHPUnit2_MAIN_METHOD', 'Projekt_Tests_Paket_AllTests::main' ); require_once 'PHPUnit2/Framework/TestSuite.php'; require_once 'PHPUnit2/TextUI/TestRunner.php'; require_once 'Projekt/Tests/Paket/Klasse.php';

9 4. 4 Automatische Generierung von Testfallklassen 65 class Projekt_Tests_Paket_AllTests { public static function main() { PHPUnit2_TextUI_TestRunner::run(self::suite()); public static function suite() { $suite = new PHPUnit2_Framework_TestSuite( 'Projekt / Paket' ); $suite->addtestsuite('projekt_tests_paket_klasse'); return $suite; if (PHPUnit2_MAIN_METHOD == 'Projekt_Tests_Paket_AllTests::main') { Projekt_Tests_Paket_AllTests::main(); require_once 'PHPUnit2/Framework/TestCase.php'; require_once 'Projekt/Paket/Klasse.php'; class Projekt_Tests_Paket_Klasse extends PHPUnit2_Framework_TestCase { public function testmethode() { $t = new Projekt_Paket_Klasse; $this->asserttrue($t->methode('test')); Beispiel 4-5 Die Klasse Projekt_Tests_ Paket_Klasse //... Wir haben nun gesehen, wie für PHP-Klassen Testfälle für die automatische Ausführung und Auswertung mit PHPUnit geschrieben werden. Wer mehr über das Testen von Software mit Unit Tests lesen möchte, dem sei das Buch»Unit Tests mit Java«von Johannes Link und Peter Fröhlich [Link2005] empfohlen. Dieses befasst sich mit der Entwicklung von Unit Tests für Java mit JUnit, viele der Ideen und Lösungen lassen sich jedoch problemlos auf PHP und PHPUnit übertragen Automatische Generierung von Testfallklassen PHPUnit bietet einige Leistungsmerkmale, die nicht Bestandteil von JUnit sind. Hierzu gehören unter anderem die automatische Generierung von

10 66 4 Testgetriebene Entwicklung mit PHPUnit Testfallklassen aufgrund der zu testenden Klasse, die Unterstützung für unvollständige Test-Implementierungen, die Code-Coverage-Analyse von PHP-Applikationen sowie die Integration von TestDox. Möchte man für eine bestehende Klasse Testfälle schreiben, so kann PHPUnit ein Grundgerüst für eine Testfallklasse generieren. Auf diese Weise spart man lästige Tipparbeit und kann sich auf das Schreiben der eigentlichen Testfallmethoden konzentrieren. Für die Klasse Sample ( Beispiel 4-6 ) generieren wir beispielsweise mit dem folgenden Aufruf des PHPUnit-Kommandozeilenwerkzeugs das Grundgerüst für eine entsprechende Testfallklasse SampleTest ( Beispiel 4-7 ). Abb. 4-3 Automatische Generierung einer Testfallklasse Beispiel 4-6 Die Klasse Sample Beispiel 4-7 Die automatisch generierte Klasse SampleTest phpunit --skeleton Sample PHPUnit by Sebastian Bergmann. Wrote test class skeleton for Sample to SampleTest.php. class Sample { public function dosomething() { if (!defined("phpunit2_main_method")) { define("phpunit2_main_method", "SampleTest::main"); require_once "PHPUnit2/Framework/IncompleteTestError.php"; require_once "PHPUnit2/Framework/TestCase.php"; require_once "Sample.php"; /** * Test class for Sample. * Generated by PHPUnit2_Util_Skeleton * on at 02:19:00. */ class SampleTest extends PHPUnit2_Framework_TestCase { public static function main() { require_once "PHPUnit2/Framework/TestSuite.php"; require_once "PHPUnit2/TextUI/TestRunner.php"; $suite = new PHPUnit2_Framework_TestSuite("SampleTest"); $result = PHPUnit2_TextUI_TestRunner::run($suite); /** Implement testdosomething().

11 4. 5 Code-Coverage-Analyse von PHP-Applikationen 67 */ public function testdosomething() { throw new PHPUnit2_Framework_IncompleteTestError; if (PHPUnit2_MAIN_METHOD == "SampleTest::main") { SampleTest::main(); php SampleTest.php PHPUnit by Sebastian Bergmann. I Time: There was 1 incomplete testcase: 1) testdosomething OK, but incomplete test cases!!! Tests run: 1, incomplete test cases: 1. Die automatisch generierte Testklasse nutzt die Ausnahme PHPUnit2_Framework_IncompleteTestError (und damit die Unterstützung für unvollständige Test-Implementierungen von PHPUnit) in ihren Testfallmethoden und signalisiert so dem Testsystem, dass der entsprechende Testfall noch nicht implementiert wurde. Würden die Testfallmethoden stattdessen mit einem leeren Rumpf generiert, so würde dies den falschen Eindruck vermitteln, dass die Testfälle fehlerfrei ausgeführt würden Code-Coverage-Analyse von PHP-Applikationen Ist die Xdebug 6 -Erweiterung für PHP installiert, so kann PHPUnit bei der Ausführung der Testfälle darüber Buch führen, welche Zeilen des zu testenden Codes für die einzelnen Testfälle ausgeführt (und somit von einem Test»abgedeckt«) werden. Diese Information gibt Aufschluss darüber, ob der gesamte Produktionscode von den geschriebenen Testfällen getestet wird. Ist man sich sicher, dass die Testsuite vollständig ist, und es werden dennoch nicht alle Zeilen des Produktionscodes bei der Ausführung der Testfälle erreicht, so sind diese mit einiger Wahrscheinlichkeit redundant und können möglicherweise entfernt werden. Abbildung 4-4 zeigt den Aufruf des PHPUnit-Kommandozeilenwerkzeugs mit dem Parameter --coverage-html für die Erstellung einer Code- Coverage-Analyse im HTML-Format. Dieser ist zu entnehmen, dass die 6

12 68 4 Testgetriebene Entwicklung mit PHPUnit Methoden getbalance(), setbalance() und withdrawmoney() aufgerufen werden, die Methode depositmoney($amount) aber noch von keinem Testfall abgedeckt ist. Mit Hilfe von Zusicherungen haben wir den Vertrag der Klasse BankAccount () in die Testfälle der Klasse BankAccountTest () geschrieben. Hierbei haben wir sprechende Namen wie testbalanceisinitiallyzero gewählt, um einen Bezug zwischen Vertragspunkt und Testfallmethode herzustellen. Für die Erstellung von Testreports können diese Informationen mit der TestDox-Funktionalität von PHPUnit extrahiert werden. Diese ist angelehnt an die gleichnamige Erweiterung für agile Dokumentation mit JUnit. Das PHPUnit-Kommandozeilenwerkzeug erzeugt auf Wunsch (Parameter --testdox-html und --testdox-text) einen Testreport in TestDox- Abb. 4-4 Code-Coverage- Analyse für die Klasse BankAccount phpunit --coverage-html BankAccount.html BankAccountTest PHPUnit by Sebastian Bergmann... Time: OK (2 tests) 4. 6 TestDox Agile Dokumentation

13 4. 6 TestDox 69 Notation. Als Ausgabeformat kann HTML oder Text gewählt werden. Abbildung 4-5 zeigt die Textausgabe für die BankAccountTest-Klasse ( Beispiel 4-1 ). phpunit --testdox-text BankAccount.txt BankAccountTest.php PHPUnit by Sebastian Bergmann... Time: Abb. 4-5 TestDox-Ausgabe für die Klasse BankAccountTest OK (2 tests) cat BankAccount.txt BankAccount - Balance is initially zero - Balance cannot become negative Damit TestDox seine Arbeit korrekt verrichten kann, müssen die Namen der Testmethoden in der Studly-Caps-Notation vorliegen. TestDox erkennt den Beginn eines neuen Worts anhand der Großbuchstaben: aus»testbalanceisinitiallyzero«wird so»balance is initially zero«.

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Programmiertechnik II

Programmiertechnik II Modultests Ziele Überprüfung der Korrektheit eines Moduls Korrektheit: Übereinstimmung mit (informaler) Spezifikation Modul: kleine testbare Einheit (Funktion, Klasse) Engl.: unit test White box testing

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

Das Test-Framework JUnit ETIS SS04

Das Test-Framework JUnit ETIS SS04 Das Test-Framework JUnit ETIS SS04 Gliederung Motivation TestFirst Grundlagen Assert TestCase Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung 2 Motivation (I) Kostspielige Folgen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Testen mit JUnit. Apcon Workplace Solutions Member of itelligence. Testen von Java-Code mit JUnit. ÿstruktur eines Testfalls

Testen mit JUnit. Apcon Workplace Solutions Member of itelligence. Testen von Java-Code mit JUnit. ÿstruktur eines Testfalls Testen von Java-Code mit JUnit ÿmotivation ÿjunit-testklassen ÿjunit-testfälle ÿstruktur eines Testfalls Henning Wolf APCON Workplace Solutions GmbH wolf@jwam.de Motivation: Werkzeugunterstützung für Tests

Mehr

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und

Mehr

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009 Testen von Software Systemen Übung 02 SS 2009 Version: 1.0 09.06.2009 Komponententest Kunde: Dr. Reinhold Plösch Dr. Johannes Sametinger Kundenreferenz: 259.019 Team 19 Mitarbeiter: Christian Märzinger

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes Programmieren mit Java. Test Driven Development Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

PHPNuke Quick & Dirty

PHPNuke Quick & Dirty PHPNuke Quick & Dirty Dieses Tutorial richtet sich an all die, die zum erstenmal an PHPNuke System aufsetzen und wirklich keine Ahnung haben wie es geht. Hier wird sehr flott, ohne grosse Umschweife dargestellt

Mehr

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 VORBEDINGUNGEN Als Vorbedingungen sollte bereits

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade

Log xmllog textlog Log() start(filename) add(message) end() instance() Abbildung 7-10: Die Protokollierungs-API mit einer einfachen Fassade HACK #76 Hack APIs mit dem Façade-Muster vereinfachen Durch die Verwendung des Façade-Entwurfsmusters können Sie die anderen Programmierern zugängliche API vereinfachen. #76 Dies ist ein Muster, von dem

Mehr

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA Unter Windows Vista ist die Installation der V-Modell XT Komponenten nicht ohne Weiteres möglich, da die User Account Control (UAC)-Engine dies unterbindet.

Mehr

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung. StuPro-Seminar Dokumentation in der Software-Wartung StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung Folie 1/xx Software-Wartung: theoretisch Ausgangslage eigentlich simpel: fertige

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

SEMINAR Modifikation für die Nutzung des Community Builders

SEMINAR Modifikation für die Nutzung des Community Builders 20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Was meinen die Leute eigentlich mit: Grexit?

Was meinen die Leute eigentlich mit: Grexit? Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?

Mehr

Test-Driven Design: Ein einfaches Beispiel

Test-Driven Design: Ein einfaches Beispiel Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt. Python Installation 1 Vorbereitung Diese Anleitung ist für Windows ausgelegt. 1.1 Download Python kann online unter https://www.python.org/downloads/ heruntergeladen werden. Hinweis: Im CoderDojo verwenden

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.NET Code schützen. Projekt.NET. Version 1.0 .NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll

Mehr

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

etermin Einbindung in Outlook

etermin Einbindung in Outlook etermin Einbindung in Outlook 1. Einführung Über etermin gebuchte Termine können bei Bedarf auch mit externen Terminkalendern, wie zum Beispiel Outlook, ical oder Google synchronisiert werden. Dieses Dokument

Mehr

Reporting Services und SharePoint 2010 Teil 1

Reporting Services und SharePoint 2010 Teil 1 Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?

Mehr

leicht zu schreiben sein. Wenn ein Test nicht leicht zu schreiben ist, werden wir ihn nicht schreiben.

leicht zu schreiben sein. Wenn ein Test nicht leicht zu schreiben ist, werden wir ihn nicht schreiben. PHPUnit Eine kurze Einführung vom Frank Staude vorgetragen beim Treffen der PHP Usergroup Hannover am 02.11.2006 Warum Testen? Jeder von uns, der programmiert, macht auch Fehler. Es

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Quiz mit Google Docs erstellen

Quiz mit Google Docs erstellen IT-Coaching 2go von computertraining4you 1 Quiz mit Google Docs erstellen Mit Google Docs erstellt man ein tolles Quiz. Das Programm Hot Potatoes kann zwar die Reihenfolge der Fragen und Antworten mixen

Mehr

Software - Testung ETIS SS05

Software - Testung ETIS SS05 Software - Testung ETIS SS05 Gliederung Motivation Was ist gute Software? Vorurteile gegenüber Testen Testen (Guidelines + Prinzipien) Testarten Unit Tests Automatisierte Tests Anforderungen an Testframeworks

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

Patch Management mit

Patch Management mit Patch Management mit Installation von Hotfixes & Patches Inhaltsverzeichnis dieses Dokuments Einleitung...3 Wie man einen Patch installiert...4 Patch Installation unter UliCMS 7.x.x bis 8.x.x...4 Patch

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

GS-Programme 2015 Allgemeines Zentralupdate

GS-Programme 2015 Allgemeines Zentralupdate GS-Programme 2015 Allgemeines Zentralupdate Impressum Business Software GmbH Primoschgasse 3 9020 Klagenfurt Copyright 2014 Business Software GmbH Die Inhalte und Themen in dieser Unterlage wurden mit

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung Projektmanagement Vorlesung von Thomas Patzelt 9. Vorlesung 1 Pläne Kein Plan überlebt die erste Feindberührung - Feldmarschall Helmuth von Moltke Prognosen sind schwierig, besonders wenn sie die Zukunft

Mehr

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt. Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista Allgemeines: Bitte lesen Sie sich diese Anleitung zuerst einmal komplett durch. Am Besten, Sie drucken sich diese Anleitung

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

TELIS FINANZ Login App

TELIS FINANZ Login App Installation & Bedienung der TELIS FINANZ Login App 1. Voraussetzungen - Android Version 4.0 oder höher - Uhrzeit automatisch gestellt - Für die Einrichtung wird einmalig eine Internetverbindung benötigt

Mehr

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite http://www.hp.

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite http://www.hp. Erfahrungen mit dem Insight Manager von HP Dipl. Ing. Elektrotechnik (FH) - Automatisierungs- / Regelungstechnik DV-Spezialist Landesbank Rheinland-Pfalz Abteilung 2-351 Große Bleiche 54-56 55098 Mainz

Mehr

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe crm-now/ps Webforms: Webdesigner Handbuch Copyright 2006 crm-now Versionsgeschichte Version 01 2006-08-21 Release Version crm-now c/o im-netz Neue

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Installation der SAS Foundation Software auf Windows

Installation der SAS Foundation Software auf Windows Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software

Mehr

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den

Mehr

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08 Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements von Stephanie Wilke am 14.08.08 Überblick Einleitung Was ist ITIL? Gegenüberstellung der Prozesse Neuer

Mehr

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten http://tradingtutorialautomation.de/wp-content/uploads/2015/04/so-erstellen-sienuetzliche-beschreibungen-zu-ihren-tradingdaten_20150406.mp3

Mehr

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern Windows XP in fünf Schritten absichern Inhalt: 1. Firewall Aktivierung 2. Anwendung eines Anti-Virus Scanner 3. Aktivierung der automatischen Updates 4. Erstellen eines Backup 5. Setzen von sicheren Passwörtern

Mehr

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Softwareentwicklungsprozess im Praktikum. 23. April 2015 Softwareentwicklungsprozess im Praktikum 23. April 2015 Agile Softwareentwicklung Eine agile Methodik stellt die beteiligten Menschen in den Mittelpunkt und versucht die Kommunikation und Zusammenarbeit

Mehr

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager email-rückläufer Script. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager email-rückläufer Script. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager 7 combit Relationship Manager email-rückläufer Script Inhalt Einleitung 3 Notwendige Anpassungen 3 crm Solution

Mehr

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren Verwaltungsdirektion Informatikdienste Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren Inhaltsverzeichnis Einleitung... 3 Installation WSUS Server... 4 Dokumente... 4 Step by Step Installation...

Mehr

ARAkoll 2013 Dokumentation. Datum: 21.11.2012

ARAkoll 2013 Dokumentation. Datum: 21.11.2012 ARAkoll 2013 Dokumentation Datum: 21.11.2012 INHALT Allgemeines... 3 Funktionsübersicht... 3 Allgemeine Funktionen... 3 ARAmatic Symbolleiste... 3 Monatsprotokoll erzeugen... 4 Jahresprotokoll erzeugen

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Individuelle Erweiterung des generierten Codes. 16. Januar 2013 Individuelle Erweiterung des generierten Codes 16. Januar 2013 Überblick Welche Möglichkeiten zur individuellen Erweiterung von generiertem Code gibt es? Innerhalb eines Moduls (Klasse) Auf Modulebene

Mehr

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was

Mehr

2015-06-11 Tagesprogramm

2015-06-11 Tagesprogramm 1 2015-06-11 Tagesprogramm Design-by-Contract 2 Vertragspartner Anbieter (Server) bietet Leistungen (Services) an Kunde (Client) nimmt von Anbietern angebotene Leistungen in Anspruch Details der Inanspruchnahme

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE

DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE DAUERHAFTE ÄNDERUNG VON SCHRIFTART, SCHRIFTGRÖßE UND ZEILENABSTAND Word 2010 und 2007 Jedes neue leere Dokument, das mit Word 2010 erstellt wird, basiert auf einer Dokumentvorlage mit dem Namen Normal.dotx.

Mehr

INSTALLATION VON INSTANTRAILS 1.7

INSTALLATION VON INSTANTRAILS 1.7 INSTALLATION VON INSTANTRAILS 1.7 InstantRails 1.7 ist ein Paket, das Ruby, Rails, Apache, MySQL und andere Tools, z.b. phpmyadmin in vorkonfigurierter Form enthält. Das Paket muss in einem Verzeichnis

Mehr

Inkrementelles Backup

Inkrementelles Backup Inkrementelles Backup Im Gegensatz zu einer kompletten Sicherung aller Daten werden bei einer inkrementellen Sicherung immer nur die Dateien gesichert, die seit der letzten inkrementellen Sicherung neu

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Java Enterprise Architekturen Willkommen in der Realität

Java Enterprise Architekturen Willkommen in der Realität Java Enterprise Architekturen Willkommen in der Realität Ralf Degner (Ralf.Degner@tk-online.de), Dr. Frank Griffel (Dr.Frank.Griffel@tk-online.de) Techniker Krankenkasse Häufig werden Mehrschichtarchitekturen

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Datenübernahme easyjob 3.0 zu easyjob 4.0

Datenübernahme easyjob 3.0 zu easyjob 4.0 Datenübernahme easyjob 3.0 zu easyjob 4.0 Einführung...3 Systemanforderung easyjob 4.0...3 Vorgehensweise zur Umstellung zu easyjob 4.0...4 Installation easyjob 4.0 auf dem Server und Arbeitsstationen...4

Mehr

Nicht über uns ohne uns

Nicht über uns ohne uns Nicht über uns ohne uns Das bedeutet: Es soll nichts über Menschen mit Behinderung entschieden werden, wenn sie nicht mit dabei sind. Dieser Text ist in leicht verständlicher Sprache geschrieben. Die Parteien

Mehr

Markus Wichmann. Testen von Java Code mit. JUnit

Markus Wichmann. Testen von Java Code mit. JUnit Markus Wichmann Testen von Java Code mit JUnit Demotivation... Am Anfang war der Zeitdruck... Hilfe, ich habe doch keine Zeit zum Testen! Ich schreibe einfach keine Tests, dadurch werde ich schneller fertig

Mehr

Tevalo Handbuch v 1.1 vom 10.11.2011

Tevalo Handbuch v 1.1 vom 10.11.2011 Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

FiBu Berichtsanpassung Berichtsanpassungen von Büro Mayer in der Finanzbuchhaltung für MS Dynamics NAV 2013 R2

FiBu Berichtsanpassung Berichtsanpassungen von Büro Mayer in der Finanzbuchhaltung für MS Dynamics NAV 2013 R2 FiBu Berichtsanpassung Berichtsanpassungen von Büro Mayer in der Finanzbuchhaltung für MS Dynamics NAV 2013 R2 Hallstadt, 19.02.2014 Inhalt 1. Einführung... 1 2. Änderungen in der Übersicht... 1 3. Berichtanpassungen...

Mehr

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen walker radio tv + pc GmbH Flüelerstr. 42 6460 Altdorf Tel 041 870 55 77 Fax 041 870 55 83 E-Mail info@walkerpc.ch Wichtige Informationen Hier erhalten sie einige wichtige Informationen wie sie ihren Computer

Mehr

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Beiträge erstellen in Joomla Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Abbildung 1 - Kontrollzentrum Von hier aus kann man zu verschiedene Einstellungen

Mehr