beCircle Website Logo Desktop

"Grau, teurer Freund,
ist alle Theorie...

...und grün des Lebens gold'ner Baum." Das, was der gute alte Goethe hier in seinem "Faust" beschreibt, könnte man auch auf die Software-Entwicklung beziehen. Denn die ganze Planung, Konstruktion und Umsetzung einer Software muss letztendlich der Realität im Live-Betrieb standhalten. Und damit sie genau das auch macht, sind Software-Tests mit eine der wichtigsten Komponenten in dem Entstehungsprozess.

Testings als Erfolgsgarantie

Softwaretests sind ein entscheidender Teil des Zyklus der Softwareentwicklung. Es ist ein systematischer, iterativer Prozess, um die Qualität des Produkts zu überprüfen und sicherzustellen, dass es den Anforderungen entspricht. Wer die Bedeutung von Softwaretests unterschätzt oder gar Tests auf Grund falsch verstandener Einsparungspotenziale versäumt, läuft in Gefahr letzen Endes im Entwicklungsprozess Zeit zu verlieren und Geld zu verbrennen. Und nicht zuletzt ist eine stabile und fehlerfreie Codebasis der Garant für die Akzeptanz der Nutzer und des Erfolgs des Produkts.



Kurz gesagt:
»Viel hilft viel. Je mehr Sie Ihren Code testen, desto schneller können Sie erkennen, was behoben oder verbessert werden muss, damit der Code ordnungsgemäß funktioniert.«

 


Softwaretests können manuell oder mit Hilfe von Tools durchgeführt werden. Testings werden im Zuge von Continuous Integration & Continuous Delivery eingesetzt.

Manuelles Testen ist zeitaufwändig, teuer und birgt das Risiko menschlicher Fehler. Darüber hinaus ist es kaum skalierbar, da Menschen in einem bestimmten Zeitraum nur eine begrenzte Anzahl manueller Aufgaben erledigen können. Diese Art des Testens sollte möglichst nur dort eingesetzt werden, wo nicht nur Funktion, sondern auch Design und User-Experience eine tragende Rolle spielen. In diesen Fällen sind wir Menschen doch die besseren Tester!

Im Vergleich zum manuellen Testing ist das automatisierte Testen einfach zu skalieren, da Maschinen Tausende von Aufgaben in Sekundenschnelle erledigen. Es ist schnell und kostengünstig, da kein menschliches Eingreifen erforderlich ist - alles was es braucht, ist der Code, der den Test ausführt. Je nach Test-Typus werden die Test-Codes auf Basis von "Drehbüchern/Stories" erstellt. Hierfür ist eine enge Abstimmung zwischen Kunde, Projektleitern und Programmierern erforderlich.
 

Es gibt eine Vielzahl von Tests und Testmethoden. Die gängigsten sind

  • Unit-Tests
  • Integrations-Tests
  • Funktionale Tests
  • Akzeptanztests

Unit-Tests

Unit-Tests werden auf der niedrigsten Abstraktionsebene durchgeführt und testen einzelne Codeeinheiten. Eine Einheit kann eine Funktion, ein Modul, eine Komponente oder eine Klasse sein. Unit-Tests können als Blaupause für den Testprozess angesehen werden und helfen sicherzustellen, dass Änderungen sich fehlerfrei ins System einfügen. Diese kleinsten Test-Einheiten lassen sich schnell und kostengünstig umsetzen.

Integrations-Tests

Integrations-Tests prüfen, ob alle Komponenten wie erwartet zusammenarbeiten. Sie sind also der nächst größere Schritt nach erfolgreich durchlaufenen Unit-Tests.

Funktionale Tests

Ein Funktionstest ist ein automatisierter Test, der verwendet wird, um das Verhalten einer Anwendung oder eines Systems zu validieren. Es ist eine Art Black-Box-Test. Die Idee besteht darin, die Aktionen eines Benutzers zu simulieren und dann zu überprüfen, ob sich die Anwendung wie erwartet verhält.

Akzeptanz-Tests

Akzeptanztests werden von Entwicklern, Projekt-Ownern/Projektmanagern und  mit Input vom Kunden erstellt. Hierbei geht es darum, die Erfüllung aller Anforderung zu validieren. Auch die Akzeptanz-Tests können in verschiedenen Entwicklungsstadien angewendet werden. Oftmals werden diese Tests mit Tools wie z.B. Selenium oder Cucumber automatisiert.

Nehmen wir uns ein Beispiel

Nicht immer sind die Tests scharf voneinander abzutrennen. Zum besseren Verständnis ein kleines Beispiel.

Jemand entscheidet sich, ein Haus zu bauen. Der Bauherr, der Bauleiter und die beauftragten Gewerke würden nicht auf den Gedanken kommen, das Haus erst nach Fertigstellung zu überprüfen! Auch hier wird sukzessive, iterativ "getestet". Ein kleines Beispiel:

  • Der Unit-Test: steht und trägt die Außenwand und gibt Aussparungen für Fenster und die Haustür?
  • Der Integrations-Test: Passt die Haustür in die Öffnung, die der Maurer gelassen hat?
  • Der Funktions-Test: Die Außenmauer hat ein Loch für die Haustür gelassen, die Haustür passt in die Aussparung. ABER: lässt sich die Haustür problemlos öffnen und schließen?
  • Der Akzeptanz-Test: Die Begehung eines fertig gestellten Raumes wie z.B. der Eingangsbereich: Ist der Boden korrekt verlegt, gibt es eine Treppe hinauf in das OG, führen Türen in die anliegenden Räume etc.?

Aber ganz egal welchen Namen man dem Kinde gibt: Hauptsache es wird getestet - iterativ und kontinuierlich.

Da gibt es noch mehr!

Über die oben genannten Tests hinaus gibt es noch eine Vielzahl anderer Tests, wie z.B. End-to-End-Tests oder Smoke-Tests. Auch Last- und Performance-Tests mit dem Zusammenspiel von Servern und Anwendungen müssen im Blick behalten werden.

Und natürlich sind die Tests neben der Überprüfung von Code und Funktionen auch ein "Proof of Concept", ob die Anforderungen richtig verstanden worden sind. Wir schließen mit einem weiteren "Beispiel"

Der Projektmanager zum Programmierer: „Wir haben kein Brot mehr in der Gemeinschaftsküche. Ich habe keine Zeit, es zu besorgen. Bist Du so nett und gehst in der Mittagspause am Kiosk an der Ecke vorbei und bringst eines mit? Ach, und wenn sie Eier haben, bring 6 Stück mit.“
Nach kurzer Zeit kommt der Programmierer wieder zurück und hat 6 Brote dabei.
Der Projektmanager staunt: „Warum hast du denn 6 Brote gekauft?“
Daraufhin der Programmierer: „Sie hatten Eier.“



Kurz gesagt:
»Testen ist kein nice-to-have. Es ist das A und O der Softwarentwicklung.«

 


In diesem Sinne: Testen Sie uns

Wenn Sie Fragen haben oder uns kennenlernen wollen, melden Sie sich einfach - unkompliziert und unverbindlich. Wir sind neugierig, was wir für Sie tun können und ob wir Weggefährten werden.

Der erste Schritt ist immer ein erstes "Hallo". 

Wir freuen uns auf Sie, Ihr beCircle-Team

+49 (0)4105-407073info@becircle.de