Nicht-funktionale Tests

R 2.0.0

Was sind nicht funktionale Tests?

Was sind nicht funktionale Tests?

Testen, welches durchgeführt wird, um die Erfüllung der nicht-funktionalen Anforderungen durch eine Komponente oder ein System zu bewerten.

Beschreibung

Nicht-funktionale Anforderungen beschreiben wie gut bzw. mit welcher Qualität ein (Teil-)System seine Funktionen erbringen soll.

Nicht-funktionale Tests sind eine Art von Softwaretest, bei denen die nicht-funktionalen Aspekte einer Anwendung bewertet werden. Ziel der nicht-funktionalen Tests ist es, sicherzustellen, dass die Anwendung die erwartete Arbeitslast bewältigen kann, effizient und effektiv arbeitet und die Anforderungen an Leistung, Sicherheit und Benutzerfreundlichkeit erfüllt.

Beim Test nicht-funktionaler Anforderungen stellt sich oft das Problem, dass diese lückenhaft und unklar formuliert sind. Formulierungen wie "das System soll leicht bedienbar sein" oder "schnell reagieren" sind in dieser Form nicht testbar. Daher ist es enorm wichtig, dass Tester beim Review von Anforderungsdokumenten teilnehmen und darauf achten, dass dort genannte nicht-funktionale Anforderungen messbar und damit testbar formuliert werden.

Des Weiteren gelten viele nicht-funktionale Anforderungen als derart selbstverständlich, dass niemand auf die Idee kommt, sie zu erwähnen und zu spezifizieren. Solche "vorausgesetzten Anforderungen" sind dennoch relevant und das System muss zugehörigen impliziten Eigenschaften aufweisen.

Nicht-funktionale Tests nutzen Black-Box-Testverfahren, um Testbedingungen und Testfälle abzuleiten.

Das späte Entdecken von nicht-funktionalen Fehlern kann den Erfolg eines Projekts extrem gefährden.

Arten von nicht-funktionalen Tests

Folgende nicht-funktionale Tests sollten in entsprechenden Teststufen berücksichtigt werden:

Performanztest

Testen zur Bestimmung der Performanz einer Komponente oder eines Systems.

Ein Performanztest (auch Leistungstest genannt) ist ein Typ von Software-Test, der dazu dient, die Leistungsfähigkeit eines Systems unter bestimmten Bedingungen zu bewerten. Der Performanztest wird verwendet, um zu testen, wie schnell das System reagiert, wie gut es unter Last funktioniert und wie es sich bei hoher Auslastung verhält.

Ein Performanztest kann verschiedene Aspekte des Systems bewerten, einschließlich der Geschwindigkeit, der Antwortzeit, der Skalierbarkeit und der Stabilität. Durch die Durchführung eines Performanztests können Schwachstellen und Engpässe in der Anwendung oder im System identifiziert werden, die zu Leistungsproblemen führen können.

Ein Performanztest kann durchgeführt werden, um die Leistungsfähigkeit verschiedener Komponenten oder des gesamten Systems zu testen. Die Tests können auf verschiedene Weise durchgeführt werden, z.B. durch Lasttests, Stresstests oder andere spezifische Tests.

Lasttest

Eine Art des Performanztests, die das Verhalten einer Komponente oder eines Systems unter wechselnder Last bewertet, üblicherweise zwischen zu erwartender niedriger, typischer sowie Spitzenlast.

Bei einem Lasttest wird die zukünftige Nutzung des zu testenden Systems unter Berücksichtigung bestimmter Benutzer- und Transaktionsmengen simuliert und bewertet. Dabei werden zwei grundsätzliche Ziele verfolgt:

  1. die Aufdeckung funktionaler Fehler, die nur unter paralleler oder intensiver Nutzung des Systems auftreten

  2. die Überprüfung des Zeit- und Verbrauchsverhaltens des getesteten Systems unter einer gegebenen Last (dabei werden z.B. Antwortzeiten sowie der Verbrauch von Hauptspeicher und Rechenleistung ermittelt).

Lasttests können auf unterschiedliche Aspekte eines Systems ausgerichtet sein. Dafür sind jeweils auch unterschiedliche Lastprofile und Testszenarien erforderlich, die oft mit eigenen Begriffen bezeichnet werden. Beispiele dafür sind “Skalierungstest”, “Stresstest” oder “Dauerlasttest”. Der Begriff “Lasttest” ist der Oberbegriff für alle diese Testarten.

Stresstest

Spezifische Form des Performanztests, die durchgeführt wird, um ein System oder eine Komponente an oder über den Grenzen, die in den Anforderungen spezifiziert wurden, zu bewerten.

Ein Stresstest ist ein Typ von Software-Test, der dazu dient, die Fähigkeit eines Systems unter extremen Bedingungen zu bewerten. Ziel des Stresstests ist es, die Grenzen des Systems zu testen, um zu sehen, wie es auf eine hohe Last oder unerwartete Situationen reagiert. Bei einem Stresstest wird die simulierte Last über das im Normalbetrieb erwartete Maß erhöht, bis funktionale Fehler auftreten oder das Antwortverhalten des getesteten Systems bestimmte Grenzen überschreitet. Hierfür wird oft eine kontinuierlich ansteigende Nutzerzahl simuliert.

Ein Stresstest kann verschiedene Aspekte des Systems bewerten, einschließlich der Leistung, der Stabilität, der Skalierbarkeit und der Zuverlässigkeit. Durch die Durchführung eines Stresstests können potenzielle Schwachstellen und Engpässe im System identifiziert werden, die bei hohen Lasten oder unter Stressbedingungen zu Leistungsproblemen führen können. Die Ergebnisse des Stresstests werden verwendet, um potenzielle Engpässe und Leistungsprobleme zu identifizieren und zu beheben, um sicherzustellen, dass das System unter extremen Bedingungen stabil und zuverlässig arbeitet. Stresstests werden in der Regel von einem dedizierten Test-Team durchgeführt oder von automatisierten Test-Tools ausgeführt.

Volumen-/Massentest

Ein Testansatz, bei der das Testen auf eine große Gruppe von Testern verteilt wird.

Ein Volumentest ist ein Typ von Software-Test, der dazu dient, die Fähigkeit eines Systems zu bewerten, eine große Menge an Daten zu verarbeiten. Ziel des Volumentests ist es, die Skalierbarkeit des Systems zu testen und zu sehen, wie es unter einer hohen Datenlast oder einer großen Anzahl von Transaktionen funktioniert.

Ein Volumentest kann verschiedene Aspekte des Systems bewerten, einschließlich der Datenbankleistung, der Netzwerk- und Hardware-Kapazität, der Speicherung von großen Datenmengen und der Auswirkungen von hohen Datenlasten auf die Systemleistung. Durch die Durchführung eines Volumentests können potenzielle Schwachstellen und Engpässe im System identifiziert werden, die bei hohen Datenlasten zu Leistungsproblemen führen können.

Die Ergebnisse des Volumentests werden verwendet, um potenzielle Engpässe und Leistungsprobleme zu identifizieren und zu beheben, um sicherzustellen, dass das System unter hohen Datenlasten stabil und zuverlässig arbeitet. Volumentests werden in der Regel von einem dedizierten Test-Team durchgeführt oder von automatisierten Test-Tools ausgeführt.

Sicherheitstest

Die Durchführung von Tests, um die Sicherheit (im Sinne von Zugriffsschutz) eines Softwareprodukts zu bestimmen.

Ein Sicherheitstest (auch bekannt als Sicherheitsaudit oder Penetrationstest) ist ein Typ von Software-Test, der dazu dient, die Sicherheit eines Systems zu bewerten und Schwachstellen und Angriffsvektoren zu identifizieren. Das Ziel des Sicherheitstests ist es, die Widerstandsfähigkeit des Systems gegenüber potenziellen Angriffen zu testen und Sicherheitslücken zu identifizieren, bevor sie von böswilligen Angreifern ausgenutzt werden können.

Ein Sicherheitstest kann verschiedene Aspekte des Systems bewerten, einschließlich der Sicherheit der Anwendungsarchitektur, der Netzwerksicherheit, der Authentifizierung und Autorisierung, der Datenverschlüsselung, der Datenschutzbestimmungen und der Sicherheitsrichtlinien. Es kann auch die Fähigkeit des Systems, auf Angriffe zu reagieren und sich von ihnen zu erholen, getestet werden.

