Was sind Systemtests?

Zwei Kollegen arbeiten gemeinsam an einem Computer und konzentrieren sich auf den Monitor vor ihnen.

Was sind Systemtests?

Systemtests sind leistungsbasierte, durchgängige Softwaretests eines gesamten Systems. Diese End-to-End-Tests umfassen Aspekte des Functional Testing, der nicht-funktionalen Prüfung, der Schnittstellenprüfung, der Belastungsprüfung und der Wiederherstellungstests.

Stellen Sie sich vor, Sie betrachten ein Softwaresystem unter einem Mikroskop, beginnend mit der höchsten Vergrößerungsstufe, der Einheit. Dies ist der grundlegende Baustein des Softwaresystems. Anschließend erweitert sich die Ansicht auf die nächste Vergrößerungsstufe – die Module, die aus diesen einzelnen Einheiten bestehen. Wenn Sie schließlich vollständig herauszoomen, gelangen Sie zur Systemebene. Bei dieser Vergrößerungsstufe können Sie alles innerhalb des Systems sehen und wie alle von diesen Modulen erstellten Komponenten zusammenarbeiten.

In gewisser Weise ähnelt das Testen von Systemen dieser mikroskopischen Betrachtung – allerdings mit einem entscheidenden Unterschied. Systemtests sind eine Form des Black-Box-Testens. Das bedeutet, dass die Tester weniger an den einzelnen Komponenten interessiert sind, aus denen das System besteht, sondern vielmehr an der Gesamtfunktionalität des Systems. Aus dieser Perspektive des „Bestehen/Nichtbestehen“ ist das Systemverhalten in diesem Zusammenhang nur insofern von Bedeutung, als es sich auf die Systemleistung bezieht. (White-Box-Tests ermöglichen einen besseren Einblick in die Beschaffenheit der Komponenten innerhalb eines Systems.)

Systemtests umfassen häufig die Analyse mehrerer separater Softwaresysteme, die innerhalb eines bestimmten Softwaresystems möglicherweise zusammenarbeiten oder auch nicht.

Die neuesten Tech-News – von Experten bestätigt

Bleiben Sie mit dem Think-Newsletter über die wichtigsten – und faszinierendsten – Branchentrends in den Bereichen KI, Automatisierung, Daten und mehr auf dem Laufenden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.

Vielen Dank! Sie haben sich angemeldet.

Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.

Ist Ihre Systemsoftware startbereit?

Denken Sie an den Countdown, der einem Raketenstart vorausgeht. Während sich alle an den dramatischen 10-Sekunden-Countdown vor der Zündung und dem Start erinnern, erinnern sich nur wenige an die zahlreichen Abteilungschecks, die vom Flugleiter angefordert und mit „Go“ bestätigt werden. Bei einem typischen Weltraumstart werden die Abteilungsleiter zu geplanten Operationen, Missionssicherheit, Fahrzeugsystemen und erwarteten Wetterbedingungen sowie zu zahlreichen anderen Themen konsultiert. Jede Abteilung wird abgefragt, und jeder Abteilungsleiter antwortet der Reihe nach.

Ebenso können Systemtests als abschließende Checkliste betrachtet werden, die der Einführung eines neuen Softwaresystems vorausgeht. Die letzte Runde der Beseitigung bekannter Softwarefehler ist abgeschlossen. Und genau wie bei den historischen Checklisten, die die frühen Pioniere der Raumfahrt eingeführt haben, kommt es nun auf die endgültige Freigabe durch jede „Abteilung“ an, die am Systemtesten beteiligt ist.

Jede Abfrage wird hinsichtlich der Funktionalität des Systems schattiert dargestellt:

  • Funktioniert jede Komponente wie erwartet?
  • Funktionieren die Komponenten in korrekter Abstimmung miteinander?
Anwendungsentwicklung

Steigen Sie ein: Entwicklung von Enterprise-Anwendungen in der Cloud

In diesem Video erläutert Dr. Peter Haumer, wie die moderne Entwicklung von Unternehmensanwendungen in der Hybrid Cloud heute aussieht, indem er verschiedene Komponenten und Praktiken demonstriert, darunter IBM Z Open Editor, IBM Wazi und Zowe. 

