Was ist dynamisches Testen? Typen, Techniken und Beispiele

⚡ Intelligente Zusammenfassung

Dynamische Tests führen die Anwendung aus und beobachten, wie sich der laufende Code bei realen Eingaben verhält, sodass Tester Funktionalität, Leistung und Stabilität überprüfen können, was durch eine gründliche Dokumentenprüfung nicht möglich ist.

  • 🎯 Zweck: Überprüfen Sie das tatsächliche Laufzeitverhalten, nicht die Dokumente, die es beschreiben.
  • 🔀 Zwei Zweige: Die White-Box-Methode untersucht den Code, die Black-Box-Methode das Verhalten.
  • 🧱 Vier Ebenen: Unit-, Integrations-, System- und Akzeptanztests führen alle Code aus.
  • ⚙️ Nicht funktionsfähig: Hier werden Leistungs-, Wiederherstellungs-, Kompatibilitäts-, Sicherheits- und Benutzerfreundlichkeitsprüfungen durchgeführt.
  • 🔄 Verarbeiten: Strategie, Testdesign, Einrichtung der Testumgebung, Durchführung und Fehlerberichterstattung.
  • 💰 Abtausch: Eine tiefere Fehlererkennung geht einher mit einem höheren Zeitaufwand, einer stärkeren Umweltbelastung und höheren Kosten.

Arten, Techniken und Beispiele für dynamisches Testen

Was ist dynamisches Testen?

Dynamisches Testen Dynamisches Testen ist eine Softwaretestmethode, die das dynamische Verhalten von Softwarecode prüft. Hauptzweck des dynamischen Testens ist die Untersuchung des Softwareverhaltens mit dynamischen Variablen – also Variablen, die nicht konstant sind – und das Aufspüren von Schwachstellen in der Laufzeitumgebung. Der Code muss ausgeführt werden, um das dynamische Verhalten zu testen.

Testen ist Verifizierung und ValidierungBeide Testverfahren sind notwendig, um ein vollständiges Testergebnis zu erzielen. Die Verifizierung erfolgt durch statisches Testen, bei dem Anforderungen, Designdokumente und Code überprüft werden, ohne sie auszuführen. Die Validierung erfolgt durch dynamisches Testen, bei dem der Build ausgeführt und das tatsächliche Verhalten der Anwendung mit dem Soll-Verhalten verglichen wird.

Die folgende Tabelle verdeutlicht die Unterschiede auf einen Blick.

Aspekt Statische Prüfung (Verifizierung) Dynamisches Testen (Validierung)
Code ausgeführt Nein Ja
Typische Tätigkeiten RevBesichtigungen, Begehungen, Inspektionen, statische Analysen Testfallausführung auf allen Testebenen
Frage beantwortet Bauen wir das Produkt richtig? Bauen wir das richtige Produkt?
Defekte gefunden Unklare Anforderungen, Verstöße gegen Programmierrichtlinien, toter Code Falsche Ausgabe, Speicherlecks, Timingfehler, Integrationsfehler
Beginnt Sobald ein Artefakt existiert Sobald ein ausführbarer Build existiert
Relative Kosten einer Reparatur Niedriger, weil Fehler früher erkannt werden Höher, da Defekte später zutage treten.

Beispiel für dynamische Tests

Ein kurzes Beispiel veranschaulicht das Verhalten dynamischer Tests in der Praxis.

Angenommen, eine Anmeldeseite wird getestet. Sie hat zwei Felder, Benutzername und Passwort, wobei der Benutzername auf alphanumerische Zeichen beschränkt ist.

Wenn der Benutzer den Benutzernamen als „Guru99“ wird vom System akzeptiert. Wenn der Benutzer „GuruBei der Eingabe von "99@123" gibt die Anwendung eine Fehlermeldung aus. Dieses Ergebnis zeigt, dass der Code dynamisch auf Basis der Benutzereingaben agiert.

Dynamisches Testen bedeutet daher, mit dem tatsächlichen System zu arbeiten, eine Eingabe zu machen und das tatsächliche Verhalten der Anwendung mit dem erwarteten Verhalten zu vergleichen – mit anderen Worten, mit dem Ziel zu arbeiten, Fehler zu finden.

Dynamisches Testen ist daher der Prozess der Validierung einer Softwareanwendung aus der Perspektive eines Endbenutzers unter verschiedenen Umgebungen, um die richtige Software zu erstellen.

Was bewirkt dynamisches Testen?

Das Hauptziel dynamischer Tests ist es, die einwandfreie Funktion der Software während und nach der Installation sicherzustellen und eine stabile Anwendung ohne größere Fehler zu liefern. Keine Software ist völlig fehlerfrei, und Tests können zwar das Vorhandensein von Fehlern aufzeigen, aber niemals deren Beseitigung.

Dynamische Tests gewährleisten zudem die Konsistenz der gesamten Software, wie dieses Beispiel zeigt.

Eine Banking-Anwendung enthält mehrere Bildschirme, wie zum Beispiel „Meine Konten“, „Geldtransfer“ und Bill Bezahlen. Alle enthalten ein Betragsfeld.

Angenommen, im Feld „Meine Konten“ wird der Betrag 25,000 angezeigt, bei der Geldüberweisung wird ebenfalls 25,000 US-Dollar angezeigt und die Bill Auf dem Bezahlbildschirm wird 25000 $ angezeigt. Der Betrag stimmt, aber die Art der Anzeige ist unterschiedlich, was zu Inkonsistenzen in der Software führt.

Konsistenz beschränkt sich nicht auf die Funktionalität. Sie umfasst auch Standards wie Leistung, Benutzerfreundlichkeit und Kompatibilität, weshalb dynamisches Testen so wichtig ist.

Arten dynamischer Tests

Dynamisches Testen wird in zwei Kategorien unterteilt.

  • Weiß Box Tests
  • Schwarz Box Tests

Das folgende Diagramm ordnet die beiden Kategorien den darunterliegenden Testebenen zu.

Dynamisches Testen wird in White-Box- und Black-Box-Tests mit funktionalen und nicht-funktionalen Ebenen unterteilt.

Die einzelnen Typen und ihre jeweiligen Verwendungszwecke werden im Folgenden beschrieben.

Weiß Box Tests Eine Softwaretestmethode, bei der die interne Struktur und das Design dem Tester bekannt sind. Ihr Hauptziel ist die Überprüfung der Systemleistung anhand des Codes. Sie wird hauptsächlich von Entwicklern oder White-Box-Testern mit Programmierkenntnissen durchgeführt.

Schwarz Box Tests Eine Testmethode, bei der die interne Struktur, der Code und das Design dem Tester nicht bekannt sind. Ihr Hauptziel ist die Überprüfung der Funktionalität des zu testenden Systems. Diese Art des Testens erfordert die Ausführung der gesamten Testsuite, wird hauptsächlich von Testern durchgeführt und setzt keine Programmierkenntnisse voraus.

Die Black-Box-Tests werden wiederum in zwei Typen unterteilt.

  • Funktionsprüfung
  • Nichtfunktionale Prüfung

Funktionsprüfung

Funktionsprüfung wird durchgeführt, um zu überprüfen, ob alle entwickelten Funktionen den funktionalen Spezifikationen entsprechen. Dies geschieht durch Ausführen des funktionalen Tests. Testfälle Verfasst vom QA-Team. In dieser Phase wird das System getestet, indem Eingaben vorgenommen, die Ausgaben überprüft und die tatsächlichen Ergebnisse mit den erwarteten Ergebnissen verglichen werden.