Einige Beispiele für Sicherheitstests umfassen:

  1. Penetrationstests: Tests, bei denen ein ethischer Hacker versucht, das System von außen zu hacken, um Schwachstellen zu identifizieren, bevor sie von Angreifern ausgenutzt werden können.

  2. Anwendungstests: Tests, bei denen die Sicherheit von Anwendungen und Webanwendungen durch Überprüfung von Eingabefeldern und Dateien auf potenzielle Schwachstellen überprüft wird.

  3. Netzwerktests: Tests, bei denen die Sicherheit des Netzwerks und der Netzwerkkomponenten auf potenzielle Schwachstellen überprüft wird.

  4. Social Engineering-Tests: Tests, bei denen versucht wird, das System durch Täuschung von Mitarbeitern oder Kunden zu hacken.

Die Ergebnisse des Sicherheitstests werden verwendet, um potenzielle Sicherheitslücken zu identifizieren und zu beheben, um die Widerstandsfähigkeit des Systems gegenüber Angriffen zu verbessern und die Sicherheit zu gewährleisten. Sicherheitstests werden in der Regel von spezialisierten Sicherheits-Teams durchgeführt oder von automatisierten Test-Tools ausgeführt.

Benutzbarkeitstest

Tests mit dem Ziel herauszufinden, inwieweit das System durch spezifizierte Benutzer in einem bestimmten Kontext mit Effektivität, Effizienz und Zufriedenheit genutzt werden kann.

Ein Benutzbarkeitstest ist ein Software-Test, der die Benutzerfreundlichkeit eines Systems oder einer Anwendung auf die Probe stellt. Das Ziel des Tests ist es, sicherzustellen, dass das System oder die Anwendung einfach zu bedienen und intuitiv ist, damit Benutzer ihre Aufgaben schnell und effektiv erledigen können.

Ein Benutzbarkeitstest kann auf verschiedene Arten durchgeführt werden. Einige Beispiele sind:

  1. Usability-Tests: In diesen Tests werden die Benutzer in die Verwendung der Anwendung oder des Systems eingeführt und gebeten, verschiedene Aufgaben auszuführen. Die Tester beobachten, wie die Benutzer die Anwendung oder das System verwenden, und protokollieren ihre Erfahrungen. Die Tester können auch Fragen stellen und Feedback zu den Benutzererfahrungen sammeln.

  2. Expertenbewertungen: Experten werden gebeten, die Anwendung oder das System zu bewerten und Feedback zu geben. Die Experten haben normalerweise viel Erfahrung im Bereich der Benutzerfreundlichkeit und können wichtige Einblicke in die Verbesserung der Benutzerfreundlichkeit des Systems oder der Anwendung bieten.

  3. A/B-Tests: Bei diesen Tests werden verschiedene Versionen der Anwendung oder des Systems erstellt und den Benutzern vorgelegt. Die Tester beobachten, wie die Benutzer die verschiedenen Versionen verwenden, und sammeln Feedback zu ihren Erfahrungen.

Die Ergebnisse des Benutzbarkeitstests werden verwendet, um sicherzustellen, dass die Anwendung oder das System einfach zu bedienen und intuitiv ist und dass Benutzer ihre Aufgaben schnell und effektiv erledigen können. Durch die Verbesserung der Benutzerfreundlichkeit können Unternehmen die Kundenzufriedenheit erhöhen, die Nutzung erhöhen und das Risiko von Benutzerfehlern verringern.

Portabilitätstest

Der Grad, zu dem eine Komponente oder ein System von einer Hardware, Software oder einer anderen Betriebs- oder Nutzungsumgebung auf eine andere übertragen werden kann.

Ein Portabilitätstest ist ein Software-Test, der sicherstellt, dass eine Anwendung oder ein System auf verschiedenen Plattformen und Umgebungen portabel ist und problemlos von einem System auf ein anderes übertragen werden kann. Das Ziel des Tests ist es, sicherzustellen, dass die Anwendung oder das System auf verschiedenen Plattformen und Umgebungen ohne Leistungseinbußen oder Funktionsverluste ausgeführt werden kann.

Bei einem Portabilitätstest werden verschiedene Aspekte der Anwendung oder des Systems getestet, einschließlich der Datei- und Verzeichnisstruktur, der Kompatibilität mit verschiedenen Betriebssystemen, der Anforderungen an die Hardware, der Abhängigkeiten von anderen Anwendungen oder Systemen und der Handhabung von Konfigurationsdateien.