Was gehört zu Systemtests?

Bei der Erörterung von Systemtests werden wir zwangsläufig auf das Thema Abhängigkeiten stoßen, also Beziehungen, die innerhalb von Testfällen bestehen. In solchen Situationen kann das Ergebnis eines Testfalls teilweise oder vollständig von den Ergebnissen anderer Testfälle abhängen. Abhängigkeiten können auch Funktionalität, Testumgebungen oder Sicherheitsrichtlinien betreffen und sich sogar auf den gesamten Testprozess eines Unternehmens auswirken.

Bei Systemtestmethoden wird kein tiefer Einblick in die Funktionsweise der Systeme gewährt (denken Sie daran, es handelt sich um eine Form des Blackbox-Tests), sondern es wird lediglich festgestellt, ob eine bestimmte Anwendung funktioniert. Der Zweck von Systemtests besteht darin, Lücken, Fehler oder fehlende Anforderungen zu identifizieren, da sie die Gesamtfunktionalität der Softwareanwendung bestimmen.

Systemtests werden in der Regel nach dem Integration Testing, jedoch vor den Abnahmetests durchgeführt, um sicherzustellen, dass alle Komponenten ordnungsgemäß zusammenarbeiten. Wie wir sehen werden, umfassen sie häufig sowohl die funktionalen als auch die nicht-funktionalen Aspekte des Systems. Da sie sowohl auf den rein funktionalen als auch auf den weitgehend nicht-funktionalen Bereichen basieren, befassen sie sich mit Aspekten wie Benutzerfreundlichkeit, Sicherheit und Leistung.

Einer der Hauptzwecke von Systemtests ist die Überprüfung, ob die Programmiersprache einer Software in ein funktionsfähiges Programm übersetzt werden kann. Das übergeordnete Ziel von Systemtests ist jedoch sicherzustellen, dass die zu bewertende Software die geschäftlichen Anforderungen der Nutzer, die sich darauf verlassen werden, angemessen unterstützt.

Der Testprozess soll die gleiche Produktionsumgebung widerspiegeln, die auch verwendet wird, um sicherzustellen, dass die Software trotz sich ändernder realer Bedingungen wie erforderlich funktioniert. Ebenso werden Testdaten erstellt, um reale Daten und Situationen nachzubilden. Nach Durchführung der Testfälle können Fehler in der Software lokalisiert und behoben werden.

Funktionale Arten von Systemtests

Systemtests können in drei Hauptgruppen unterteilt werden. Die erste Gruppe, Functional Testing, befasst sich mit der Systemleistung, zielt jedoch nicht darauf ab, tiefergehende Erkenntnisse zu gewinnen, sondern lediglich festzustellen, ob die Software wie versprochen funktioniert. Nachfolgend sind einige der wichtigsten Arten von Functional Testing:

  • Abnahmetests: Bei Benutzerabnahmetests werden Leistungstests von Personen durchgeführt, die die Zielgruppe der zu entwickelnden Software repräsentieren. Diese Benutzer sorgen für mehr Realismus im Testprozess, indem sie die Software unter realen Bedingungen testen.
  • Integration Testing: Ein besonders wichtiger Bereich von Functional Testing untersucht, wie gut verschiedene Module oder Komponenten zusammenwirken, wenn sie in enger Zusammenarbeit betrieben werden müssen. Dies wird als Systemintegrationstests bezeichnet. Ein vollständig integriertes System bietet Testern die Möglichkeit, wichtige Interaktionen zu bewerten.
  • Smoketest: Ein Smoketest bietet die Möglichkeit zu überprüfen, ob die Gesamtfunktionalität nach einer Codeänderung durch einen Entwickler erhalten geblieben ist. Die Änderung wurde vorgenommen, und mithilfe des Smoketests können Sie schnell feststellen, ob diese Codeänderung negative Auswirkungen hat.
  • Unit-Testing: Beim Unit-Testing wird ein begrenzter Abschnitt des Codes in einer isolierten Testumgebung überprüft. Wenn die betreffende Einheit den Test nicht besteht (wie aus einem Vergleich der Testdaten und der Funktionsziele hervorgeht), sind in der Regel weitere Tests einzelner Komponenten oder Module auf Systemebene erforderlich.

Nicht-funktionale Arten von Systemtests

Functional Testing liefert zwar äußerst wichtige Informationen, jedoch beschränken sich diese Daten im Wesentlichen auf eine positive oder negative Bewertung, die ausschließlich darauf basiert, ob das System wie vorgesehen funktioniert. Dabei werden zahlreiche relevante Variablen außer Acht gelassen, wie beispielsweise die Systemsicherheit, die Benutzererfahrung und Leistungsaspekte.

Nicht-funktionale Systemtests bieten eine Möglichkeit, die Funktionsweise des Systems zu beurteilen. Der wesentliche Unterschied zwischen Functional Testing und nicht-funktionalen Tests lässt sich anhand des folgenden einfachen Vergleichs verdeutlichen:

  • Functional Testing: Funktioniert das System?
  • Nicht-funktionale Tests: Funktioniert das System gut?

In diesem Zusammenhang sind hier einige der wichtigsten Formen des nicht-funktionalen Systemtestens aufgeführt:

  • Barrierefreiheitstests: Sind die präsentierten digitalen Inhalte für alle zugänglich, einschließlich Menschen mit verschiedenen Behinderungen? Barrierefreiheitstests untersuchen diese Frage und stellen sicher, dass Inhalte allen potenziellen Nutzern zugänglich sind, unabhängig von körperlichen und geistigen Einschränkungen, und dass sie den Standards für Inklusion entsprechen, die im Americans with Disabilities Act (ADA) festgelegt sind.
  • Kompatibilitätstests: Wenn man bedenkt, wie weit verbreitet Anwendungen sind und wie viele plattformübergreifende Wege Apps zurücklegen müssen, wird die Notwendigkeit von Kompatibilitätstests deutlich, mit denen gemessen wird, wie gut solche Apps funktionieren. Das geschieht unabhängig davon, wie viele Netzwerke, Browser, Betriebssysteme und Hardwarekonfigurationen sie durchlaufen müssen.
  • Lasttests: Als Teilbereich, der sich mit den besonderen physikalischen Eigenschaften des Begriffs „Last” und deren Auswirkungen auf die Fähigkeit eines Systems zur Verarbeitung von Systemanfragen befasst, konzentrieren sich Lasttests darauf, was geschieht, wenn Skalierbarkeit in großem Umfang auftritt. Wir gehen davon aus, dass das System keine Probleme bei der Verarbeitung einer einzelnen Systemanfrage haben wird. Wie sieht es jedoch aus, wenn diese Last durch Tausende von Anfragen – oder sogar noch mehr – vervielfacht wird?
  • Lokalisierungstests: Es handelt sich um eine globale Wirtschaft, an der mehr Länder und Kulturen beteiligt sind als jemals zuvor. Beim Lokalisierungstest wird sichergestellt, dass Softwareinhalte, die in verschiedene Regionen weltweit ausgeliefert werden, gemäß den allgemeinen Regeln zur Benutzererfahrung für den jeweiligen Bereich geeignet sind.
  • Leistungstests: Diese Art von nicht-funktionalen Tests legt besonderen Wert auf Leistungsaspekte. Für eine gute Leistung ist es beispielsweise unerlässlich, dass ein System schnell und reibungslos auf Anfragen reagiert. Der Testplan für Leistungstests bewertet, wie lange Benutzer auf die Bearbeitung ihrer Anfragen warten müssen.
  • Sicherheitstests: Es ist kein Geheimnis, dass Datensicherheit heutzutage von größter Bedeutung ist. Daher ist es sinnvoll, dass eine Form der Prüfung speziell auf die Sicherheit ausgerichtet ist. Sicherheitsprüfungsmethoden werden entsprechend der Art der potenziellen Bedrohungen ausgewählt, denen das Unternehmen ausgesetzt ist.
  • Stresstests: Ähnlich wie bei einem medizinischen Stresstest, der Aufschluss darüber gibt, wie gut das Herz einer Person unter Belastung funktioniert, wird bei Stresstests von Software überprüft, wie gut ein System unter Belastung über seine normale Kapazität hinaus funktionsfähig bleibt, um Engpässe und Schwachstellen zu erkennen.
  • Usability-Tests: Bei dieser Art von nicht-funktionalen Tests geht es ausschließlich um die Qualität der User Experience (UX). Usability-Tests sind manuelle Testverfahren, die am besten in kleinem Maßstab durchgeführt werden. Dennoch sollten sie regelmäßig durchgeführt werden – insbesondere bei komplexen Vorgängen wie der Lokalisierung von Anwendungen.

