Testing Environment
Ein Testing Environment ist ein Set aus Soft-, Middle- und Hardwarekomponenten, auf denen Anwendungen, Websites und Softwarelösungen unter verschiedenen Aspekten geprüft werden. Dieses Set besteht einerseits aus physischen Komponenten wie der Hardware des Servers und des Clients, andererseits aus virtuellen Komponenten: Die Konfiguration des Systems, das installierte Betriebssystem sowie die Version der Datenbank zählen dazu. Das Setup ist eine Replikation des Produktivsystems; es existiert aber getrennt von diesem, um eventuelle negative Auswirkungen auf den Releasekandidaten, der nach dem Testing auf das Produktivsystem migriert wird, von vorneherein zu vermeiden. Eine Testing Environment wird ebenfalls als Testumgebung, Test Environment und in Bezug auf eine einzelne Testumgebung auch als Test bed bezeichnet.
Allgemeine Informationen zum Thema
Die verschiedenen Komponenten sollen die Durchführung der Tests unterstützen. Deshalb ist die Testumgebung eine Replikation des Produktivsystems: Möglichst alle Komponenten werden gespiegelt, sodass keine gravierenden Unterschiede auftreten, die die Funktion der zu prüfenden Anwendung in irgendeiner Weise beeinträchtigen könnten. Die Bedingungen, unter denen die Anwendung nach der Veröffentlichung genutzt wird, werden simuliert. Das schließt Endgeräte, Netzwerkverbindungen, Server, Datenbanken, Betriebssysteme sowie die Konfiguration der Komponenten mit ein. Aber auch die Lizenzen der verwendeten Software während des Tests und den Ablauf oder die sogenannten Testaktivitäten.
Das Testing Environment ist zwar eine Eins zu Eins Kopie der Produktionsumgebung, sie ist jedoch völlig unabhängig von dieser und arbeitet nach Sandbox-Prinzip. Die Testumgebung wird abgeschirmt vom restlichen System; es bestehen keinerlei Netzwerkverbindungen in die Infrastruktur des Entwicklungsprozesses mit seinen unterschiedlichen Bereichen oder Entwicklungsschritten (Vgl. Staging Environment). Das Testing Environment sollte autark sein.
Ein Test unter realen Bedingungen, wie er mit Testing Environments möglich ist, verfolgt unterschiedliche Ziele:[1]
- Eine hohe Qualität der Anwendungen, die entwickelt oder gepatcht werden: Nutzerfreundlichkeit, Design, Datenintegrität und Sicherheit können qualitative Aspekte sein.
- Abstimmung von Bedürfnissen auf Seiten der Endverbraucher oder Endkunden im B2B-Bereich.
- Geringe Kosten beim Support im Falle von Bugs oder Systemabstürzen beim Endkunden. Denn unter Umständen fallen weitere Kosten bei Nichtfunktion an.
- Kosteneffizienz über den gesamten Lebenszyklus der Anwendungen und Minimierung des Aufwandes aller Akteure, die an der Produktion beteiligt sind.
Funktionsweise
Die Methoden und Arbeitsschritte, die auf der Testumgebung eingesetzt und durchgeführt werden, sind vom Paradigma der Softwareentwicklung abhängig. So kann eine Testumgebung bei der agilen Softwareentwicklung mehrere Sandboxes enthalten – eine für Tests und die Qualitätssicherung und eine zu Demonstrationszwecken. Die Behebung von Bugs und Fehlern erfolgt hier meist iterativ, sodass nicht nur innerhalb einer isolierten Testumgebung der Code verändert wird, sondern das Feedback auch von unterschiedlichen Szenarien und Sandboxes ausgeht. Durch eine Demosandbox kommt zum Beispiel auch ein Kundenfeedback zustande, das wiederum in die Entwicklungsprozesse einfließen kann.[2] Andere Vorgehensweisen wie das Wasserfallmodell, Spiralmodell, Scrum, Kanban oder Prototyping stellen jeweils eigenen Bedingungen an geeignete Testing Environments.
Auch das Projekt selbst, die auszuführende Firma und die Bedürfnisse des Kunden spielen eine wichtige Rolle. Große Unternehmen verfügen in der Regel über eine entsprechende IT-Infrastruktur. Die Anforderungen an eine Testumgebung sind schwieriger umzusetzen, da sie einer genauen Abstimmung bedürfen – unter Umständen ist auch ein Test Environment Management (kurz: TEM) notwendig.[3] Die Organisation, Einrichtung und das Betreiben eines Testing Environments nimmt erhebliche Ressourcen in Anspruch und ist sehr komplex. Je nach Anwendung bedeutet dies zusätzlichen Aufwand. Soll zum Beispiel eine Anwendung für mehrere Betriebssysteme getestet werden, müssen diese Systeme entweder innerhalb einer Testumgebung emuliert werden oder es müssen verschiedene Testing Environments realisiert werden – was wiederum weitere Ressourcen erfordert.
In der Praxis erfolgt die Umsetzung einer Testumgebung deshalb oft über reduzierte Infrastrukturen, die über weit weniger Speicher, Cache und Ressourcen verfügen als reale Systeme. Ein Beispiel: Anstelle eines Servers wird ein virtueller Server auf einem Rechner gehostet. Auch Emulationssoftware wie VMWare kommt zum Einsatz. Bei Websites werden häufig Subdomains verwendet, um Produktiv- und Testsystem voneinander zu trennen. Prinzipiell sollte die Testumgebung mit der Produktionsumgebung funktional ähnlich oder produktionsnah sein. Je nach Testziel ergeben sich hier ganz unterschiedliche Anforderungen an die IT-Infrastruktur, die im Einzelfall nur durch eine sorgfältige Konzeption der Testumgebung und ein systematisches Testdesign erfüllt werden können – insbesondere, wenn Sicherheitsaspekte im Vordergrund stehen.[4]
Beispiele
Ein Test einer Webanwendung könnte folgende Komponenten beinhalten:[5]
- Server: IIS/Apache
- Datenbank: MS SQL
- Betriebssystem: Windows/ Linux
- Internetbrowser - IE/FireFox
- Java Version: Version 6
Wenn Tests von Webapplikationen durchgeführt werden, zählen Programme wie Browser, JavaScript oder Hilfsprogramme zum Abspielen unterschiedlicher Medien dazu. Andere Anwendungen und Software-Lösungen erfordern möglicherweise weitere Hilfsprogramme, Skripte und installierte Programmiersprachen, die gesonderte Lizenzen erfordern.
Bedeutung für die Programmierung
Ein unzureichendes Testing kann nicht nur erhebliche monetäre Auswirkungen haben, sondern auch langfristig das Image eines Unternehmens beschädigen. Ob B2C oder B2B – Anwendungen, die nicht oder nur unzureichend getestet wurden, beinhalten meist Softwarefehler und Sicherheitslücken mit teils großer Tragweite. Es wird vermutet, dass jeder zweite Softwarefehler auf Mängel im Testmanagement zurückgeführt werden kann und der Aufwand für ad hoc Behebungen von Fehlern das Fünffache beträgt.[6] Dies bezieht sich zunächst auf das Testing Environment selbst, im nächsten Schritt aber auch auf das systematische Vorgehen, das sogenannte Test Bed, und den häufig vorhandenen Termindruck. Generell gilt, dass ein systematisches Testing die Testfälle bereits während des Entwicklungsprozesses antizipieren sollte.
Hinzu kommt: Es existieren kaum Standards, die die Planung und Inbetriebnahme von Testumgebungen vereinheitlichen. Lediglich das ISTQB-Glossar, ITIL sowie das Reifegradmodell TPI geben Hinweise, wie Testing Environments theoretisch beschrieben werden können. Inwiefern eine Testumgebung qualitativ gut ist, ist jedoch von vielen unterschiedlichen Faktoren abhängig – Projekt, Branche, Unternehmensgröße und nicht zuletzt von den Kundenanforderungen. Die Konzeption der Testumgebung, das Testdesign und die Testaktivitäten sind dabei kritische Faktoren, die den Erfolg von Software- und Anwendungstest mitbestimmen.[7]
Einzelnachweise
- ↑ What is Software Testing All About? softwaretestinghelp.com. Abgerufen am 18.10.2015
- ↑ Development Sandboxes: An Agile 'Best Practice' agiledata.org. Abgerufen am 18.10.2015
- ↑ What is test environment management? searchsoftwarequality.techtarget.com. Abgerufen am 18.10.2015
- ↑ Einrichten einer Testumgebung für einen Server bsi.bund.de. Abgerufen am 18.10.2015
- ↑ Test Environment tutorialspoint.com. Abgerufen am 18.10.2015
- ↑ Fünf goldene Regeln für erfolgreiches Testmanagement heise.de. Abgerufen am 18.10.2015
- ↑ Konzeption von produktionsnahen Testumgebungen pi.informatik.uni-siegen.de. Abgerufen am 18.10.2015
Weblinks
- Kurzdefinition Test Environment
- Ausführliche Beschreibung von Softwaretests
- Ausführliche Infos zu Testumgebungen
- Checklist for Testing Environments
- Best Practices