Unterschied zwischen Integrations- und Regressionstests?
Ich verstehe, dass beide Testarten einen anderen Fokus haben:
- Integrationstest: Interagieren die einzelnen Komponenten der Applikation korrekt miteinander?
- Regressionstest: Funktioniert die Applikation nach einem Change noch wie gewohnt?
Was ich allerdings nicht verstehe ist der Unterschied im Testablauf. Wenn ich nach einem Change einen Integrationstest starte, prüfe ich doch genau das was ich für den Regressiontest beschrieben habe. Macht das den Regressionstest damit nicht redundant? Ich vermute, dass mit meiner Prämisse vielleicht etwas nicht ganz richtig ist.
1 Antwort
Integrationstests umfassen entweder Komponenten einer Applikation oder, im Fall von verteilten Systemen, Subsysteme (z.B. Microservices) einer Applikation.
Regressionstests werden genutzt, um auszuschließen, dass eine Änderung (z.B. ein neues Feature oder ein Bugfix) eine insgesamte Verschlechterung der Funktionalität bewirkt. Konkret werden Regressionstests oft genutzt, um sicherzustellen, dass ein bestimmtes, bereits behobenes Problem durch eine zukünftige Code-Änderung nicht wieder eingeführt wird.
Deine Annahme, dass durch Integrationstests auch Regressionstests ausgeführt werden können, ist nicht falsch. Allerdings wäre es falsch anzunehmen, dass das immer so ist.
Integrationstests stellen oft auf einem sehr hohen Level das Zusammenspiel der Softwarekomponenten sicher. Für diese grobe Überprüfung reichen oft wenige Testfälle mit sehr begrenzt variablen Inputdaten aus.
Es ist aber durchaus möglich und üblich, dass ein Regressionstest durch einen Integrationstest realisiert wird, z.B. wenn in der Vergangenheit ein Fehler im Zusammenspiel der Komponenten aufgetreten ist.
Im Fall von Microservices kann zum Beispiel ein versehentlich aus der API des Services entferntes Feld für Probleme sorgen, was dann durch einen neu geschaffenen Integrationstest zwischen den Services, der gleichzeitig Regressionstest ist, verhindert wird.