Andere Arten von Systemtests

Es gibt noch weitere Typen von Systemtests, die nützlich sind, obwohl sie nicht in die Kategorien Funktionstests oder Nicht-Funktionstests fallen. Hier sind einige der bemerkenswertesten dieser Methoden:

  • API-Tests: Programmierschnittstellen (APIs) sind äußerst wichtig, da sie die Softwareentwicklung ermöglichen, indem sie verschiedene Anwendungen oder Systeme miteinander verbinden. API-Tests stellen sicher, dass die API-Verbindungspunkte wie vorgesehen funktionieren. Sie bieten auch einen Überblick über die Benutzerberechtigungen und die Art und Weise, wie über APIs Datenverwaltung erfolgt.
  • Automatisierte Tests: Wie der Name schon sagt, nutzt das automatisierte Testen (auch Testautomatisierung genannt) die Möglichkeiten der Automatisierung für das Testen von Softwareanwendungen. Dazu werden Testskripte erstellt und verwendet, die für die Durchführung von Testfällen auf Softwareanwendungen konzipiert sind. Dies geschieht in großem Umfang und ohne menschliches Eingreifen. Strukturierte Richtlinien, Tools und Verfahren, die zur Automatisierung des Testprozesses beitragen, werden als Frameworks bezeichnet.
  • Manuelles Testen: Im Gegensatz zu automatisierten Tests stützt sich das manuelle Testen auf menschliche Tests, um die zu bewertende Software anhand verschiedener Testszenarien und Testskripte zu erproben. Die Tester werden dazu angehalten, die Software gründlich zu prüfen, um Probleme zu identifizieren, die behoben werden müssen.
  • Migrationstests: Migrationstests sind für Unternehmen erforderlich, die ihre digitale Unternehmenskultur aktualisieren oder umgestalten möchten. Wenn Unternehmen solche Transformationsmaßnahmen durchführen, benötigen sie die Bestätigung, dass wichtige Daten und Software ordnungsgemäß vom alten System auf das neue System übertragen werden.
  • Regressionstests: Obwohl Codeänderungen dazu dienen, Software zu verbessern oder ihre Funktionen zu erweitern, können sie unbeabsichtigt zu Problemen führen, wenn menschliche Fehler hinzukommen. Regressionstests ermöglichen es Testern, durch die Wiederholung von Tests bei Bedarf einen stabilen und korrekten Betrieb sicherzustellen.

Herausforderungen bei der Durchführung von Systemtests

Obwohl der Systemtestprozess die umfassendsten Blackbox-Leistungstests bietet, die derzeit verfügbar sind, ist die Durchführung von Systemtests nicht ohne potenzielle Probleme:

Anforderungen im Wandel

Die Anforderungen, die Systemtests erfüllen müssen, sind vielfältig – seien es geschäftliche Anforderungen, die für das jeweilige Unternehmen spezifisch sind, funktionale Anforderungen, die für die jeweilige Software einzigartig sind, oder festgelegte Anforderungen, die für deren Betrieb gelten können. Tatsächlich scheint es an Systemanforderungen, die Betriebssysteme erfüllen müssen, nie zu mangeln. Häufig wechselnde Anforderungen können ein System beeinträchtigen und zu unvollständigen Testfällen führen.

Termindruck

