Systemtest

R 2.0.0

Was ist ein Systemtest?

Was ist ein Systemtest?

Eine Teststufe mit dem Schwerpunkt zu verifizieren, dass ein System als Ganzes die spezifizierten Anforderungen erfüllt.

Nach abgeschlossenem Integrationstest folgt als dritte Teststufe der Systemtest.

Hintergründe des Systemtests:

  • möglichst viele Fehler zu finden

  • die Risiken für die Produktion beziehungsweise den Betrieb beim Kunden weiter zu minimieren

  • das System hinsichtlich funktionaler und nicht-funktionaler Merkmale zu verifizieren entsprechend den Vorgaben aus Spezifikationen und Grobentwurf

  • das System gegen die Anforderungen des Kunden zu validieren mit besonderem Augenmerk auf vollständige Umsetzung der Anforderungen, auf Einhaltung von Erwartungen von Endnutzern und Kunden und auf Nützlichkeit zur Bewältigung der Aufgaben der Endnutzer

  • Vertrauen in die Qualität des Systems als Ganzes zu schaffen

  • verhindern, dass Fehlerzustände in höhere Teststufen oder in die Produktion übertragen werden

Anwendungsbeispiel

Anwendungsbeispiel
ALT MISSING

Dank Theos Unterstützung hat Eddy eine geeignete Integrationsstrategie entwickelt und durch den externen Hersteller seiner Anwendung auch umsetzen lassen. Über regelmäßige Testberichte wird er über den Stand der Arbeiten informiert. Komponenten und Schnittstellen werden also nun durch ihre jeweiligen Teststufen verifiziert.

Nun möchte er die nächste Teststufe, den Systemtest, auf einen höheren Reifegrad heben. Dabei geht es darum die unterschiedlichen Komponenten nun alle im Zusammenspiel - als System - zu testen. Die theoretischen Grundlagen zu den vier aufeinander aufbauenden Teststufen liest Eddy zur Sicherheit noch einmal im QS-Baukasten seiner Behörde nach.

ALT MISSING

"Endlich können wir das System als Ganzes testen und werden sehen, ob es vollständig ist und wie erwartet funktioniert. Ich habe neulich auf dem Flur mitbekommen, dass Zweifel an der Funktionalität der neuen Software bestehen. Diese Zweifel können wir jetzt hoffentlich widerlegen und endlich Vertrauen in das gesamte System schaffen", führt Eddy im Meeting des Wartungsteams aus. Theo hatte während der letzten kollegialen Fallberatung von Eddy noch einmal auf die Bedeutung des Systemtests hingewiesen, damit verhindert wird, dass Fehlerzustände in den Abnahmetest oder sogar in das produktive System übertragen werden. "Also sind die kommenden Tests enorm wichtig für den weiteren Erfolg des Projekts", betont Theo.

Eddy und sein Team beginnen mit der Planung der Systemtests. Da sie die Software nicht in der "Echt-Weit" testen können, brauchen sie eine Testumgebung., die die Realität möglichst gut widerspiegelt.

ALT MISSING

"Wie sieht es denn mit der Anbindung an die externen Systeme aus?", wirft Volker in die Runde. "Eine Auswahl der verwendeten externen Systeme können wir für unsere Tests nutzen", antwortet Eddy. "Ich erstelle eine Übersicht über die Systeme, die wir problemlos verwenden können". "Wunderbar, dann kümmere ich mich um das Schreiben der Testfälle", sagt Christiane. Leider können sie nur selten alle Fremdsysteme mit einbeziehen, denn das erfordert einen hohen Koordinationsaufwand und vor allem auch Personelle Ressourcen. Aber dort, wo sie nicht direkt mit Fremdsystemen interagieren können behelfen sie sich mit Mocks, von denen sie sehr viele schon im Integrationstest hergestellt haben und die sie nun wiederverwenden. „So erzielen wir echte Synergien zwischen den Teststufen", freut sich Eddy, „gut, dass ich um diese Aufwände gekämpft habe und wie schön, dass ich nun zeigen kann, wie sinnvoll das war.'

ALT MISSING

Eddy ist wichtig, dass die Testfälle so geschrieben werden, dass eine Überprüfung der funktionalen aber auch der nicht-funktionalen Anforderungen gewährleistet ist. Gerade bei Systemtests ist letzteres wichtig. Dabei hat Theo während der Beratung folgende Punkte besonders im Blick: Da das System zukünftig von vielen verschiedenen Anwendern genutzt wird, hat er das Softwarequalitätsmerkmal „Effizienz" priorisiert und möchte also Lasttests durchführen, um das Verhalten des Systems bei einer Vielzahl von parallelen Zugriffen zu testen. Es geht ihm also um Fragen wie "Welche Reaktionszeiten hat das System?", und "Wie verändert sich die Performance bei zunehmender Last?". Um jenseits der nicht-funktionalen Anforderungen die Grenzen des Systems einmal richtig auszureizen, schlägt Theo vor auch einige Stresstests zu integrieren, denn er weiß, dass es zum Ende jeden Quartals die Anzahl der Zugriffe auf das System deutlich ansteigen. Zum Schluss würde Eddy auch gerne einige Tests auf Zuverlässigkeit durchführen. Dazu muss er aber vorher mit Hilde besprechen um abzuklären, ob und wie viel Zeit für solche Tests zur Verfügung steht denn sie müssen sich einige Ressourcen teilen.

ALT MISSING

Christiane öffnet die neueste Mail von Eddy: "Hallo Christiane, denk bitte daran, dass wir mit dem Systemtest auch unvollständige oder widersprüchliche Anforderungen aufdecken wollen, ggf. decken wir auch undokumentierte oder vergessene Anforderungen auf. Hier müssen wir besonders aufpassen und die Ergebnisse später genau dokumentieren. Wenn wir alle Faktoren berücksichtigen, können wir das Risiko von Fehlern in unserem System deutlich reduzieren."

Beschreibung

Der große Unterschied zu vorherigen Teststufen ist, dass hier das integrierte Gesamtsystem gegen die Anforderungen getestet wird. Das System wird, wie eine Black Box von außen betrachtet.

Der Systemtest wird üblicherweise durch vom Entwicklungsteam unabhängigen Testteams durchgeführt.

Der Systemtestaufwand skaliert nicht nur mit der Anzahl der Systemtestfälle, sondern auch mit der Anzahl abzudeckender Testumgebungskonfigurationen.

Die meisten Testfälle werden „End-To-End-Tests“ sein, ein Prozess oder Geschäftsvorgang wird vom oberen Ende bis zum unteren Ende durchführt und dann bewertet. Diese Tests müssen völlig unabhängig von der internen Struktur des Systems sein (Sprache und verwendete Technologien, Implementierungsdetails usw.). Sie müssen sich einfach auf die Ein- und Ausgänge des Systems konzentrieren und es völlig objektiv beobachten.

Systemtests sind bei der Änderung der internen Struktur des Systems (Umgestaltung, Austausch interner Komponenten, Hinzufügen von Funktionalitäten usw.) von wesentlicher Bedeutung: Sie stellen sicher, dass diese Änderungen nicht zu Nebenwirkungen (Regressionen) für die Kunden führen.

Als Testbasis für den Systemtest dienen meistens funktionale und nicht-funktionale Anforderungen. Ebenso User-Stories, Geschäftsprozesse oder Anwenderdokumentationen eignen sich. Fehlt diese Basis oder ist sie lückenhaft, können Anwender oder Fachabteilungen befragt werden. Auch das alte System kann als Testorakel dienen, z.B. bei Systemablösung oder Migrationen.

ALT MISSING
Abb. 1: Testpyramide Systemtest

Systemtests sind die ersten Tests, die direkt mit den Abnahmekriterien des Kunden im Testprozess zusammenhängen. Diese Tests, wenn automatisiert, ermöglichen es, mögliche Regressionen so früh wie möglich zu erkennen, sonst besteht die Gefahr unangenehmer Überraschungen in späteren Projektphasen: wenn das System in die Gesamtlösung integriert ist oder schlimmer, beim Kunden oder einem seiner Vertreter (z. B. Product Owner).

Es ist dann viel teurer, die festgestellten Probleme zu beheben, und das Risiko, dass sich die Auslieferung des Projekts verzögert, ist viel größer.

Der Systemtest hat folgende Mehrwerte:

  • Verifikation, dass das System vollständig ist und wie erwartet funktionieren wird

  • Vertrauen in die Qualität des Systems als Ganzes schaffen

  • Verhindern, dass Fehlerzustände in höhere Teststufen oder in die Produktion übertragen werden

Video: Beschreibung des Konzepts Systemtest (Länge: 18:02)

Reifegradbestimmung & Entscheidungshilfen

Quellen