E2E TestsIntegration TestsUnit TestsTestingSoftwareentwicklung

So wird Software getestet – diese Methoden gibt es

04.07.2021

So wird Software getestet – diese Methoden gibt es

In der Software- und Webentwicklung ist es meistens unerlässlich, die entwickelte Software hinterher auch zu testen. Neben dem manuellen „Testen“ durch menschliche Testpersonen geht es dabei hauptsächlich um automatisierte Tests, die nach speziellen Verfahren entwickelt werden.

Wenn Sie Fragen zu diesem Beitrag haben oder eine individuelle Webentwicklung beauftragen möchten, sprechen Sie uns an! Die Erstberatung ist selbstverständlich kostenlos.

Kontakt aufnehmen »

Automatisiertes Testen 

Bei dem automatisierten Testen von Software und Webanwendungen geht es in der Regel darum, Abläufe, Prozesse oder Funktionen einmalig durch einen Testablauf nach zu bilden und dann regelmäßig automatisch auszuführen, z.B. nach jeder Änderung am Programmcode. So kann sichergestellt werden, dass einzelne Funktionen auch nach einer Änderung im Code noch funktionieren. Prinzipiell können aber auch Softwaretests – genauso wie manuelle, händische Tests – nie eine vollständige Fehlerfreiheit des Systems sicherstellen, da sie nur genau den Fall und den Abschnitt abdecken, für welchen sie gebaut wurden.

Verschieden Methoden in der Entwicklung

In der Entwicklung spricht man von verschiedenen Testarten, von welchen wir Ihnen einige heute kurz näher vorstellen wollen.

 

Unit Tests

Eine der bekanntesten und häufigsten Testmethoden sind die sogenannten Unit Tests, zu Deutsch auch Modultests. Hierbei wird ein Abschnitt einer Anwendung isoliert & gezielt getestet. Es geht dabei nur um den Test eines einzelnen Abschnitts und einer einzelnen Komponente. Das vollständige Testen eines Kontaktfomulars würde daher nicht darunterfallen, jedoch z.B. das Schreiben eines einzelnen Formularinhalts in ein Objekt, jedoch nicht darüber hinaus. Werden Funktionen aus verschiedenen Komponenten benötigt, werden diese i.d.R. durch Dummy-Objekte nachgebildet.

 

Integration Tests

Will man mehrere Komponenten miteinander Testen (z.B. das Empfangen der Daten aus dem Kontaktformular und das Versenden), spricht man von sogenannten Integrationstests. Diese können genutzt werden um die Kommunikation zwischen einzelnen Bestandteilen der Anwendung sicherzustellen.

 

Functional Tests

Bei Functional Tests werden einzelnen Funktionsanforderungen komplett von Anfang (Input) bis zum Ende (Output) getestet. Also z.B. das Empfangen der Daten aus dem Kontaktformular, schreiben in die Datenbank und versenden von Emails. Hier ist jedoch wieder zu berücksichtigen, dass wir nach wie vor vom Testen des Programmcodes sprechen. Wichtig: Es wird an dieser Stelle immer noch kein „echter“ Test auf einem „echten“ Webserver durchgeführt.

 

E2E Tests - End To End

Das vollständige Testen einer Funktion wird mit End To End Tests erreicht.

Diese sind jedoch aufwändiger zu entwickeln und kosten zudem viel Ausführungszeit. Der Browser wird so programmiert, dass er vom Testprogramm gesteuert wird, gewisse Aktionen auszuführen. Hierbei wird ein kompletter Test, samt Klicks, Formulareingaben, Login usw. simuliert und das Ausgabeergebnis geprüft.

 

Vor- und Nachteile

Jede der vorgestellten Methoden hat gewisse Vor- und Nachteile, dies ich häufig in dem Aufwand der Entwicklung und Ausführung ausdrücken. Deshalb spricht man hier auch von der sog. Testpyramide. Ganz unten – wenig Aufwand und hohe Automatisierbarkeit – stehen die Unit Tests. Ganz oben – großer Aufwand, lange Laufzeit und schwierige Automatisierbarkeit – stehen die E2E Tests.

Wichtig ist es, zu verstehen, dass Tests immer nur ein ganz spezielles Testszenario abdecken können, und zwar das, wofür sie programmiert wurden. Je granularer man jedoch auch schon kleine, belanglose Funktionen mit Unit Tests abdeckt, desto höher kann die Gesamtqualität des Grundsystems werden.

Es gibt natürlich auch noch weitere Testmethoden, die hier nicht vorgestellt wurden. 

Realität

In der Praxis sehen leider viele Auftraggeber nicht, wie wertvoll die Entwicklung von Tests wirklich ist. Häufig wird hierfür kein oder wenig Budget eingeplant und dieses lieber in „mehr Funktionen“ gesteckt. Für eine gute Software ist das Entwickeln von Tests allerdings unerlässlich. Zugleich muss man allerdings auch sagen, dass die Entwicklung aufwändig und teuer sein kann. Es empfiehlt sich daher, zumindest einige Testmethoden für kritische Funktionen zu implementieren.

Über den Autor
Author

Christoph Heike

Christoph Heike ist Geschäftsführer der Webzeile GmbH und programmiert bereits seit seinem 12. Lebensjahr. Aktuell beschäftigen ihn Technologien wie PHP, Symfony, VueJS, React uvm.


Fragen? Projekt geplant? Nehmen Sie gleich mit uns Kontakt auf.

Lernen Sie unsere Digitalagentur und Internetagentur kennen. Vereinbaren Sie ein kostenloses Erstgespräch.