Als Softwaretester und Automatisierungsingenieure denken wir oft an den Happy Path: den Weg, den der Benutzer höchstwahrscheinlich einschlägt, wenn er unsere Anwendung nutzt. Wenn wir unsere automatisierten UI-Tests schreiben, möchten wir sicherstellen, dass wir eben diese Happy Paths automatisieren, und beim Schreiben der API-Automatisierung wollen wir überprüfen, dass jeder Endpunkt eine „200 OK“ oder eine ähnlich erfolgreiche Antwort zurückgibt.
Doch es ist wichtig, beim manuellen wie auch beim automatisierten Testen auch an Negative Tests zu denken. Hier sind einige Gründe dafür.
Unsere automatisierten Tests könnten aus den falschen Gründen bestehen
Als ich anfing, automatisierte UI-Tests in JavaScript zu schreiben, verstand ich das Konzept des Promise nicht. Ich ging einfach davon aus, dass mein Befehl zum Auffinden eines Elements so lange warten würde, bis es wirklich gefunden ist. Ich war begeistert, als meine Tests das grüne „Bestanden“-Ergebnis anzeigten, bis ein Kollege mir vorschlug, den Test absichtlich fehlschlagen zu lassen, indem ich auf einen anderen Wert prüfe. Aber der Test bestand trotzdem, weil eigentlich nur gegen das Promise, das immer „True“ zurückgab, geprüft wurde. Daraus lernte ich eine wichtige Lektion: Gehe niemals davon aus, dass deine automatisierten Tests korrekt funktionieren, nur weil sie bestehen. Führe unbedingt auch Szenarien aus, in denen die Tests eigentlich fehlschlagen sollten – und stelle sicher, dass sie es tun. So kannst du sicher sein, dass du tatsächlich das testest, was du zu testen glaubst.
Negatives Testen kann fehlerhafte Fehlerbehandlungen aufdecken, die einen Benutzer beeinträchtigen könnten
Beim API-Testing sollte jeder clientseitige Fehler eine Antwort im 400er-Bereich zur Folge haben und keinen 500er-Serverfehler. Entdeckst du beim Negativ-Testen, dass eine 403-Antwort plötzlich als 500 zurückkommt, bedeutet das möglicherweise, dass dieser Anwendungsfall nicht mehr richtig behandelt wird. Eine 500er-Antwort vom Server kann dazu führen, dass der Nutzer nicht die richtige Information zur Behebung seines Fehlers erhält – oder im schlimmsten Fall stürzt die Anwendung ab.
Negatives Testen kann Sicherheitslücken aufdecken
Ebenso wichtig wie sicherzustellen, dass ein Benutzer sich in eine Anwendung einloggen kann, ist zu überprüfen, dass ein Nutzer sich auch dann nicht einloggen kann, wenn er es nicht darf. Testest du nur das Login mit einem gültigen Benutzernamen und Passwort, übersiehst du diesen wichtigen Bereich! Ich habe schon erlebt, dass man sich mit jedem beliebigen Passwort einloggen konnte, mit einem leeren Passwort Zugriff bekam oder sich sogar mit falschem Benutzernamen und Passwort erfolgreich anmelden konnte.
Es ist auch entscheidend zu prüfen, dass bestimmte Nutzer auf bestimmte Bereiche der Anwendung keinen Zugriff haben. Eine sorgfältig getestete und funktionale Admin-Seite nützt nicht viel, wenn herauskommt, dass jeder beliebige Nutzer darauf zugreifen kann.
Negatives Testen hält deine Datenbank sauber
Wie ich in Kapitel 12 erwähnt habe, hilft es deiner Anwendung, wenn in der Datenbank gute und gültige Daten stehen. Daten, die nicht den Erwartungen entsprechen, können Webseiten zum Absturz bringen, das Laden verhindern oder falsche Darstellungen verursachen. Je mehr Negative Tests du für deine Eingaben machst, desto mehr stellst du sicher, dass nur gute Daten vorhanden sind.
Bei jedem Eingabefeld, das ich testen muss, möchte ich genau wissen, welche Zeichen erlaubt sind. So kann ich zahlreiche Negative Tests durchführen, um sicherzustellen, dass Eingaben mit verbotenen Zeichen abgelehnt werden.
Manchmal nehmen Benutzer den negativen Pfad
Gerade bei einer neuen Funktion, die unter Zeitdruck fertig werden soll, vergisst man leicht, die Pfade zu testen, in denen der Benutzer auf Abbrechen oder Löschen klickt. Aber Nutzer tun das ständig – erinnere dich selbst daran, wie oft du einen Online-Einkauf überlegt und dann den Artikel doch wieder aus dem Warenkorb entfernt hast. Stell dir den Frust vor, wenn das nicht möglich wäre, oder wenn ein Abbrechen-Button ein Formular nicht wie erwartet leert. Die Nutzererfahrung in diesem Bereich ist genauso wichtig wie der Happy Path.
Softwaretests bedeuten, nach unerwarteten Verhaltensweisen zu suchen, damit wir sie finden, bevor ein Nutzer sie entdeckt. Kombinieren wir Negative Tests mit Happy-Path-Tests, stellen wir sicher, dass unsere Benutzer keine unangenehmen Überraschungen erleben.
Wenn du deine Testprozesse weiter optimieren möchtest, solltest du ein erstklassiges Datenbankverwaltungs-Tool in Betracht ziehen, um deine komplexen Datenanforderungen zu bewältigen.
Das Buch „The Complete Software Tester“
Als ich 2009 meine Leidenschaft fürs Softwaretesten entdeckte, wollte ich alles über dieses Thema lernen, fand aber nur sehr wenige Bücher, die mir hätten helfen können. Ich lernte schließlich durch Versuch und Irrtum, das Lesen von Blogartikeln und Gespräche mit meinen Kollegen. Heute gibt es einige hervorragende Bücher über spezielle Testbereiche wie exploratives Testen, agiles Testen oder Testautomatisierung. Aber mir ist kein Buch bekannt, das als vollständiges Nachschlagewerk fürs Testen gedacht ist.
Ich habe The Complete Software Tester geschrieben, weil ich sowohl neuen als auch erfahrenen Testern die Ideen und Werkzeuge an die Hand geben möchte, damit sie so effektiv wie möglich sind. Für schnelle QA-Tipps und weitere Buchempfehlungen abonniere den Newsletter The QA Lead.
Verwandter Beitrag: WAS IST ZEPHYR SCALE?
Verwandte Tool-Liste:
Auch einen Blick wert:
