TestmanagementDie Welt verändern, ein Bug nach dem anderen…
Der Weise schämt sich seiner Fehler, aber nicht, sie zu korrigieren.
Konfuzius
Stufe: Implementierung
Unter Implementierung im Softwareentwicklungsprozess versteht man die Umsetzung der Spezifikation der Softwarekomponenten und des IT-Konzeptes in Software.
In der Softwareentwicklung wird heutzutage im Rahmen der objektorientierten Programmierung komponentenorientiert programmiert. Bekanntes Beispiel ist CORBA. Eine Erweiterung von CORBA ist CCM (CORBA Component Model). CORBA und CCM repräsentieren keine Produkte, sondern stellen Spezifikationen dar.
Man kann die verschiedenen Architekturen unterscheiden in
Monolithische IT-Systeme
Client-Server-Architekturen
Verteilte Systeme
Serviceorientierte Architekturen (SOA)
Web-Architekturen
Monolithische IT-Systeme sind nicht untergliedert in Teilsysteme/Komponenten. Altsysteme basieren meist auf der monolithischen Systemarchitektur.
Client-Server-Architekturen bestehen aus mindestens 2 Subsystemen, wobei ein System verschiedene Dienste (Server) anbietet und ein anderes Subsystem die Dienste nachfragt (Client). Die Kommunikation erfolgt nachrichtenorientiert und wird über Dienste geregelt.
Verteilte Systeme sind Teilsysteme, die miteinander gekoppelt sind. Bekannte Vertreter sind Middleware-Systeme. Auch unterscheidet man in Thin-Clients und Fat-Clients. Bei Fat-Clients ist die Rechenkapazität weitgehend auf den Client ausgelagert, im Gegensatz zu den Thin-Clients. Bei verteilten Systemen ist die 3-stufige Client-Server-Architektur (three tier architecture) weit verbreitet. Sie besteht aus einer Präsentations-, einer Logik- und einer Datenhaltungsschicht. Bekanntes Beispiel ist Citrix.
Serviceorientierte Architekturen (SOA) zielen auf eine Minimierung direkter und fester Abhängigkeitsbeziehungen zwischen den Elementen eines verteilten Softwaresystems. Im SOA-Dreiecksmodell wird die Beziehungsstruktur zwischen Dienstnutzer, Dienstanbieter und Dienstverzeichnis dargestellt.
Zwischen Dienstnutzer und Dienstanbieter besteht keine feste Koppelungsbeziehung. Im Vergleich zur objektorientierten bzw. komponentenorientierten Systementwicklung implizieren SOA-Systeme eine Reihe von wichtigen Zusatzeigenschaften, wie beispielsweise:
Ausfallsicherheit
Technologie- und Plattformunabhängigkeit
Load Balancing
einfache Erweiterbarkeit
Zu den Nachteilen zählen:
hoher Bereitstellungsaufwand
Performanceeinschränkungen
Security-Flexibilisierungen
Web-Architekturen Wenn Sie diese Sätze lesen, dann benutzen Sie wahrscheinlich ein System, das auf einer Web-Architektur basiert. Das World Wide Web (WWW) wird meist verteilt realisiert. Zur Übertragung von Informationen wird meist das Protokoll HTTP, der Adressierungsstandard URL/URI und das Repräsentionsformat HTML oder XML verwendet. Für die Web-Seiten-basierte Präsentation wird meist durch serverseitig ausführbare Programmbausteine wie PHP, JSP, Active Server Pagesoder.Net eingesetzt. Auf der Client-Seite kommt meist JavaScript zum Einsatz und meist auch jQuery als freie JavaScript-Bibliothek. Auf Basis einer asynchronen Kommunikation zwischen Client und Server wird AJAX (Asynchronous JavaScript and XML) eingesetzt. Für eine Koppelung von Anwendungssystemkomponenten gibt es
Web-Dienste gemäß REST-Architektur, wobei Dienste per URL/URI adressiert werden und die Kommunikation direkt auf der Grundlage von HTTP erfolgt.
Die jeweilige Softwarearchitektur spielt für den Test eine große Rolle. Die frühzeitige Einbeziehung des Testmanagers ist deshalb für den weiteren Prozess sehr wichtig.
Unter Objektorientierung (OO) versteht man eine Sichtweise auf komplexe Systeme, bei der ein System durch das Zusammenspiel kooperierender Objekte beschrieben wird. Der Begriff Objekt ist dabei unscharf gefasst. Wichtig an einem Objekt ist nur, dass ihm bestimmte Attribute (Eigenschaften) und Methoden zugeordnet sind und dass es in der Lage ist, von anderen Objekten Informationen zu empfangen beziehungsweise an diese zu senden. Dabei muss ein Objekt nicht gegenständlich sein. Entscheidend ist, dass bei dem jeweiligen Objektbegriff eine sinnvolle und allgemein übliche Zuordnung möglich ist. Ergänzt wird dies durch das Konzept der Klasse, in der Objekte aufgrund ähnlicher Eigenschaften zusammengefasst werden. Ein Objekt wird im Programmcode als Instanz beziehungsweise Inkarnation einer Klasse definiert.
Eine Komponente ist die kleinste Softwareeinheit, die für sich getestet werden kann, für die eine separate Spezifikation verfügbar ist. Komponentenintegrationstest: Testen wird durchgeführt mit dem Ziel, Fehlerzustände in den Schnittstellen und dem Zusammenwirken der integrierten Komponenten aufzudecken. Komponentenspezifikation: Die Beschreibung der Funktionalität einer Komponente in Form der Vorgabe von Ausgabewerten für spezifizierte Eingabewerte unter spezifizierten Bedingungen sowie der geforderten nicht funktionalen Eigenschaften (z.B. Ressourcennutzung).
Die Common Object Request Broker Architecture (CORBA) ist eine Spezifikation für eine objektorientierte Middleware, deren Kern ein Object Request Broker (ORB) bildet und die plattformübergreifende Protokolle und Dienste definiert. CORBA-konforme Implementierungen vereinfachen das Erstellen verteilter Anwendungen in heterogenen Umgebungen. Ebenfalls zur Erstellung von verteilten Anwendungen unter Windows, die mehrere Programmiersprachen verwenden, eignet sich das von Microsoft entwickelte COM/DCOM.
Das CORBA Component Model (CCM) ist ein auf CORBA 3.0 aufsetzendes Komponentenmodell.
Das Client-Server-Modell ist das Standardkonzept für die Verteilung von Aufgaben innerhalb eines Netzwerks. Aufgaben werden mittels Server auf verschiedene Rechner verteilt und können bei Bedarf von mehreren Clients zur Lösung ihrer eigenen Aufgaben oder Teilen davon angefordert werden. Bei den Aufgaben kann es sich um Standardaufgaben (E-Mail-Versand, E-Mail-Empfang, Web-Zugriff, etc.) oder um spezifische Aufgaben einer Software oder eines Programms handeln. Eine Aufgabe wird im Client-Server-Modell als Dienst bezeichnet.
Middleware bezeichnet anwendungsneutrale Programme, die so zwischen Anwendungen vermitteln, dass die Komplexität dieser Applikationen und ihre Infrastruktur verborgen werden. Man kann Middleware auch als eine Verteilungsplattform, d.h. als ein Protokoll (oder Protokollbündel) auf einer höheren Schicht als jener der gewöhnlichen Rechnerkommunikation auffassen. Im Gegensatz zu niveautieferen Netzwerkdiensten, welche die einfache Kommunikation zwischen Rechnern handhaben, unterstützt Middleware die Kommunikation zwischen Prozessen.
Fat-Clients: Hier liegt sowohl die Funktionalität als auch die Anwendungslogik beim Client selbst. Dies garantiert dem Client nicht nur einen hohen Komfort für den Benutzer, sondern auch durch die Offline-Fähigkeit eine geringe Abhängigkeit von einem Netzwerk.
Thin-Clients sind das Gegenteil von Fat Clients. Ein Thin-Client enthält weniger Hardware und keinerlei eigene applikationsspezifische Funktionalität. Diese wird komplett vom Server bereitgestellt. Die applikationsspezifischen Funktionen werden hier meist in Form von Webseiten dargestellt.
Three-Tier-Architecture: Die dreischichtige Architektur ist eine Architektur, die softwareseitig drei Schichten hat. Im Gegensatz zur zweischichtigen Architektur existiert bei der dreischichtigen Architektur noch eine zusätzliche Schicht, oftmals die Logikschicht, welche die Datenverarbeitung vornimmt: Präsentationsschicht Logikschicht Datenhaltungsschicht.
Citrix steht heute für Application-Delivery-Lösungen (Anwendungsbereitstellung). Der Name Citrix ist ein Kunstwort aus Citrus und Unix. Bekannt geworden ist Citrix in erster Linie mit Applikations- und Terminalserver-Anwendungen. Citrix hat sein Produktportfolio durch eine Virtual Desktop Infrastructure (XenDesktop) u.a. Produkte stark ergänzt.
Das Hypertext Transfer Protocol (HTTP) ist ein Protokoll zur Übertragung von Daten über ein Netzwerk. Es wird hauptsächlich eingesetzt, um Webseiten aus dem World Wide Web (WWW) in einen Webbrowser zu laden.
Die Hypertext Markup Language (HTML) ist eine textbasierte Auszeichnungssprache zur Strukturierung von digitalen Inhalten, wie Texten, Bildern und Hyperlinks, in elektronischen Dokumenten. HTML-Dokumente sind die Grundlage des World Wide Web und werden von einem Webbrowser dargestellt.
Serviceorientierte Architektur (SOA) kann als Methode bzw. Paradigma angesehen werden, die vorhandenen IT-Komponenten wie Datenbanken, Server und Websites in Dienste zu kapseln und dann so zu koordinieren (Orchestrierung), dass ihre Leistungen zu höheren Diensten zusammengefasst und anderen Organisationsabteilungen oder Kunden zur Verfügung gestellt werden können.
Die Extensible Markup Language (XML) ist eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten in Form von Textdateien. XML wird u. a. für den plattform- und implementationsunabhängigen Austausch von Daten zwischen Computersystemen eingesetzt, insbesondere über das Internet.
Die Data-URL ist ein URI-Schema, welches ermöglicht, Daten so im Quelltext einzubetten, als wären es externe Ressourcen. Sie tendiert dazu, einfacher zu sein als andere Einbettungsmethoden, wie MIME mit cid- oder mid-URIs. Data-URLs werden oft als Uniform Resource Locators bezeichnet, obwohl sie keinen externen Inhalt referenzieren. In Wirklichkeit sind sie Uniform Resource Identifier.
PHP ist eine Skriptsprache mit einer an C und Perl angelehnten Syntax, die hauptsächlich zur Erstellung dynamischer Webseiten oder Webanwendungen verwendet wird. PHP zeichnet sich durch breite Datenbankunterstützung und Internet-Protokolleinbindung sowie die Verfügbarkeit zahlreicher Funktionsbibliotheken aus.
Java Server Pages (JSP) ist eine auf JHTML basierende Web-Programmiersprache zur einfachen dynamischen Erzeugung von HTML- und XML-Ausgaben eines Webservers.
Active Server Pages (ASP) ist eine von Microsoft entwickelteTechnologie, die mit Einsatz einer Skriptsprache wie PHP, VBScript, Perl oder JScript serverseitig Webseiten erzeugt. Die Nachfolgetechnologie von ASP ist ASP.NET.
.NET bezeichnet eine von Microsoft entwickelte Software-Plattform zur Entwicklung und Ausführung von Anwendungsprogrammen. .NET besteht aus einer Laufzeitumgebung (Common Language Runtime), in der die Programme ausgeführt werden, sowie einer Sammlung von Klassenbibliotheken, Programmierschnittstellen und Dienstprogrammen (Services). Für die Entwicklung von .NET-Programmen vertreibt Microsoft die Entwicklungsumgebung Visual Studio.
JavaScript ist eine Skriptsprache, die ursprünglich für dynamisches HTML in Webbrowsern entwickelt wurde, um Benutzerinteraktionen auszuwerten, Inhalte zu verändern, nachzuladen oder zu generieren und so die Möglichkeiten von HTML und CSS zu erweitern. Heute findet JavaScript auch außerhalb von Browsern Anwendung, so etwa auf Servern und in Microcontrollern. Der standardisierte Sprachkern von JavaScript beschreibt eine dynamisch typisierte, objektorientierte, aber klassenlose Skriptsprache. In JavaScript lässt sich objektorientiert und sowohl prozedural als auch funktional programmieren.
Asynchronous JavaScript and XML (AJAX) ist ein Konzept der asynchronen Datenübertragung zwischen einem Browser und dem Server. Dieses ermöglicht es, HTTP-Anfragen durchzuführen, während eine HTML-Seite angezeigt wird, und die Seite zu verändern, ohne sie komplett neu zu laden.
jQuery ist eine freie JavaScript-Bibliothek, die Funktionen zur DOM-Navigation und -Manipulation zur Verfügung stellt. Sie erlaubt, Java-Code und spezielle JSP-Aktionen in HTML- oder XML-Seiten einzubetten. Dabei ermöglicht es die JSP-Syntax, mittels spezieller XML-Tags (JSP-Aktionen) vordefinierte Funktionalität einzubinden. Diese JSP-Aktionen werden in sogenannten Tag-Bibliotheken (Tag-Libraries) als Erweiterung der HTML- bzw. XML-Tags definiert.
Die Web Services Description Language (WSDL) ist eine plattform-, programmiersprachen- und protokollunabhängige Beschreibungssprache für Netzwerkdienste (Webservices) zum Austausch von Nachrichten auf Basis von XML.
Ein Webservice oder Webdienst ist eine Softwareanwendung, die über ein Netzwerk für die direkte Maschine-zu-Maschine-Interaktion bereitgestellt wird. Jeder Webservice besitzt einen Uniform Resource Identifier (URI), über den er eindeutig identifizierbar ist, sowie eine Schnittstellenbeschreibung in maschinenlesbarem Format (als XML-Artefakt, meist WSDL), die definiert, wie mit dem Webservice zu interagieren ist. Die Kommunikation kann (muss aber nicht) über Protokolle aus dem Internetkontext wie HTTP laufen und XML-basiert sein. Webservices können auf verschiedene Arten implementiert werden. Am weitesten verbreitet sind dabei: Remote Procedure Call (RPC), über entfernte Funktionsaufrufe: WSDL-basierend, eine lose Kopplung ist nicht unbedingt gewährleistet. SOAP als eine Art Nachrichtendienst, WSDL-basierend. REST, es wird versucht, das Interface auf eine Menge definierter Standard-Operationen (an HTTP angelehnt: GET, PUT, POST, DELETE) zu beschränken. Der Schwerpunkt liegt auf der Interaktion von zustandslosen Ressourcen.
Web-Architektur. Das REST-Protokoll entwickelte sich aus dem 1994 von Roy Fielding entworfenen HTTP Object Model. Der Architekturstil der RestFul Application wurde allerdings häufig falsch oder gar nicht umgesetzt und findet erst seit neuestem (Stand 2014) Anklang in der Welt des World Wide Web. Vor REST wurde häufig SOAP oder WSDL verwendet, die zwar ähnlich funktionieren, aber auf dem Prinzip der Transportunabhängigkeit aufbauen und HTTP nur als weiteres Mittel zum Transport von Daten verwenden.