Durchblick im Test-Dschungel: Unterschiede zwischen Unit-, Integration- und Funktionstesting
Kommentare

Gerade als Einsteiger in die Welt des JavaScript-Testings fühlt man sich von den Unmengen an verschiedenen Test-Methoden oft regelrecht erschlagen. Dazu kommt, dass viele dieser Buzzwords wie Funktionstests, E2E-Tests und Browsertests faktisch auch die gleiche Testmethode beschreiben können – den Überblick über die unterschiedlichen Methoden und ihre jeweilige Funktion zu behalten, wird dadurch gleich nochmal erschwert.

Jani Hartikainen erklärt, wo die Unterschiede zwischen Unit Testing, Integration Testing und Funktionstesting liegen und zeigt, welche Methode wann am besten eingesetzt werden sollte.

Unit Testing: das Rückgrat der Testing-Umgebung

Im Dschungel der verschiedenen Testing-Methoden und -Prozesse wie Test-Driven-Development und Behavior-Driven-Development den Durchblick zu behalten, kann vor allem für Einsteiger in das Schreiben von Tests eine Herausforderung sein. Zu den bekanntesten Testing-Methoden zählen Unit Tests.

Damit werden kleine Code-Teile wie zum Beispiel individuelle Funktionen getestet, wobei diese Art von Tests besonders einfach zu schreiben sind. Als Faustregel gilt: werden externe Ressourcen wie Netzwerke und Datenbanken getestet, handelt es sich nicht um einen Unit Test. Idealerweise werden Unit Tests kontinuierlich durchgeführt, einerseits um Bugs zu vermeiden, andererseits um das eigene Code-Design zu verbessern und sicherzustellen, dass Code später auch wiederverwendet werden kann.

Unit Tests, so erklärt Hartikainen, sind das Rückgrat der Testing-Umgebung und lassen sich leicht in Kombination mit anderen Test-Methoden und -Prozessen verwenden – insbesondere zum Beispiel mit Test-Driven-Development.

Integration Testing – eine Erweiterung der Unit Tests

Integration Tests helfen dabei, zu überprüfen, ob und wie verschiedene Teile eines Systems zusammenarbeiten, was besonders dann nützlich ist, wenn einfache Unit Tests nicht ausreichen. Dadurch wird der Testumgebung allerdings einige Komplexität hinzugefügt, wodurch Integration Tests meist länger dauern und oft auch schwieriger zu schreiben und zu maintainen sind.

Grundsätzlich sollte man sich daher lieber auf die Durchführung von Unit Tests konzentrieren und Integration Tests nur dann anwenden, wenn zwei separate Systeme zusammen getestet werden sollen.

User-Aktionen mit Funktionstests überprüfen

Egal, ob man von Funktionstests, E2E-Testing oder Browser-Testing spricht: sie meinen effektiv alle die gleiche Testmethode. Damit lassen sich vor allem vollständige Funktionalitäten einiger Applikationen testen, indem mithilfe von Tools wie Selenium ein Browser automatisiert und User-Aktionen überprüft werden.

Während beim Testen einer Website durchaus hunderte Unit Tests durchgeführt werden, sollte man nur möglichst wenige Funktionstests durchführen und auch keine einzelnen Funktionen testen. Zum einen sind sie durch ihre großen Komplexität oft schwierig zu schreiben und zu maintainen; zum anderen dauert ihre Ausführung zum Teil sehr lange, weil reale User-Interaktionen simuliert werden, sodass auch die Seitenladezeit negativ beeinflusst wird.

Beim Testen von JavaScript-Code sollte der Fokus darum vor allem auf der Durchführung von Unit Tests liegen und Integration- und Funktionstests nur dann angewandt werden, wenn Unit Tests nicht geeignet sind. So kann man eine möglichst unkomplizierte Testumgebung einrichten und die bestmöglichen Testergebnisse erzielen, ohne dabei unabsichtlich in einem Maintaining-Albtraum zu landen.

Aufmacherbild: An Image of Test von Shutterstock / Urheberrecht: KPG_Payless

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -