Sobes.tech
Junior

Was ist nicht-funktionales Testen?

sobes.tech KI

Antwort von AI

Nicht-funktionale Tests sind eine Art der Softwareprüfung, die darauf abzielt, die nicht-funktionalen Anforderungen zu überprüfen. Sie bewerten die Eigenschaften des Systems, die nicht direkt mit bestimmten Funktionen verbunden sind, sondern eher damit, "wie" das System funktioniert.

Die Hauptziele nicht-funktionaler Tests:

  • Sicherstellen, dass das System den Erwartungen der Nutzer und des Geschäfts in Bezug auf Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und andere Aspekte entspricht.
  • Probleme erkennen, die die Stabilität, Skalierbarkeit und Sicherheit des Systems beeinträchtigen könnten.
  • Bestätigen, dass das System den festgelegten Standards und Anforderungen entspricht.

Arten nicht-funktionaler Tests:

Testtyp Kurze Beschreibung Beispiele für überprüfte Eigenschaften
Leistungstests Bewertung der Geschwindigkeit, Reaktionsfähigkeit, Stabilität und Skalierbarkeit des Systems unter Last. Antwortzeit, Bandbreite, CPU-/Speicherauslastung.
Lasttests Überprüfung des Verhaltens des Systems bei erwarteter Spitzenauslastung. Anzahl gleichzeitiger Nutzer, Transaktionen pro Sekunde.
Stresstests Überprüfung des Verhaltens des Systems bei Überschreitung der erwarteten Spitzenauslastung oder Ressourcenknappheit. Systemausfallpunkt, Verhalten bei Überlastung.
Stabilitätstests (Endurance Testing) Überprüfung der Fähigkeit des Systems, längere Zeit unter Last kontinuierlich zu arbeiten. Speicherlecks, Leistungsverschlechterung im Laufe der Zeit.
Sicherheitstests Überprüfung des Schutzes des Systems vor externen und internen Bedrohungen, unbefugtem Zugriff. Schutz vor SQL-Injektionen, XSS-Angriffe, Authentifizierung, Autorisierung.
Usability-Tests Bestimmung, wie einfach und intuitiv das System für Benutzer ist. Verständliche Schnittstelle, einfache Navigation, Zugänglichkeit.
Kompatibilitätstests Überprüfung der Funktionalität des Systems in verschiedenen Umgebungen (Browser, Betriebssysteme, Geräte). Unterstützung verschiedener Browser-Versionen, Betriebssysteme.
Zuverlässigkeitstests Bewertung der Fähigkeit des Systems, seine Funktionen ohne Fehler über einen bestimmten Zeitraum auszuführen. Mittlere Zeit bis zum Ausfall (MTBF), Ausfallwahrscheinlichkeit.
Barrierefreiheitstests Überprüfung der Benutzerfreundlichkeit für Menschen mit Behinderungen. Einhaltung der WCAG-Standards.
Lokalisierungs-/Internationalisierungstests Überprüfung der Anpassung des Systems an verschiedene Sprachen und regionale Einstellungen. Übersetzte Zeichenketten, Datums-/Zahlenformate.

Nicht-funktionale Tests werden in der Regel in früheren Phasen des Softwareentwicklungszyklus durchgeführt als funktionale Tests, aber ihre Planung beginnt mit der Anforderungserhebung. Sie können Teil automatisierter Prozesse sein, insbesondere bei Leistungstests und Sicherheitstests.

Tools für nicht-funktionale Tests:

  • Leistung: JMeter, LoadRunner, Gatling, k6.
  • Sicherheit: OWASP ZAP, Burp Suite, Acunetix.
  • Kompatibilität: BrowserStack, Sauce Labs.
  • Benutzerfreundlichkeit: UserTesting.com, Eye-Tracking-Tools.

Ein Beispiel für die Automatisierung eines Teils der nicht-funktionalen Tests könnte ein Skript sein, das die Ladezeit einer Seite überprüft:

import time
import requests

def measure_page_load_time(url):
    """
    Misst die Ladezeit der angegebenen URL.
    """
    start_time = time.time()
    try:
        response = requests.get(url)
        response.raise_for_status()  # Wirft HTTPError bei schlechten Antworten (4xx oder 5xx)
        end_time = time.time()
        load_time = end_time - start_time
        print(f"Ladezeit {url}: {load_time:.2f} Sekunden")
        return load_time
    except requests.exceptions.RequestException as e:
        print(f"Fehler beim Laden von {url}: {e}")
        return None

# Beispiel für die Verwendung
url_to_test = "https://www.example.com"
measure_page_load_time(url_to_test)

Die Ergebnisse nicht-funktionaler Tests werden häufig in Form von Berichten, Diagrammen und Metriken präsentiert, die es ermöglichen, die Eigenschaften des Systems zu bewerten und Entscheidungen über notwendige Verbesserungen zu treffen.