Software-Testing: In 4 Schritten zum besseren Software-Entwickler
Software Testing: Warum soll getestet werden?
Welcher Entwickler kennt das nicht? Insbesondere wenn die Applikation – egal ob Web-, Client-, Mobile- oder Serversoftware – größer, komplexer und umfangreicher wird, sind fortlaufende Tests unumgänglich. Mögliche Fehler können durch geschicktes Software-Testing vermieden werden und eine schnellere Fehlersuche wird durch die Implementierung von Tests unterstützt. Daher sollte parallel zur Softwareentwicklung auch an das Testen gedacht werden. Wir zeigen euch welche Tests ihr beachten solltet.
Auch der Kunde soll beim Softwareentwickler hinterfragen, mit welchem Vorgehen dieser die eigene Software testet. Folgende Fragen unterstützen Kunde und Softwareentwickler dabei, das Vorgehen zu hinterfragen:
- Werden kontinuierliche Tests durchgeführt?
- Testet der Entwickler erst vor der Übergabe?
- Gibt es eigene Tester im Unternehmen?
Software Testing: Wo soll ich anfangen zu Testen?
Jeder stellt sich zu Beginn die Frage, wo begonnen werden soll, erste Tests in die Arbeit zu integrieren. Es gibt unterschiedliche Ansätze, die jeder für sich selbst ausprobieren muss. Ein gemeinsamer Nenner wäre eine erste Analyse, welche Teile des Sourcecodes oder der gesamten Software sich für einen ersten Test-Anlauf gut eignen würden. Einfache Überprüfungen von Variablen oder Ergebnissen von Methodenaufrufen sollten leicht zu bewältigen sein.
In vier Schritten wird ein mögliches Vorgehen erklärt, wie eine Software durchgängig getestet werden kann. Dabei beginnt das Testen bereits bei den einzelnen Komponenten des Sourcecodes und endet eigentlich erst bei der Übergabe der Software an den Kunden.
Software Testing in vier aufbauenden Testkategorien
Beim Testen von Software beziehungsweise Sourcecode können vier grundlegende Testkategorien unterschieden werden: Unit-Test, Integrationstest, Systemtest und Abnahmetest. Diese Kategorien sind systematisch aufgebaut und sollten auch dementsprechend durchgängig in der Softwareentwicklung angewendet werden.
Software-Testing: Unit-Test
Unser Weg beginnt mit dem ersten Schritt, nämlich dem Unit-Test beziehungsweise dem Komponententest. Dabei werden kleinere Bestandteile, sogenannte „Units“, des Sourcecode beziehungsweise Module einer Software getestet. Der Entwickler schreibt für seinen eigenen Sourcecode Testmethoden, um diese einzelnen Units zu testen. Ihr testet somit die Funktionalität in bestimmten Teilen der Software, zumeist aber einzelner Methoden.
Vorteile:
- detailliertes Testen einzelner Kompenten möglich
- schnelle Fehlersuche bei Weiterentwicklungen/Änderungen im Sourcecode
- schnelle Überprüfungen während der Entwicklung
- gute Trennung von Sourcecode und Test-Code
- Wiederverwendbarkeit von Tests, um das Testen zu vereinfachen
- überlegteres Vorgehen beim Entwickeln
Software Testing: Teste die Schnittstellen deiner Software
Nach umfangreichen Unit-Tests geht es auf unserem Weg zu einer höheren Softwarequalität weiter mit den Integrationstests. Im Vergleich zum Unit-Test wird hierbei nicht mehr die einzelne Komponente getestet, sondern die Abhängigkeit zwischen einzelnen Komponenten. Schnittstellen und Ergebnisse kompletter Abläufe bilden den Testschwerpunkt und sollen die Zusammenarbeit zwischen den beteiligten Komponenten testen. Somit können auch Fehler bei der Übergabe von Werten oder eventuelle Denkfehler beim Prozessablauf aufgedeckt werden.
Vorteile:
- Abhängigkeiten können getestet werden
- definierte Abläufe können „durchgespielt“ werden
- Zusammenspiel zwischen einzelnen Komponenten wird geprüft
- Teamkommunikation verbessert sich durch das Testen
Software Testing: Sind alle Funktionen integriert?
In der nächsten (Test)stufe der professionellen Softwareentwicklung, nach Unit- und Integrationstests, folgt der Systemtest. Diese Teststufe des Software-Testing überprüft die Software auf alle Anforderungen (zum Beispiel aus dem Pflichtenheft). In einer definierten Testumgebung wird der Systemtest durchgeführt, um alle funktionalen und nicht-funktionalen Anforderungen zu prüfen. Dabei bestimmen Funktionale Anforderungen die konkreten Funktionen beziehungsweise die Aufgaben einer Software, wobei nicht-funktionale Anforderungen zum Beispiel Zuverlässigkeit, Benutzerfreundlichkeit oder Wartbarkeit sein können. Nicht-funktionale Anforderungen sind schwerer zu prüfen als funktionale Anforderungen.
Die ausgewählte Testumgebung stimmt im Normalfall mit der Produktivumgebung des Kunden überein und findet noch immer in der Softwareschmiede statt.
Vorteile:
- gute Vorbereitung zur Abnahme der Software
- dokumentiert die Funktionalität der Software nach bestimmten Vorgaben
Software Testing: Abnahmetest & Übergabe beim Kunden
Schlussendlich testet der Kunde selbst die gelieferte Software. Zumeist findet dieser Test intuitiv statt, da ein Großteil der Kunden vor Bezahlung der Rechnung die Software durchtesten wollen. Damit möchte der Kunde sichergehen, dass auch das geliefert wurde, was er bestellt hat.
In dieser Teststufe überprüft der Kunde bereits die Software (meistens) mit Echtdaten des eigenen Unternehmens. Hier ist zu sagen, das auch bei den bisherigen Tests möglichst mit Echtdaten oder zumindest – in der Idealvorstellung – sehr realistischen Daten getestet werden sollte.
Vorteile:
- erfolgreicher Abschluss ist gleichzeitig eine rechtswirksame Übernahme der Software
- sofern alle zuvor beschriebenen Testphasen positiv absolviert wurden, wird auch dieser Test positiv durchlaufen
Fazit
Ja, das Testen bedeutet einen Mehraufwand in der Softwareentwicklung, aber gleichzeitig ist das Testing ein Qualitätssicherungsprozess der eigenen Arbeit. Denn: damit können Fehler in der Entwicklung sichtbar gemacht, beziehungsweise Fehler in der Weiterentwicklung durch Änderungen oder neue Funktionen vermieden werden. Testing sollte nicht als ein notwendiges Übel betrachtet werden, sondern als ein Instrument zur Qualitätssicherung der Implementierung.
Zusammenfassend kann gesagt werden: Testen ist ein Werkzeug der Softwareentwicklung, das in jedem Werkzeugkasten des Entwicklers vorhanden sein sollte.
Habt ihr eure eigenen Beiträge vergessen? ;) Es ist sogar haargenau das gleiche Bild :D
https://t3n.de/news/stock-images-motive-518156/
Haha, genau das wollte ich auch schreiben.
„Der Klassiker: Die eingefärbte Tastatur“
Ihr habt einen der wichtigsten Punkte des professionellen software Testens vergessen: software Tests beginnen so für wie möglich und nicht erst mit dem Code, sondern mit der Spezifikation, denn 80% der Kosten können in den ersten 20% des Projektes eingespart werden. Denn je genauer die abnahmekriterien bestimmt sind, desto genauer weiß der Entwickler, worauf es ankommt.
Meiner Erfahrung nach entstehen die meisten Fehler durch missverstandene oder missinterpretierte Anforderungen.
ich stimme dir zu, dass die Spezifikationen auch wichtiger Bestandteil der Softwareentwicklung sind, da sie zum Testen dazugehören.
Auf deinen Input bin ich bereits etwas im Artikel zu Lastenheft / Pflichtenheft eingegangen. Hast du dir diesen Artikel schon durchgelesen?
Das Themengebiet welches Oli anspricht ist eher dem Requirements Engineering zuzuordnen. In diesem Eintrag geht es ja vorrangig um das Testen zur Laufzeit des Projektes nach der Konzeptphase.