Beim inkrementellen Testen von Software handelt es sich um eine Methodik, die es den Teams ermöglicht, einzelne Module aufzuschlüsseln, sie isoliert zu testen und schrittweise zu integrieren. Es hilft, Fehler frühzeitig zu finden, reduziert die Komplexität und erhöht die Testabdeckung.
In diesem Artikel werden wir uns eingehend mit dem inkrementellen Testen befassen, erklären, was es ist, und die verschiedenen Arten, Prozesse, Ansätze, Tools und mehr untersuchen, die mit dieser nützlichen Methodik verbunden sind.
Was sind inkrementelle Tests?
Das Testen ist eine der wichtigsten Phasen im Lebenszyklus der Softwareentwicklung (SDLC). Genau wie der SDLC ist das Testen in verschiedene logische Schritte unterteilt. Inkrementelle Tests sind eine dieser Phasen, die typischerweise während
Integrationsprüfung
und direkt nach
Unit-Tests
.
Inkrementelle Prüfung ist ein pragmatischer Ansatz für das Testen von Software, bei dem große oder komplexe Programme in überschaubare, mundgerechte Stücke zerlegt werden. Anstatt ein ganzes Softwaresystem auf einmal zu integrieren und zu testen, werden beim inkrementellen Testen Module betrachtet und ein schrittweiser Verifizierungsprozess implementiert.
Softwaremodule sind in der Regel in sich geschlossene Codeeinheiten, die bestimmte Aufgaben oder Funktionen ausführen. Wie granular diese Module sind, hängt von verschiedenen Faktoren ab, z. B. von den Codierungspraktiken, den Entwicklungsmethoden oder sogar von der verwendeten Programmiersprache.
Die Module werden bei den Einheitstests unabhängig voneinander getestet. Bei den Integrationstests wird dann jedes Modul Stück für Stück – oder schrittweise – integriert. Dadurch wird sichergestellt, dass die einzelnen Module gut zusammenarbeiten. Um jedoch jedes Modul vollständig zu überprüfen, müssen die Tester noch zu implementierende Komponenten oder externe Systeme simulieren. Dazu benötigen sie die Hilfe von Stubs und Treibern.
Was sind Stubs und Treiber bei inkrementellen Tests?
Stubs und Treiber sind wichtige Softwaretestwerkzeuge. Diese temporären Codestücke werden bei Integrationstests verwendet, da sie den Teams die Möglichkeit bieten, das Verhalten und die Schnittstellen verschiedener Module oder Komponenten zu imitieren.
1. Stümpfe:
Stubs imitieren Module, die noch nicht entwickelt wurden und daher nicht für Tests zur Verfügung stehen. Sie ermöglichen es dem zu prüfenden Modul (MUT), unvollständige Module aufzurufen. Das Ergebnis ist, dass der MUT isoliert getestet werden kann, auch wenn keine verwandten Module verfügbar sind.
2. Treiber:
Treiber hingegen simulieren das Verhalten von Modulen, die den MUT aufrufen. Innerhalb der Testumgebung können diese Treiber die MUT-Testdaten senden. Auch dies erleichtert das Testen von Modulen in Isolation ohne externe Abhängigkeiten.
Die Verwendung von Stubs oder Treibern reduziert die Entwicklungszeit, verbessert die Codequalität und erhöht die Produktivität des Teams. Die Entscheidung darüber, welche Methode verwendet werden soll, hängt jedoch davon ab, welche Testmethode am besten geeignet ist. Wir werden dies in einem Abschnitt weiter unten erläutern, der sich mit den verschiedenen Arten von inkrementellen Integrationstests befasst.
Verschiedene Arten von inkrementellen
Integrationsprüfung
Inkrementelle Tests lassen sich grob in drei Kategorien einteilen. Schauen wir uns jede einzelne davon an.
1. Inkrementelle Integration von oben nach unten
Die inkrementelle Top-Down-Integration beginnt mit dem Testen der höchstrangigen Module innerhalb eines Systems. Von dort aus werden nach und nach die Module niedrigerer Ordnung integriert und getestet.Es gibt zwei Hauptszenarien, in denen die inkrementelle Top-Down-Integration eingesetzt wird. Sie sind:
- Wenn ein System sehr groß oder hochkomplex ist
- Wenn das Entwicklungsteam an vielen Modulen gleichzeitig arbeitet.
Schritte für schrittweise Top-down-Integrationen
- Identifizieren Sie kritische Module
- Erstellen von Stichleitungen zur Nachahmung von Modulen niedrigerer Ordnung
- Entwicklung von Treibern, die mit den übergeordneten Modulen interagieren, um ihnen Daten zu senden und die Ausgaben der Module zu interpretieren
- Unit-Test kritischer Module mit Treibern und Stubs
- Integration von Modulen niedrigerer Ordnung und schrittweiser Ersatz von Stubs durch echte Implementierungen
- Umstrukturierung der Treiber zur Anpassung an die neuen Module
- Wiederholen Sie diesen Vorgang, bis alle untergeordneten Module integriert und getestet sind.
2. Inkrementelle Integration von unten nach oben
Inkrementelle Bottom-up-Integrationen gehen in die entgegengesetzte Richtung. Bei diesem Ansatz werden die weniger kritischen (oder am wenigsten kritischen) Module des Systems getestet, während die höherwertigen Module nach und nach hinzugefügt werden. Dieser Ansatz eignet sich für verschiedene Szenarien, wie zum Beispiel:
- Wenn Sie mit kleineren Systemen arbeiten
- Wenn ein System modularisiert ist
- Wenn Sie Bedenken hinsichtlich der Genauigkeit oder Vollständigkeit von Stubs haben.
Schritte für inkrementelle Bottom-up-Integrationen
- Identifizierung von Modulen niedrigerer Ordnung
- Unit-Test untergeordneter Module zur Überprüfung ihrer individuellen Funktionalität
- Entwicklung von Treibern, die als Vermittler zu Modulen niedrigerer Ordnung fungieren
- Stubs erstellen, um das Verhalten von Modulen höherer Ordnung zu simulieren
- Integrieren Sie die nächsten Module, von niedrigerer zu höherer Ordnung, und ersetzen Sie nach und nach Stubs durch echte Implementierungen
- Umstrukturierung der Treiber zur Anpassung an die neuen Module
- Wiederholen Sie diesen Vorgang, bis alle übergeordneten Module integriert und getestet sind.
3. Funktionale schrittweise Integration
Funktionsinkrementelle Integrationstests sind die nächste gängige Art von inkrementellen Tests beim Softwaretest. Während sich die beiden vorherigen Arten auf Module höherer und niedrigerer Ordnung konzentrierten, basiert der funktionale inkrementelle Test auf der Funktionalität eines bestimmten Moduls.
Funktionale inkrementelle Integration wird verwendet in
Agile/DevOps-Methoden
und ist eine ausgezeichnete Wahl für Anwendungen mit komplexen Abhängigkeiten zwischen Modulen oder Komponenten.
Schritte zur funktionalen inkrementellen Integration
- Identifizierung einzelner Module und Komponenten mit klar definierten Schnittstellen
- Überprüfung der Funktionalität der einzelnen Module durch Unit-Tests
- die minimalsten Kernmodule des Systems zu integrieren und sicherzustellen, dass es funktioniert
- Schrittweises Hinzufügen einzelner Module, wobei die Funktionalität bei jedem Schritt getestet wird
- Refaktorierung des Codes, wenn jedes Modul hinzugefügt wird
- Wenn alle Module hinzugefügt sind, testen Sie Funktionalität und Leistung
Vor- und Nachteile eines inkrementellen Testansatzes
Inzwischen sollten Sie eine Vorstellung davon haben, warum inkrementelle Tests ein beliebter Ansatz sind. Wie alle Softwaretestmethoden hat sie jedoch ihre Vor- und Nachteile. Lassen Sie uns einige dieser Vor- und Nachteile untersuchen.
Vorteile eines inkrementellen Testansatzes
1. Flexibilität
Wie alle Softwareentwickler und -tester nur zu gut wissen, können sich die Anforderungen während des SDLC ändern und weiterentwickeln, manchmal sogar ziemlich dramatisch. Inkrementelles Testen ist dynamisch genug, um es den Teams zu ermöglichen, sich während des Testprozesses anzupassen und neue Pläne und Richtungen einzubeziehen.
2. Frühzeitige Fehlererkennung
Der beste Zeitpunkt, um einen Fehler oder Defekt zu entdecken, ist so früh wie möglich. Wenn Entwickler mundgerechte Module einzeln überprüfen, ist es viel einfacher, Probleme zu erkennen und zu beheben. Darüber hinaus wird dadurch die Wahrscheinlichkeit verringert, dass große Probleme erst spät in der Entwicklung auftreten.
3. Einfachheit
Das Testen von Software kann ein sehr komplexer Prozess sein. Einer der überzeugendsten Aspekte des inkrementellen Testens besteht darin, wie es die Stadt in praktikable Teile zerlegt. Anstatt sich mit einer überwältigenden Komplexität auseinanderzusetzen, können sich die Tester auf bestimmte Module konzentrieren und diese sogar priorisieren. Dieser Vorteil ist ein Geschenk des Himmels für große und komplexe Anwendungen.
4. Geringeres Regressionsrisiko
Regression ist ein zeitaufwändiges und komplexes Thema in der Softwareentwicklung. Inkrementelle Tests können die Häufigkeit und die Risiken von Regressionen verringern, da sie es den Teams ermöglichen, die Module einzeln zu testen und Probleme zu lösen, sobald sie auftreten. Bei Verwendung mit festen
Regressionstests
können Teams eine Menge Zeit und Nerven sparen.
5. Feedback-Möglichkeiten
Ein häufig übersehener Vorteil des inkrementellen Testens besteht darin, dass es den Teams den Spielraum gibt, Prototypen und MVPs zu erstellen. Von dort aus können Stakeholder und Investoren die grundlegende Funktionalität des Prozesses bewerten und wertvolle Rückmeldungen geben. Diese Situation kann viel Zeit und Geld sparen und zu robusteren Produkten führen.
Nachteile eines inkrementellen Testansatzes
1. Fragen der Integration
Das separate Testen von Modulen ist wünschenswert, weil es eine komplexe Anwendung in überschaubare Teile zerlegt. Die Integration dieser Module kann jedoch zu neuen und unerwarteten Fehlern führen. Daher muss ein schrittweiser Testansatz sorgfältig und bewusst geplant werden.
2. Komplexität der Testsuite
Mit mehreren Testfällen für jedes Modul und ihrer jeweiligen Interaktion untereinander können Testsuiten sehr komplex werden, um sie zu verfolgen und zu verwalten. Bei großen und komplizierten Anwendungen macht dies eine gründliche Dokumentation oder Testmanagement-Tools zu einer Notwendigkeit.
3. Mehr Arbeit
Monolithische Tests sind zwar komplexer, erfordern aber weniger Tests. Da viele Module separat getestet werden, erfordern inkrementelle Tests mehr Arbeit. Die Vorteile des inkrementellen Testens, z. B. die frühzeitige Entdeckung von Fehlern, bedeuten jedoch, dass der zusätzliche Aufwand eine zeitsparende Investition ist. Ja, natürlich,
Software-Testautomatisierung
kann dazu beitragen, diesen Aufwand zu verringern.
4. Erhöhte Anforderungen an das Management
Bei inkrementellen Tests müssen mehrere Teams zusammenarbeiten. So müssen beispielsweise die Entwicklungs-, Test- und DevOps-Teams zusammenarbeiten. Diese Situation schafft zusätzlichen Managementbedarf und erfordert eine gute Kommunikation zwischen diesen Teams, um sicherzustellen, dass sie sich konzentrieren und an denselben Zielen arbeiten.
Beispiel für inkrementelle Tests
Vielleicht lässt sich ein inkrementeller Testansatz am einfachsten anhand eines Beispiels verstehen. Zur Veranschaulichung des Prozesses soll hier eine einfache Situation dargestellt werden.
1. Beispiel für inkrementelle Tests für eine mobile Banking-App
Szenario: Ein Team entwickelt eine mobile Banking-App. Die App besteht aus mehreren verschiedenen Modulen, die es ermöglichen:
- 2FA und biometrische Benutzerverifizierung
- Verarbeitung von Transaktionen
- Dashboard zur Verwaltung von Finanzdaten
Zielsetzung: Das Team möchte die Integration der einzelnen Module testen und feststellen, ob sie gut zusammenarbeiten. Infolgedessen erstellen sie drei Testfälle.
Testfall 1
Im ersten Testfall möchte das Team sicherstellen, dass der Benutzer durch die Eingabe biometrischer Daten oder eines Passworts Zugang sowohl zur Transaktionsverarbeitung als auch zum Dashboard für das Finanzdatenmanagement erhält.
Die App besteht den Test, wenn der Nutzer seine Daten eingeben kann und die Möglichkeit hat, auf Transaktionen zuzugreifen.
Testfall 2
Der nächste Testfall soll zeigen, wie die App mit nicht autorisierten Transaktionen umgeht.
Die App besteht den Test, wenn der Versuch, eine nicht autorisierte Transaktion durchzuführen, blockiert wird und die App eine Fehlermeldung ausgibt.
Testfall 3
Beim abschließenden Integrationstest wird überprüft, ob die Anwendung gleichzeitig Transaktionen durchführen kann.
Die App besteht den Test, wenn der Nutzer eine Transaktion starten und gleichzeitig auf seine Finanzinformationen zugreifen kann, ohne dass es zu Dateninkonsistenzen oder Problemen kommt.
Ist ein inkrementeller Testansatz die
dasselbe wie inkrementelle Tests?
Nein. Inkrementalitätstests beziehen sich auf eine statistische Marketingmethode, die vielleicht am besten als Attributionsmodellierung bekannt ist. Kurz gesagt, es hilft Marketingteams, die Auswirkungen von Werbekampagnen, Marketingkanälen oder bestimmten Strategien zu verstehen.
Während das Interesse an dieser Art der Modellierung in den letzten Jahren dank des „Todes“ von Cookies und Drittanbieterdaten gestiegen ist, besteht die einzige Verbindung zu inkrementellen Tests in einem gemeinsamen Wort.
Die 3 wichtigsten Tools für inkrementelle Tests
#1. ZAPTEST
Neben der Bereitstellung erstklassiger
RPA
ZAPTEST bietet eine Reihe von Automatisierungswerkzeugen für Softwaretests, die sich perfekt für inkrementelle Tests eignen. Einige der Merkmale sind:
Verwaltung von Testdaten
: Reduzieren Sie den Zeit- und Arbeitsaufwand für inkrementelle Tests, indem Sie den Teams die Wiederverwendung von Testdaten ermöglichen.- Skriptaufnahme und -wiedergabe: Mit diesem No-Code-Tool können Teams Skripte aufzeichnen und ausführen und bei inkrementellen Tests eine Menge Zeit sparen.
- Wiederverwendbare Testmodule: ZAPTEST ist hochgradig modular und ermöglicht es Teams, Testmodule zu erstellen und wiederzuverwenden und so den Testprozess erheblich zu verkürzen.
Alles in allem bietet ZAPTEST eine leistungsstarke und vielseitige Testautomatisierungssuite, die sich für jede Art von Tests, einschließlich inkrementeller Tests, eignet.
#2. Selen
Selenium ist eine Open-Source-Plattform zur Testautomatisierung, die das Testen mobiler Anwendungen erleichtert. Die Tools unterstützen mehrere mobile Plattformen (Android, iOS, Windows) und verwenden Stubs und Treiber zur Simulation von Modulen.
#3. Testsigma
Testsigma ist eine Cloud-basierte Testautomatisierungsplattform. Es kann zum Testen von Web- und mobilen Anwendungen verwendet werden und eignet sich dank der codelosen Testerstellung und der Integration in CI/CD-Pipelines für inkrementelle Tests.
Abschließende Überlegungen
Inkrementelle Tests bei Softwaretests sind ein wichtiger Teil der Integrationstests. Es ermöglicht den Teams, die Module in leicht zu testende Teile zu zerlegen, bevor sie langsam integriert werden. Die Vorteile liegen darin, dass jedes Modul auf Fehler überprüft werden kann und dann darauf, wie es mit den angeschlossenen Teilen zusammenarbeitet.
Zusammen mit unserem erstklassigen
RPA
Tools bietet ZAPTEST eine plattform- und anwendungsübergreifende no-code Software-Testautomatisierung. Darüber hinaus verfügt unsere Testsuite über Funktionen wie CI/CD-Integration, robuste Berichte und Analysen sowie erstklassigen Support und Kundendienst.