Etwas, worüber oft gesprochen wird, vielleicht vor allem im Zusammenhang mit Testautomatisierung, sind Unit- und Integrationstests. Aber was bedeuten diese Tests in der Praxis und wie werden sie verwendet? Das erfahren Sie in diesem Blogbeitrag!
Unit-Tests – testen die kleinsten Einheiten
Unit-Tests testen die kleinsten Einheiten einer Anwendung, damit wir wissen, dass sie wie vorgesehen funktionieren. Diese Tests beziehen sich stark auf die tatsächliche Implementierung, anstatt zu überprüfen, ob ein System aus betrieblicher Sicht wie vorgesehen funktioniert. Bei der testgetriebenen Entwicklung werden Unit-Tests verwendet, um zu definieren, wie eine Einheit formuliert werden soll, und um bestimmte Eingabeparameter und Ausgabebedingungen zu überprüfen, um korrekte Ergebnisse zu erzielen. Anstatt zuerst Produktionscode und dann Unit-Tests zu schreiben, werden zuerst Unit-Tests geschrieben, die natürlich weder funktionieren noch korrekte Ergebnisse liefern. Aus dieser Situation heraus kann der Produktionscode wachsen, indem das erstellt wird, was für den Erfolg des Unit-Tests erforderlich ist. Unit-Tests sollten als wichtige Ergänzung während der Entwicklung angesehen werden und nicht als eine Art Test, der ausreicht, um die richtige Qualität zu überprüfen.
Integrationstests – testen, ob alle Einheiten zusammenarbeiten
Integrationstests testen, ob alle Einheiten einer Anwendung zusammenarbeiten. Bei diesen Tests kann die Anwendung von außen aufgerufen werden, wie sie vom Benutzer oder anderen Systemen verwendet werden soll. Das heißt, sie sind nicht in der gleichen Weise mit der Lösung verbunden wie Unit-Tests und müssen daher nicht in gleichem Maße beeinflusst und die Lösung beispielsweise umgestaltet werden. Integrationstests eignen sich perfekt für Regressionstests und können erstellt werden, um Fehler so früh wie möglich zu finden. Die Testbarkeit der Anwendung für diese Tests hervorzuheben, ist eine Voraussetzung. Wie authentifiziert man sich gegenüber einer Anwendung, die einem Integrationstest unterzogen werden soll, und wie sieht es mit der Anwendungskonfiguration aus, wenn der Dienst lokal auf einem Arbeitscomputer getestet werden soll?
Lassen Sie uns eine einfache Analogie ziehen:
Ein internes Gerät in einer Anwendung kann mit einem Teil unter der Motorhaube Ihres Autos verglichen werden, beispielsweise dem Keilriemen. Um die Qualität des Keilriemens sicherzustellen, wird dieser separat getestet, wobei Dinge wie Festigkeit, Lebensdauer und Reibung im Material überprüft werden. Für den Fahrer ist es jedoch nicht wichtig, dass sich ein Keilriemen im Auto befindet, sondern dass das Auto robust ist und daher eine funktionierende Kühlung des Motors benötigt. Würde der Autohersteller eine völlig neue Methode zur Kühlung des Motors entwickeln, wären die internen Tests zum Testen der Keilriemen nutzlos, aber die Tests des Autos blieben aus Sicht des Fahrers unverändert. Man könnte dieselben fahrerbasierten Tests verwenden, um zu beurteilen, ob das Auto mit der aktualisierten Kühlung genauso gut oder besser fährt.
Dieselbe Technik trotz unterschiedlicher Testzwecke
Auch wenn der Zweck von Unit- und Integrationstests unterschiedlich ist, können sie oft mit denselben Techniken erstellt werden. Von Natur aus müssen Unit-Tests in derselben Programmiersprache wie der getestete Code geschrieben werden, um möglichst effektiv zu sein. Dies hilft uns, Kompilierungsfehler aufgrund von Updates zu finden und so schnell wie möglich Feedback zu geben. Diese Tests haben selten oder wenige Abhängigkeiten zur Infrastruktur und sind daher frei von Herausforderungen in Bezug auf Testumgebungen, Testdaten und Abhängigkeiten zu anderen Systemen. Etwas, das Unit-Tests zum zuverlässigsten Testtyp macht.
Durch die Verwendung der richtigen Tools können Sie in vielen Fällen dieselben guten Vorteile für Integrationstests erzielen. Sie benötigen Voraussetzungen, um die Anwendung von außen und durch aufzurufen, wobei die richtige Client-Unterstützung und Mocking-Technologie verwendet werden müssen. Es ist auch üblich, dass Sie die gesamte Anwendung wie vorgesehen ausführen müssen, um auf den gesamten Tech-Stack zuzugreifen.
Zusammenfassung
Unit-Tests und Integrationstests sind zwei wichtige Voraussetzungen für die Entwicklung von Software mit der richtigen Qualität. Zusammen bilden sie die frühesten automatischen Tests, die absolute Voraussetzungen dafür sind, neue Software in kurzer Zeit mit hoher Frequenz ausliefern zu können. Durch die Wahl des richtigen Tools gewinnen Sie ein hohes Maß an Vertrauen in diese Tests. Sie bieten Unterstützung für neue Entwicklungen und ein berechtigtes Qualitätsgefühl für Änderungen.