Es gibt verschiedene Stufen des Funktionstests, von denen die vier folgenden die wichtigsten sind.

  • Unit Tests Eine Unit ist ein kleines, testbares Codefragment. Unit-Tests werden an einzelnen Softwareeinheiten durchgeführt und von Entwicklern durchgeführt.
  • Integrationstests — wird nach dem Unit-Test durchgeführt, indem die einzelnen testbaren Einheiten kombiniert werden. Dies geschieht entweder durch Entwickler oder durch Tester.
  • Systemtest Dieser Test wird durchgeführt, um sicherzustellen, dass das System den Anforderungen entspricht. Er wird in der Regel von Testern durchgeführt, sobald das vollständige System fertiggestellt und der Build an das QA-Team freigegeben wurde.
  • Abnahmetests Diese Überprüfung dient dazu, festzustellen, ob das System die Geschäftsanforderungen erfüllt und einsatzbereit ist. Sie wird in der Regel von den Endbenutzern durchgeführt.

Nichtfunktionale Prüfung

Nicht funktionales Testen Nichtfunktionale Tests sind eine Testmethode, die sich nicht auf funktionale Aspekte konzentriert, sondern auf nichtfunktionale Eigenschaften des Systems, wie z. B. Speicherlecks, Leistung oder Robustheit. Sie werden auf allen Testebenen durchgeführt.

Es gibt viele nicht-funktionale Testverfahren, von denen die fünf folgenden die wichtigsten sind.

  • Performance Testing — prüft, ob die Reaktionszeit des Systems unter der gewünschten Netzwerklast den Anforderungen entsprechend normal ist.
  • Wiederherstellungstests — überprüft, wie gut sich ein System von Abstürzen und Hardwareausfällen erholt.
  • Kompatibilitätstests — überprüft, wie sich das System in verschiedenen Umgebungen verhält.
  • Sicherheitstests — überprüft die Robustheit der Anwendung und stellt sicher, dass nur autorisierte Benutzer und Rollen Zugriff auf das System haben.
  • Benutzer-Tests — überprüft die Benutzerfreundlichkeit des Systems durch die Endbenutzer und wie wohl sich diese Benutzer damit fühlen.

Dynamische Testtechniken

Nachdem die Testtypen festgelegt sind, stellt sich die nächste Frage: Wie wird ein dynamischer Testzyklus konkret durchgeführt?

Dynamische Testverfahren in der STLC Der dynamische Testprozess umfasst Aufgaben wie die Anforderungsanalyse für die Tests, die Testplanung, die Erstellung und Implementierung von Testfällen, die Einrichtung der Testumgebung, die Testfallausführung, die Fehlerberichterstattung und schließlich den Testabschluss. Jede Aufgabe im dynamischen Testprozess ist von der erfolgreichen Durchführung der vorherigen Aufgabe abhängig.

Innerhalb des Softwaretestlebenszyklus (STLC) beginnt der eigentliche dynamische Testprozess mit der Testfallentwicklung. Das folgende Diagramm zeigt die Abfolge der Aktivitäten, die jeweils im Anschluss beschrieben werden.

Dynamischer Testprozessablauf von der Testplanung über die Testdurchführung bis zur Fehlerberichterstattung

Vor Beginn des Prozesses muss die Strategie für das dynamische Testen vereinbart werden.

Eine Teststrategie sollte sich primär an den verfügbaren Ressourcen und dem Zeitrahmen orientieren. Auf Grundlage dieser beiden Faktoren müssen das Testziel, der Testumfang, die Testphasen bzw. -zyklen, die Art der Testumgebung, die Annahmen und möglichen Herausforderungen sowie die Risiken dokumentiert werden.

Sobald die Strategie definiert und von der Geschäftsleitung akzeptiert ist, beginnt der eigentliche Testfall-Designprozess.

Testdesign und -durchführung

In dieser Phase identifiziert das Team Folgendes.

  • Zu testende Funktionen
  • Aus diesen Merkmalen abgeleitete Testbedingungen
  • Aus den Testbedingungen abgeleitete Abdeckungselemente
  • Aus den Abdeckungselementen abgeleitete Testfälle

Flugschreiber Testdesigntechniken wie etwa Äquivalenzzerlegung, Randwertanalyse, Testen der Entscheidungstabelle und Zustandsübergangstests sind das, was eine Testbedingung in eine konkrete Menge ausführbarer Fälle umwandelt.

Einrichtung der Testumgebung

Das Test Umgebung Die Testumgebung sollte stets der Produktionsumgebung ähneln. In dieser Phase wird der Build installiert und die Testmaschinen werden verwaltet und konfiguriert.

Testausführung

In dieser Phase werden die Testfälle tatsächlich ausgeführt, entweder manuell oder durch AutomatisierungDie tatsächlichen Ergebnisse werden den erwarteten Ergebnissen gegenübergestellt.

Fehlerbericht erfasst

Wenn die erwarteten und die tatsächlichen Ergebnisse des Tests nicht übereinstimmen, muss der Testfall als fehlgeschlagen markiert und ein Fehlerbericht erstellt werden. Mängelmanagement

Vorteile des dynamischen Testens

  • Dynamische Tests decken Fehler auf, die als zu schwierig oder zu kompliziert gelten, um sie zu erkennen, und die durch statische Analysen überhaupt nicht erfasst werden können.
  • Die Software wird vollständig ausgeführt, was die Qualität sowohl des Produkts als auch des Projekts erhöht.
  • Dynamische Tests sind ein unerlässliches Mittel, um Sicherheitsbedrohungen in einem laufenden System zu erkennen.
  • Nur zur Laufzeit auftretende Fehler wie Speicherlecks, Timing-Probleme und Integrationsfehler treten hier und nirgendwo sonst auf.

Nachteile dynamischer Tests

  • Dynamische Tests sind zeitaufwändig, da die Ausführung der Anwendung oder des Codes eine große Menge an Ressourcen erfordert.
  • Dadurch steigen die Projektkosten, da das Projekt nicht frühzeitig im Softwarelebenszyklus angesetzt wird und die Behebung von Problemen in späteren Phasen teurer ist.
  • Eine produktionsnahe Umgebung und realistische Testdaten sind Voraussetzungen, deren Aufbau und Pflege jeweils Aufwand erfordern.

Häufig gestellte Fragen

Die Entwickler sind für die White-Box-Seite zuständig und führen Unit- und Komponententests durch. Die QA-Tester hingegen verantworten die Black-Box-Seite, von den Systemtests an. Die Endnutzer schließen den Zyklus mit den Abnahmetests ab.

Die Modelle lesen Anforderungen und bestehende Fälle und schlagen dann die Grenzwerte, ungültigen Eingaben und Zustandssequenzen vor, die ein menschlicher Tester üblicherweise überspringt. Ein Tester bestätigt dennoch jedes erwartete Ergebnis vor der Ausführung.

Ja. Assertionsgerüste, Seitenobjekte und Fixture-Setups sind wiederkehrender Code, den ein Assistent gut verarbeiten kann. Die Entscheidung, was korrektes Verhalten darstellt, bleibt eine menschliche Beurteilung, die auf den Anforderungen basiert.

Organisationsstrukturen wie z.B. JUnit, TestNG und pytest sowie UI- und API-Runner wie Selenium, Cypress und PostmanLaden Sie Tools wie z. B. JMeter die nicht-funktionale Seite abdecken Automatisierung.

White-Box-Testberichte liefern Informationen zur Testabdeckung (Branch und Pfad) aus instrumentierten Testläufen. Black-Box-Testberichte beschreiben die Anforderungen und die Testbedingungsabdeckung. Keiner der beiden Werte allein beweist jedoch, dass der Build ausreichend getestet wurde.

Nein. Dynamisches Testen beschreibt die Ausführung des Codes, unabhängig davon, wer oder was ihn ausführt. Ein skriptgesteuertes Testen manuell Sowohl ein Lauf als auch eine automatisierte Regressionssuite sind dynamische Testverfahren.

Ja. Dynamische Anwendungssicherheitstests untersuchen eine laufende Anwendung von außen, genau wie eine Blackbox. Sicherheitstests tut dies und meldet Schwachstellen, die erst zur Laufzeit auftreten.

Es ist das Rückgrat von einem. Unit- und API-Suites kontrollieren jeden Commit, während längere Regression und Performance-Tests werden jede Nacht gegen einen bereitgestellten Build ausgeführt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: