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.
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.
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.
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.