Es sollte keine Überraschung sein, dass Fristen in einem geschäftlichen Umfeld erhebliche Probleme verursachen können. Fristen sind dafür bekannt, erhebliche Auswirkungen zu haben, da Arbeitspläne mit kalenderbasierten Erwartungen kollidieren. Der Termindruck in der Softwareentwicklung äußert sich darin, dass angemessene und umfassende Systemtests häufig vernachlässigt werden und entweder unvollständig durchgeführt oder ganz ignoriert werden. Dies erfordert häufig eine erneute Prüfung zu einem späteren Zeitpunkt im Softwareentwicklungszyklus.

Ressourcenbeschränkungen

Systemtests werden nicht isoliert oder ohne Aufwand durchgeführt. Sie erfordern die kompetente Arbeit von Testteams, Tools zur Unterstützung dieser Maßnahmen und ein angemessenes Budget, um sie überhaupt erst zu ermöglichen. Ohne diese Komponenten kann es leicht zu Shortcuts kommen, die unvollständige Tests verursachen. Wenn auch nur ein Teil dieser Gleichung verändert oder außer Kraft gesetzt wird, kann sich dies negativ auf die Testabdeckung auswirken, die sich aus den Systemtests dieser Softwareanwendung oder dieses Softwareprodukts ergibt.

Ökologische Instabilität

Während des Testprozesses können viele potenzielle Schwachstellen bewertet werden, jedoch können Softwareentwickler diese Bewertungen nur vornehmen, wenn sie unterstützt werden und die Kontrolle über die Testumgebung haben, in der sie arbeiten. Wenn Tester nicht in stabilen Umgebungen arbeiten, kann es leichter passieren, dass sie potenzielle Softwarefehler übersehen. Und wenn Tester in instabilen Umgebungen Softwarefehler finden, die behoben werden müssen, ist es für sie oft schwieriger, diese Fehler später zu reproduzieren.

Kommunikationsausfälle

Wenn Ihre Aufgabe die Qualitätssicherung von Software umfasst, ist die Überprüfung von Computercode eine mühsame Arbeit, die langwierig und zeitaufwendig sein kann. Kommunikationslücken zwischen Testern, Entwicklern und anderen Stakeholdern können diese Arbeit noch unangenehmer machen. Wie bei jedem geschäftlichen Vorhaben führen Kommunikationsprobleme zu Missverständnissen und schaffen eine Produktionsumgebung, in der Fehler unentdeckt bleiben und sich in Betriebssystemen festsetzen können.

Verwaltung komplexer Testdaten

Die Testverfahren variieren, und die Testergebnisse sind sehr unterschiedlich – von leicht verständlichen Testdaten bis hin zu umfangreichen und komplexen Datensätzen, die während und nach der Testphase eine sorgfältigere Verwaltung erfordern. Die Komplexität des Projekts wird weiter erhöht, wenn die Testumgebungen nicht vollständig mit ihren Produktionspendants übereinstimmen. Die Teststrategie, die während des Softwareentwicklungsprozesses umgesetzt wird, muss berücksichtigen, wie diese Probleme am besten bewältigt werden können.

Weiterführende Lösungen
IBM Enterprise Application Service für Java

Ein vollständig verwalteter, mandantenfähiger Service für die Entwicklung und Bereitstellung von Java-Anwendungen.

Java-Apps erkunden
DevOps-Lösungen

Verwenden Sie DevOps-Software und -Tools, um cloudnative Anwendungen für mehrere Geräte und Umgebungen zu erstellen, bereitzustellen und zu verwalten.

DevOps-Lösungen erkunden
Services für die Entwicklung von Unternehmensanwendungen

Die Entwicklung von Cloud-Anwendungen bedeutet: einmal erstellen, schnell iterieren und überall bereitstellen.

Services für die Anwendungsentwicklung
Machen Sie den nächsten Schritt

IBM Cloud Application Development Consulting Services bieten fachkundige Beratung und innovative Lösungen zur Optimierung Ihrer Cloud-Strategie. Arbeiten Sie mit den Cloud- und Entwicklungsexperten von IBM zusammen, um Ihre Anwendungen zu modernisieren, skalieren und beschleunigen und so transformative Ergebnisse für Ihr Unternehmen zu erzielen.

Mehr zu Services zur Anwendungsentwicklung Erste kostenlose Schritte beim Erstellen auf IBM Cloud