TL; DR. Ein schlechter Test kann schlimmer sein, als gar kein Test.
Ein essentieller Teil der Softwareentwicklung ist das Testen. Dabei hast du verschiedene Testgrößen, die jeweils unterschiedliche Teilbereiche deiner Applikation validieren. Mit dem kleinsten Baustein, den Unittests, überprüfst du ob eine Funktion genau das tut, was du mit ihr beabsichtigst. Mit Integrationstests validierst du, dass abhängige Komponenten noch immer in der Lage sind, zusammen zu agieren und sich korrekt verhalten. Mit end2end-Tests bildest du einen gesamten Workflow ab, der in der Applikation durchlaufen werden kann. Die Anstrengung Tests zu schreiben und zu designen, lernst du erst dann kennen, wenn du es selbst durchlebst. Insbesondere zu Beginn stellst du fest, dass viele Fälle nicht sofort abgedeckt werden können, weil sie dir schlichtweg nicht vorliegen und nicht in den Sinn kommen.
Da Tests äußerst mühsam sind, fallen sie zeitweilig Mal unter den Tisch. Das kann von der Tagesform abhängen, sowie unzureichendem Zeitmanagement auf Planungs- oder Implementierungsseite. Am schlimmsten sind hierbei unzureichende Tests. Du kannst einen Test formulieren, der den generellen und vorgesehenen Fall deiner Funktion prüft, andere Randfälle jedoch weglassen. Dann ist dein Code zwar abgedeckt, aber die Randfälle können weiterhin für Probleme sorgen. Plötzlich veröffentlichst du eine Version deines Produkts, die für alle Nutzer, die in diese Ausnahme fallen, gar nicht oder unzureichend funktioniert. Im Optimalfall hättest du die Randfälle bereits im Test abgedeckt. Die zeitlich ineffiziente Variante wäre zu sehen, dass dieser Teil keine Tests besitzt und du alle Fälle per Hand prüfst. Denn du kannst jegliche falsche Sicherheit eliminieren, wenn du gar keine Sicherheit anstrebst. Dieser Zustand ist nicht empfehlenswert und so solltest du deine Tests mit Vorsicht genießen, sie bedeuten nämlich nicht unbedingt, dass alles optimal in jedem Fall funktioniert, sondern dass Fälle existieren, die automatisch getestet wurden. Das ist ein großer Unterschied!
Vertraust du deinen Tests? Lass es mich wissen!
Song of the day
Favorite part
Life is a bitch with no mouth and no lips butIt sure ain’t no fun with no teeth and no tongue
cleopatrick – hometown