Was ist ein Negativtest? Testfälle mit Beispiel

⚡ Intelligente Zusammenfassung

Negativtests prüfen, wie sich eine Softwareanwendung verhält, wenn sie unerwartete Eingabedaten oder Betriebsbedingungen empfängt, sodass das Produkt sich an die Regeln hält, anstatt abzustürzen, Daten zu beschädigen oder eine Sicherheitslücke aufzudecken.

  • ???? Zweck: Bestätigen Sie, dass die Anwendung ungültige Daten sauber zurückweist, anstatt abzustürzen oder einen Fehler auszulösen.
  • Kontrast: Ein positives Testergebnis beweist den positiven Weg; ein negatives Testergebnis untersucht alles, was außerhalb dieses Weges liegt.
  • 🛗 Analogie: Ein Aufzug muss nicht nur normale Fahrgastfahrten, sondern auch Überlastung, Feuer und Stromausfall standhalten.
  • 🔒 Sicherheit: Ungültige Uploads und SQL-Injection-Versuche sind klassische Negativtestszenarien.
  • 🧪 Design: Grenzwerte, Äquivalenzklassen, Fehlerraten und Fuzzing generieren die Fälle.
  • 📊 Priorität: Ungültige Eingaben sollten nach ihrer Auswirkung geordnet werden, da eine vollständige negative Abdeckung nicht finanzierbar ist.
  • ⚠️ Abtausch: Zu viele negative Testergebnisse verbrauchen Budget, das möglicherweise dringender für positive Testergebnisse benötigt wird.

Negatives Testen in Softwaretests mit Beispielen für ungültige Eingaben

Negativtest

Negativtest Negativtests sind eine Art Softwaretest, der eine Softwareanwendung auf unerwartete Eingabedaten und Bedingungen prüft. Unerwartete Daten oder Bedingungen reichen von einem falschen Datentyp in einem einfachen Formularfeld bis hin zu einem gezielten Hackerangriff. Ziel von Negativtests ist es, Abstürze der Anwendung aufgrund ungültiger Eingaben zu verhindern und die Qualität und Stabilität des Produkts zu verbessern.

Ein positiver Test beweist lediglich, dass das System unter normalen Bedingungen funktioniert. Ein negativer Test bestätigt, dass dasselbe System auch unter anormalen Bedingungen funktioniert – eine Voraussetzung für ein fehlertolerantes Produkt.

Beispiel für einen negativen Test

Ein Aufzug wird am häufigsten als Beispiel verwendet, um negative Tests zu erklären, da sich sowohl sein normales Verhalten als auch sein Fehlerverhalten leicht vorstellen lassen.

Die Funktionsweise eines Aufzugs ist bekannt: Durch Drücken einer Stockwerksnummer fährt der Aufzug in das entsprechende Stockwerk, und die Tür öffnet sich automatisch, sobald der Aufzug das angegebene Stockwerk erreicht hat.

Nachfolgend sind einige negative Szenarien für denselben Lift aufgeführt, neben der Annahme, die durch positive Tests getroffen wird.

Negativtest Positive Tests
Was passiert, wenn die Personenzahl (Gewicht) die angegebene Grenze überschreitet? Es wird davon ausgegangen, dass nur die angegebene Anzahl von Personen den Aufzug benutzen wird.
Was passiert, wenn jemand im Aufzug raucht oder einen Brand verursacht? Es wird davon ausgegangen, dass es im Aufzug weder zu Rauch noch zu Feuer kommt.
Was passiert, wenn während des Betriebs der Strom ausfällt? Es wird davon ausgegangen, dass es während des Betriebs des Aufzugs zu keinem Stromausfall kommt.

Alle diese Fälle fallen bei negativen Tests negativ aus. Da nicht ausgeschlossen werden kann, dass sie jemals auftreten, muss jeder einzelne Fall eingedämmt werden.

Angenommen, der Überlastungszustand wird nie überprüft und der Aufzug verhält sich bei Überlastung abnormal. Diese kleine Lücke beeinträchtigt die Zuverlässigkeit des Systems und kann sogar Menschenleben gefährden. Genau das bedeutet ein Negativtest in der Praxis und warum er so wichtig ist.

Software verhält sich genauso. Ein negativer Test weicht bewusst vom normalen Arbeitsablauf ab. Man denke beispielsweise an ein Anmeldeformular.

Negativtest Positive Tests
Geben Sie im E-Mail-Feld eine ungültige E-Mail-Adresse ein. Im E-Mail-Feld werden nur gültige E-Mail-Adressen eingegeben.
Geben Sie eine ungültige Telefonnummer, z. B. Zeichen, in ein Telefonnummernfeld ein. Im Zahlenfeld werden nur Zahlen eingegeben.
Laden Sie ein Bild hoch, dessen Größe außerhalb der angegebenen Grenze liegt. Es werden nur Bilder innerhalb der angegebenen Größenbeschränkungen hochgeladen.
Laden Sie ungültige Dateien hoch, wie zum Beispiel XML or SQL Dateien in einem Bild-Upload-Feld Es werden nur gültige Bildformate wie .jpg oder .png hochgeladen.

In jedem dieser negativen Fälle muss das System weiterhin funktionieren. Wird ein Zeichen in ein Zahlenfeld eingegeben, kann die Anwendung die unerwarteten Daten nicht verarbeiten und stürzt möglicherweise ab. Schlimmer noch: SQL-Injection Eine Zeichenkette im selben Feld könnte den Inhalt der Datenbank löschen. Solche Datenverluste sind der Grund für die Existenz von Negativtests.

Warum negative Tests durchführen?

Tests kosten Zeit und Geld, daher ist die Entscheidung, was, wie und wie umfangreich getestet werden soll, von entscheidender Bedeutung. Die Argumentation für die Verwendung eines Teils des Budgets für Negativtests sieht aus der Perspektive der beiden Projektbeteiligten unterschiedlich aus.

Organisationsperspektive

Die Bereitstellung eines qualitativ hochwertigen Produkts für den Kunden liegt in der Verantwortung des Unternehmens, und negative Tests sind Teil dieser Verpflichtung. Sie dienen dem Unternehmen auch als Nachweis dafür, dass es alle zumutbaren Maßnahmen ergriffen hat, um einen Fehler zu verhindern, auch wenn kein System völlig fehlerfrei ist.

Die Auswirkungen sind der entscheidende Faktor. Eine E-Commerce-Website kann alle positiven Tests bestehen und dennoch eine Sicherheitslücke aufweisen, die es einem Angreifer ermöglicht, eine SQL-Injection durchzuführen und die dahinterliegenden Daten zu löschen. Dies stellt eine schwerwiegende Sicherheitslücke dar, die nur durch negative Tests aufgedeckt werden kann.

Öffentlich zugängliche Anwendungen, insbesondere Websites, bieten kaum Kontrolle darüber, wie Besucher sie nutzen. Daher ist Negativtests die einzige Möglichkeit, sicherzustellen, dass ungewöhnliche Nutzungsmuster abgedeckt und unterbunden werden. Dasselbe gilt für böswillige Nutzer: Angreifer suchen aktiv nach Gelegenheiten, ein System zu kompromittieren, und Hacking-Szenarien gehören unbedingt in den Bereich der Negativtests.

Kundenperspektive

Kunden erwarten ein Produkt ohne jegliche Sicherheitslücken, und Negativtests unterstützen diese Erwartung. Bei sensiblen Produkten wie E-Commerce oder Online-Aktienhandel, Sicherheitstests Negative Testergebnisse sind obligatorisch und nicht optional.

Die einzige wirkliche Sorge des Kunden sind die Kosten. Sobald die Auswirkungen eines Fehlers analysiert sind, kann der Kunde entscheiden, wie weit die Negativtests gehen sollen.

Wie man einen negativen Test durchführt

Negativtests beginnen damit, alle Eingaben zu berücksichtigen, die die Anwendung physisch empfangen kann, nicht nur die, die sie empfangen soll. Jede dieser Eingaben gehört in einen Testfall Selbst wenn die Verwendung der Funktion offensichtlich falsch ist. Ein E-Mail-Feld wird mit allen ungültigen E-Mail-Adressen getestet, und ein Bild-Upload-Steuerelement wird mit allen Dateitypen außer Bildern getestet.

Die Liste möglicher ungültiger Eingaben ist praktisch endlos, daher müssen negative Testfälle priorisiert werden. Bei einem Bildfeld, das nur .png-Dateien akzeptiert, gehören zu den möglichen Upload-Formaten .jpeg, .xml, .xls und viele andere. Eine XML- oder SQL-Datei hat ein deutlich höheres Risiko als eine .jpeg-Datei, daher werden diese Fälle zuerst ausgeführt. Die Priorisierung der Fälle nach ihrer potenziellen Auswirkung vor der Ausführung hält die negativen Testfälle kostengünstig.

Die meisten negativen Testfälle basieren auf einer kleinen Auswahl etablierter Designtechniken und nicht auf Improvisation:

  • Grenzwerte: Probieren Sie die Werte unmittelbar außerhalb eines gültigen Bereichs aus, z. B. 0 und 101 für ein Feld, das Werte von 1 bis 100 akzeptiert.
  • Ungültige Äquivalenzklassen: Wähle aus jeder Klasse abgelehnter Eingaben einen Vertreter aus, zum Beispiel Buchstaben in einem numerischen Feld.
  • Fehlervorhersage: Die Erfahrungen mit früheren Fehlern nutzen, um die Eingaben zu identifizieren, die am ehesten zu Problemen mit dieser Art von Funktion führen.
  • Fehlerhafte und unbrauchbare Daten: Skript-Tags, SQL-Fragmente und übergroße Nutzdaten, die Validierungs- und Sicherheitsbehandlungsmechanismen untersuchen.
  • Fuzz-Tests: Automatische Generierung großer Mengen zufälliger oder veränderter Eingaben zur Auffindung unbehandelter Abstürze.
  • Unterbrochene Abläufe: Eine Transaktion abbrechen, aktualisieren, eine Zeitüberschreitung erleiden oder die Verbindung währenddessen verlieren.

Unabhängig davon, mit welcher Technik der Fehler auftritt, muss das erwartete Ergebnis als kontrollierter, lesbarer Fehler – eine Validierungsmeldung, ein abgelehnter Upload, ein sauberer Rollback – und niemals einfach als „das System stürzt nicht ab“ dokumentiert werden.

Vor- und Nachteile eines negativen Testergebnisses

Wie jede andere Testmethode hat auch der Negativtest Vor- und Nachteile, die davon abhängen, wo, wann und in welchem ​​Umfang er angewendet wird.

Vorteile von Negativtests

  • Es schützt die Produktqualität direkt, denn ein qualitativ hochwertiges Produkt ist eines ohne ausnutzbare Sicherheitslücken.
  • Es erweitert die Testabdeckung. Ungültige Eingaben gelangen absichtlich oder versehentlich in ein laufendes System, daher müssen negative Fälle neben positiven Fällen ausgeführt werden, damit die Testabdeckung aussagekräftig ist.
  • Es steigert das Vertrauen der Kunden vor der Veröffentlichung eines Produkts.
  • Es deckt Mängel auf, die durch positive Tests strukturell nicht erfasst werden können, wie etwa unbehandelte Ausnahmen und eine schwache Eingabevalidierung.

Nachteile von Negativtests

  • In manchen Situationen ist es reine Zeit- und Energieverschwendung. Wenn eine Anwendung für einen einzelnen Benutzer entwickelt wurde, lohnt es sich nicht, den Fall von 100 gleichzeitigen Benutzern zu testen. Daher ist die Wahl der richtigen Bedingungen entscheidend, und manche Systeme benötigen kaum Negativtests.
  • Für die Entwicklung der Gehäuse sind qualifizierte und erfahrene Fachkräfte erforderlich.
  • Aus Kundensicht entstehen dadurch zusätzliche Kosten und es kann zu Verzögerungen bei der Veröffentlichung kommen.
  • Es konkurriert um Ressourcen. Ein Team, das viel Geld für Negativtests ausgibt, investiert möglicherweise zu wenig in Positivtests.

Häufig gestellte Fragen

Ein positiver Test liefert gültige Daten und bestätigt das erwartete Ergebnis. Ein negativer Test liefert ungültige Daten, falsche Formate und fehlerhafte Sequenzen und bestätigt, dass die Anwendung diese mit einer entsprechenden Fehlermeldung ablehnt, anstatt einen Fehler auszulösen.

Leere Anmeldeinformationen, ein gültiger Benutzer mit einem falschen Passwort, SQL-Fragmente im Benutzernamen, zu lange Zeichenketten, führende oder nachfolgende Leerzeichen, deaktivierte Konten und wiederholte fehlgeschlagene Versuche, die Funktionsfähigkeit des Sperrvorgangs zu bestätigen.

Nein. Es gibt zwar Überschneidungen bei ungültigen oder schädlichen Eingaben, aber Sicherheitstests umfassen auch Authentifizierung, Autorisierung, Verschlüsselung und Sitzungsverwaltung. Negativtests sind eine umfassendere Methode, die Eingaben und Bedingungen berücksichtigt.

Die Tester und QA-Ingenieure schreiben sie in der Regel, wobei oft ein Entwickler die Fehlerpfade überprüft und ein Business-Analyst bestätigt, welche ungültigen Bedingungen die Anforderungen tatsächlich verbieten.

Ausreichend, um jede abgelehnte Eingabeklasse, jede Grenze und jeden schwerwiegenden Fehlerpfad abzudecken. Darüber hinaus bringen zusätzliche Fälle kaum Mehrwert, daher bestimmen Risiko und Auswirkung den Abbruchpunkt.ping Punkt.

Ja. Fälle mit ungültiger Eingabe treten sehr häufig auf, daher eignen sie sich dafür. Automatisierungstests und Regressionstests. Fuzzing-Tools automatisieren die Generierung von Zufallseingaben, während Assertions überprüfen, ob Validierungsmeldungen angezeigt werden.

Die Modelle lesen Anforderungen oder ein Formularschema und schlagen ungültige Werte, Randbedingungen und fehlerhafte Zeichenketten vor, die ein Tester möglicherweise nicht manuell auflistet. Ein Prüfer bestätigt dennoch, dass jedes erwartete Ergebnis der Spezifikation entspricht.

Ja, es generiert Assertionscode, Fixtures für ungültige Daten und parametrisierte Fälle aus einer bestehenden Testdatei. Die generierten Erwartungen müssen überprüft werden, da eine plausibel erscheinende Assertion das falsche Verhalten kodieren kann.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: