Unit-Tests / Test driven development … ein kurzer Blick in den Alltag

Hier mal ein kurzer Einblick in den täglichen Arbeitsalltag.

Dieser belegt, wieso Testing auch bei trivialen Aufgaben nicht vernachlässigt werden sollte.

Die Aufgabenstellung war recht einfach:
Ein Programm (geschrieben in C/C++) sollte seine Versionsnummer ausgeben, wenn der Benutzer als einzigen Parameter „–version“ mitgibt.

Der Positiv-Test stellte recht schnell sicher, dass die Aufgabenstellung erfüllt war:

program.exe –version
lieferte

program Version 1.2.0.2345

Soweit, so schön, das Programm beendete sich danach auch wie eigentlich sinnvoll. Dummerweise stand das schon so nicht in der Anforderung – ein Fehler von demjenigen, der die Anforderung geschrieben hatte – gut, dass der Entwickler mitgedacht hatte!

Auf Negativ-Tests wurde zunächst verzichtet.
Wie hätten diese aussehen können?

  • Aufruf des Programms ohne Parameter
  • Aufruf des Programms mit einem anderen Parameter
  • Aufruf des Programms mit mehr als einem Parameter

Das Resultat?

  • Dummerweise beendete sich das Programm nun auch, wenn der falsche Parameter übergeben wurde.
  • Nachdem dieser Fehler behoben wurde, stellte sich heraus, dass die Applikation aufgrund einer Speicherzugriffsverletzung abstürzte, und zwar regelmäßig bei jedem Aufruf.

Da die Software so vom gesamten Team nicht weiter getestet werden konnte, wurde die Änderung schnell wieder zurückgezogen.

Was lernt man aus dieser Geschichte?

  • auch die kleinste Änderung sollte man sich zu zweit anschauen, oder zumindest im Abstand von einigen Stunden noch einmal mit unverstelltem Blick
  • Test-driven-development – also die Arbeitsweise, zunächst Unit-Tests zu entwickeln, und diese dann zu erfüllen, ist hilfreich.
  • Negativ-Tests sind nicht „lästig“ oder „unnütz“, sondern das Salz in der Suppe.

Ich wünsche allen Entwickler-Kollegen ein schönes – bugfreies Wochenende!

Softwarefehler in kritischen Umgebungen vermeiden durch Systemtests

Es gibt Situationen, in denen Softwarefehler lebensgefährlich werden können.

Dies zeigte sich in den vergangenen Tagen, als in den USA ein Sicherheitsleck in einem Herzschrittmacher bekannt wurde.

Dieser Vorfall ist jedoch nicht das erste Mal binnen eines guten Jahres, in dem intelligente Implantante in den Focus der Entwickler gerieten. Auf dem 32. Chaos Communication Congress Ende 2015 hatte eine Sicherheitsexpertin, die selbst einen Herzschrittmacher trägt, auf das Problem hingewiesen, wie auch auf der Seite heise.de des Computermagazins c’t zu lesen war.

Dies sind nur zwei Beispiele, in denen deutlich wird, welche Relevanz Softwarefehler heutzutage für das menschliche Leben haben können.

Systemtests nicht vernachlässigen!

Dennoch ist auch bei weniger kritischen Produkten ein umfassender Systemtest nicht zu vernachlässigen. Denn zusätzlich zu der lebensgefährlichen Situation, in die ein Softwarefehler einen Anwender bringen kann, kommen hier häufig die hohen Kosten für ein Update, ja teilweise die Unmöglichkeit, die Software zu aktualisieren.

Insofern ist auch beim Softwaretest Expertenwissen erforderlich. Wenn dieses jedoch nicht im Hause vorhanden ist, da die Software nur einen kleinen Anteil am Gesamtprodukt hat, bietet sich der Kontakt zu externen Dienstleistern an. Wir unterstützen wir Sie gern, z.B. beim Erstellen eines Testplans und bei der Ausführung der Tests. Auch bei der Entwicklung eines kompletten Entwicklungsprozesses stehen wir gern beratend zur Seite.

Sprechen Sie uns an, z.B. per Email über contact@qa4software.de

Testing durch 4-Augen-Prinzip

Warum muss eine Software durch spezialisierte Tester geprüft werden?

Warum kann man den Systemtest nicht durch den Entwickler vornehmen lassen?

Gerade jetzt, nach der Weihnachtszeit drängt sich der Vergleich mit einem mehrgängigen Menü auf:

Sie haben eine Vorspeise, eine Hauptspeise und einen Nachtisch für Gäste ausgesucht. Sie versuchen sich an Rezepten, die neu sind, denn Sie wollen die Gäste ja überraschen.

Wenn im Rezept steht, dass Sie mit „reichlich Dill“ abschmecken sollen, wieviel ist dann „reichlich“. Oder der „Schuss Rotwein“ – wieviel ist das? Wenn Sie schon häufiger gekocht haben, werden Sie diese Frage beantworten können mit „Das habe ich im Gefühl“.

Sie brauchen niemanden neben sich, der Ihnen sagt, ob die Suppe die richtige Konsistenz hat, oder die Kartoffeln gar sind.

Aber bei der „Zubereitung von Software“? Haben Sie da auch alles im „Gefühl“?

Gerade wenn es um die Frage geht, ob die Anforderungen des Kunden auch so umgesetzt wurden, wie er es sich wünschte, kann eine zweite Meinung die Chance erhöhen, auf Anhieb den Kundenwunsch komplett umzusetzen.

Wenn es nicht um eine Neuentwicklung geht, sondern um eine Softwareerweiterung, sind Sie als Entwickler vielleicht so sehr auf die neuen Funktionen konzentriert, dass Sie alte Funktionalität übersehen und dann versehentlich zerstören oder entfernen.

Dies macht deutlich, wie wichtig ein detaillierter Testplan und ein unabhängiger Tester sind. Wir bieten Ihnen an der Stelle gern unsere Erfahrung und unsere Werkzeuge, um Testpläne zu erstellen und zu pflegen. Diese Testpläne können dann regelmäßig durchgeführt werden, und das Produkt so auf gleichbleibende Qualität geprüft werden.

Wenn Sie Interesse oder weitere Fragen haben, erreichen Sie uns unter contact@augmenvis.de und besuchen Sie uns auf http://www.qa4software.de/