Einige Beispiele für Portabilitätstests umfassen:

  1. Betriebssystemportabilität: Tests, bei denen die Anwendung oder das System auf verschiedenen Betriebssystemen wie Windows, MacOS, Linux und anderen getestet wird, um sicherzustellen, dass es auf allen Betriebssystemen einwandfrei funktioniert.

  2. Plattformportabilität: Tests, bei denen die Anwendung oder das System auf verschiedenen Plattformen wie Desktop-Computern, Laptops, Tablets oder Mobiltelefonen getestet wird, um sicherzustellen, dass es auf allen relevanten Plattformen korrekt angezeigt und ausgeführt wird.

  3. Datenportabilität: Tests, bei denen die Anwendung oder das System auf die Übertragung von Daten zwischen verschiedenen Systemen und Plattformen getestet wird, um sicherzustellen, dass die Datenintegrität und -sicherheit gewahrt bleiben.

  4. Konfigurationsportabilität: Tests, bei denen die Anwendung oder das System auf die Übertragung von Konfigurationsdateien und -einstellungen zwischen verschiedenen Systemen und Plattformen getestet wird, um sicherzustellen, dass alle Einstellungen korrekt übertragen und ausgeführt werden.

Die Ergebnisse des Portabilitätstests werden verwendet, um sicherzustellen, dass die Anwendung oder das System portabel ist und auf verschiedenen Plattformen und Umgebungen problemlos ausgeführt werden kann. Dies kann Unternehmen helfen, die Anwendung oder das System auf verschiedenen Plattformen und Umgebungen zu nutzen und die Flexibilität und Skalierbarkeit ihrer IT-Infrastruktur zu erhöhen.

Wartbarkeitstest

Der Grad, zu dem eine Komponente oder ein System von den dafür vorgesehenen Personen gewartet werden kann.

Ein Wartbarkeitstest ist ein Software-Test, der die Fähigkeit eines Systems oder einer Anwendung bewertet, Wartungsarbeiten durchzuführen und zu erleichtern. Das Ziel des Tests ist es, sicherzustellen, dass das System oder die Anwendung einfach zu warten, zu aktualisieren und zu reparieren ist, um sicherzustellen, dass es in einem optimalen Zustand gehalten wird.

Bei einem Wartbarkeitstest werden verschiedene Aspekte des Systems oder der Anwendung getestet, einschließlich des Codes, der Architektur und der Design-Entscheidungen, um sicherzustellen, dass Änderungen und Aktualisierungen einfach durchgeführt werden können, ohne das System oder die Anwendung zu beeinträchtigen. Einige Aspekte, die bei einem Wartbarkeitstest bewertet werden können, sind:

  1. Verständlichkeit des Codes: Die Lesbarkeit und Struktur des Codes wird bewertet, um sicherzustellen, dass es einfach zu verstehen und zu warten ist.

  2. Skalierbarkeit: Die Fähigkeit des Systems, mit steigender Benutzerzahl und Datenverarbeitungsmengen umzugehen, wird getestet, um sicherzustellen, dass es zukünftigen Anforderungen standhalten kann.

  3. Modulare Architektur: Die Möglichkeit, Änderungen oder Aktualisierungen auf einzelne Module des Systems oder der Anwendung zu beschränken, wird getestet, um die Möglichkeit von unerwarteten Fehlermeldungen zu reduzieren.

  4. Dokumentation: Die Qualität der Dokumentation für das System oder die Anwendung wird bewertet, um sicherzustellen, dass Wartungsarbeiten effektiv durchgeführt werden können.

  5. Testbarkeit: Die Fähigkeit, Unit-Tests durchzuführen, um Fehler schnell zu identifizieren und zu korrigieren, wird getestet, um die Wartung und Reparatur des Systems oder der Anwendung zu erleichtern.

Die Ergebnisse des Wartbarkeitstests werden verwendet, um sicherzustellen, dass das System oder die Anwendung einfach zu warten und zu aktualisieren ist, um sicherzustellen, dass es in einem optimalen Zustand bleibt. Ein wartungsfreundliches System kann Unternehmen dabei helfen, Wartungskosten zu reduzieren, Ausfallzeiten zu minimieren und die Effizienz des Systems oder der Anwendung zu maximieren.

Quellen