Was ist kontinuierliches Testen und wie bringt man es in Ihr Unternehmen?
Von Chris Colosimo
12. November 2019
7 min lesen
Unternehmen konzentrieren sich im Rahmen ihrer Markteinführungsstrategie immer mehr auf das Kundenerlebnis. Ein wesentlicher Bestandteil des Kundenerlebnisses ist die Fähigkeit, Ihre Software schnell und nahtlos zu durchlaufen.
Um das Risiko einer schlechten Kundenerfahrung zu verringern, verdoppeln Unternehmen ihre Qualitätsinitiativen, und die Softwareentwicklungsbranche setzt kontinuierliche Tests als Hauptaktivität ein.
Was ist kontinuierliches Testen?
Kontinuierliches Testen ist ein Prinzip des Softwaretests, bei dem alle Ihre Tests ständig ausgeführt werden und ein kontinuierliches Feedback zur Qualität und zum Zustand Ihrer Anwendungen geben. Um jedoch kontinuierliche Tests zu erreichen, müssen Unternehmen zunächst die Testautomatisierung anwenden. Es gibt viele Arten der Testautomatisierung, die sich über die Breite einer Anwendung erstrecken und von der Benutzeroberfläche über Middleware-Systeme bis hin zu Back-End-Systemen reichen. Wenn Sie wissen, wie Sie diese verschiedenen Arten von Testautomatisierungspraktiken so effizient wie möglich einführen können, können Sie sich auf den Weg des kontinuierlichen Testens begeben.
Aufbau der richtigen Testautomatisierungsstrategie
Das mittlerweile weithin akzeptierte Testpyramide (populär gemacht von Michael Cohen und Martin Fowler) identifiziert die optimale Strategie für die verschiedenen Arten von Testaktivitäten. An der Basis, die die größte Anzahl von Tests darstellt, möchten wir eine breite Abdeckung von Unit- und API-Tests erstellen, die in der Automatisierung am einfachsten auszuführen sind, für deren Erstellung jedoch häufig technische Kenntnisse erforderlich sind. Wenn Sie an die Spitze der Testpyramide gelangen, finden Sie automatisierte UI-Tests und manuelle Tests. Wir möchten, dass diese Art von Testaktivität ganz oben steht, da dies der einzige Weg ist, um das Kundenerlebnis zu gewährleisten.
Die meisten Menschen konzentrieren sich auf den unteren und oberen Rand der Testpyramide mit einem "Automatisieren, was manuell ist" Ansatz für UI-Tests und a "Entwickler sollten testen" Mentalität für Unit-Tests. Während diese Vorgehensweisen wichtig sind, entsteht durch die Konzentration auf die Ober- und Unterseite eine Lücke in der Mitte auf der API-Ebene zwischen der Benutzeroberfläche und dem Code. Aber diese Lücke wird immer problematischer werden, mit a Aktuelle Umfrage von Programmable Web Vorhersage von über 22,000 öffentlich verfügbaren APIs bis 2021. API-Tests sind wichtiger denn je und müssen ein integraler Bestandteil der von Ihnen erstellten Strategie für kontinuierliche Tests werden.
3 Schritte zum Aktivieren des kontinuierlichen Testens mit Testautomatisierung
I zuvor diskutiert So wählen Sie die beste API-Testlösung für die individuellen Anforderungen Ihres Unternehmens aus und rufen die wichtigsten Funktionen auf, die Sie je nach Branche und Anwendung möglicherweise benötigen. Es ist hilfreich, mit einer API-Testlösung zu beginnen, die mit zunehmender Reife Ihrer API-Tests mit Ihnen mitwachsen kann. Wie fangen Sie an, wenn Sie ein Tool ausgewählt haben? Hier sind die drei entscheidenden Schritte, um die Automatisierung von Funktionstests schneller zu erreichen und Ihre kontinuierlichen Tests zu ermöglichen.
Schritt 1: Erstellen Sie eine breite Testabdeckung Ihrer vorhandenen APIs für die Automatisierung
Um eine breite Palette automatisierter Tests zu erstellen, können Sie skriptlose Tests aus Webaufzeichnungen und API-Verträgen erstellen und diese Tests dann verwenden, um den Zustand Ihrer APIs kontinuierlich zu überprüfen und sicherzustellen, dass die APIs so funktionieren, wie sie entworfen wurden. Stellen Sie sich dies als Unit-Test für APIs vor, aber ohne das Grunzen - dies ist nicht nur eine wertvolle Testtechnik, sondern auch eine der frühesten Arten der Validierung von Funktionstests, die Sie durchführen können, da Serviceverträge für APIs normalerweise eines der ersten Dinge sind, die dies tun werden geschrieben, wenn neue Features oder Funktionen erstellt werden.
Nehmen wir zum Beispiel an, das Team hat einige neue Funktionen in unser Team aufgenommen Bankanwendung. In einem ersten Schritt hat das Entwicklungsteam eine neue veröffentlicht Service-Definition. In diesem Fall wurde ein Swagger-Dokument generiert. Der neue Dienst, der hinzugefügt wurde, war der RequestLoan-Dienst. Dieser Dienst nimmt eine Reihe von Eingaben entgegen und antwortet mit einem Darlehensgeber für das neue Darlehen. Um diesen Service zu testen, könnte ich das konsumieren Prahlerei YAMLund erstellen Sie eine Reihe von Clients für jede einzelne Operation.
Einer dieser Kunden wäre der Anforderungsdarlehensdienst. Ich könnte eine Reihe positiver und negativer Eingaben erstellen, um zu überprüfen, ob sich der Dienst angemessen verhält. Ich könnte diese Tests dann für Regressionszwecke wiederverwenden.
Obwohl diese Art des Testens äußerst wertvoll ist, ist sie natürlich nur die Hälfte des API-Testrätsels, da nicht überprüft wird, wie die APIs tatsächlich verwendet werden. Geben Sie Schritt 2 ein.
Schritt 2: Überbrücken Sie die Lücke zwischen Benutzeroberfläche und API
Der zweite Teil der API-Teststrategie besteht darin, die Nutzung Ihrer Anwendung durch den Menschen in vollständigen API-Testszenarien zu modellieren. Sie können beginnen, diese Lücke in der Testpyramide zu schließen, indem Sie dies ausnutzen künstliche Intelligenz um Ihre Fähigkeit zu verbessern, zu verstehen, was tatsächlich hinter den Kulissen passiert, wenn Benutzer in Ihrer Anwendung navigieren, und diese Transaktionen hinter den Kulissen als API-Aufrufe zu interpretieren. Mit dieser Art von Tests können Sie die Benutzererfahrung an Ihren kritischen API-Tests ausrichten.
KI ist eine Schlüsselkomponente der Strategie, weil wir es können Verwenden Sie AI zuverlässig um uns zu helfen, diese Kommunikation in Beziehungen und Muster aufzuteilen und die Geschäftsregeln für das Testen unserer Anwendungen zu verstehen. Wir können dies mit unseren API-Tests auf Einheitenebene kombinieren, um eine breite Abdeckung unseres API-Spektrums zu erhalten.
Wenn Sie mein Beispiel von früher fortsetzen, werden Sie feststellen, dass für den Anforderungsdarlehensdienst Eingaben aus anderen Bereichen meiner Anwendung erforderlich sind. Speziell:
Obwohl ich die Kunden-ID und die Konto-Konto-ID willkürlich angeben konnte, müssen sie in meiner Anwendung wirklich vorhanden sein. Daher muss ich ein dynamisches Szenario erstellen, in dem ich zuerst den einzelnen Benutzer abfrage, um die Kunden-ID und die Konto-ID zu erhalten, damit ich diese Informationen an den Anforderungsdarlehensdienst weitergeben und sicherstellen kann, dass ein dynamisches Szenario wie beschrieben funktioniert. Durch die Sicherstellung, dass ich mit echten dynamischen Daten arbeite, kann sichergestellt werden, dass das Verhalten, das als Ergebnis der Interaktion von APIs untereinander auftritt, konkretisiert werden kann.
Diese Art von Techniken ermöglicht es uns, die API-Testpraxis nach links zu verschieben und in den frühestmöglichen Phasen eine breite Abdeckung unserer Anwendungen zu schaffen. Sobald dies erreicht ist, gibt es eine dritte kritische Komponente dieser Praxis, bei der es um unsere Fähigkeit geht, Veränderungen zu verstehen und sich an sie anzupassen.
Schritt 3: Stellen Sie das Vertrauen durch einen wartbaren Änderungsmanagementprozess sicher
Ich habe mit so vielen Menschen über ihre Funktionstestinitiative gesprochen, die nach der Änderung ihrer Anwendung ins Stocken geriet. Dies kommt häufig vor, da Tester den größten Teil ihrer Zeit damit verbringen, umfangreiche und großartige API-Tests zu erstellen, um sie dann zu unterbrechen, wenn sich die APIs der Anwendung ändern. Dies kann den kumulativen Effekt haben, das Vertrauen in die API-Teststrategie zu verringern, da Tester einen großen Teil ihrer Zeit damit verbringen, ihre API-Tests zu warten, anstatt neuen Wert zu schaffen.
Änderungsmanagement ist ein Schlüsselelement jeder Strategie für Funktionstests, und KI kann auch hier ein entscheidender Faktor sein. Durch automatisches Scannen von Dienstdefinitionen (ja, dieselben Dienstdefinitionen, mit denen die Testfälle ursprünglich erstellt wurden), um festzustellen, wann sich Ihre APIs geändert haben, können Sie nachvollziehen, wann Sie betroffen sind, und anschließend eine Vorlage für die Migration vorhandener Dienste auf die neuen erstellen Ausführung.
Zurück zum ersten Teil unseres Beispiels für eine Bankanwendung habe ich die Erklärung abgegeben, dass meiner Anwendung ein neuer Service hinzugefügt wurde. Dies stellt tatsächlich eine API-Änderung dar. Seit ich die erste Runde der Basistests mithilfe der Dienstdefinition erstellt habe, kann ich jetzt die verschiedenen Versionen der Dienstdefinition miteinander vergleichen, um nicht nur zu ermitteln, was sich geändert hat, sondern auch eine Karte zu erstellen, um meine vorhandenen Testfälle zu aktualisieren:
Beim Überprüfen der Änderungsvorlage ist leicht zu erkennen, dass nicht nur ein neuer Dienst hinzugefügt wurde, sondern auch viele meiner vorhandenen Dienste neu berücksichtigt wurden. Im Bild oben werden Sie das bemerken Kunden gewinnen hat eine Reihe neuer Felder, die hinzugefügt wurden. Mithilfe eines Workflows für das Änderungsmanagement können Sie Serviceänderungen proaktiv identifizieren und gleichzeitig die Aktualisierung vorhandener Testfälle verwalten, damit Sie die Änderung so schnell wie möglich wiederherstellen können.
Dies ist wohl die wichtigste Vorgehensweise, die beim Aufbau der Strategie für Funktionstests festgelegt werden muss. Ein Verständnis und ein Bekenntnis zur Qualität von Anfang an helfen Ihnen und Ihrer Organisation, diese Vorgehensweise zu übernehmen
Was ist mit schuppigen Testumgebungen?
Es wäre also einfach, hier anzuhalten, da Ihre hervorragende Testautomatisierung kontinuierliche Tests ermöglicht. Angenommen, Sie haben viel Zeit damit verbracht, diese umfassende und leistungsstarke Funktionsteststrategie zu entwickeln. Sie führen Ihre Tests in Ihrer Umgebung als Teil Ihres automatisierten nächtlichen kontinuierlichen Testprozesses durch. Wenn Sie die Ergebnisse überprüfen, sehen Sie, dass ein großer Teil davon Ihre Tests sind aufgrund eines Systems fehlgeschlagen, auf das Sie keinen Einfluss haben. Bedeutet das, dass Ihre Tests schlecht waren? Werden Sie jetzt für Systeme verantwortlich gemacht, die technisch außerhalb Ihres Testbereichs liegen?
Dies ist keine ungewöhnliche Geschichte. Wir wissen das Funktionstests können nur so effektiv sein wie die Testumgebungen, in denen sie ausgeführt werden. Instabile, nicht verfügbare oder einfach nur schuppige Testumgebungen können den Return on Investment verringern, den wir mit unseren Funktionstest-Tools erzielen. Daher muss ich zumindest kurz eine der besten Möglichkeiten zur Stabilisierung Ihrer Testumgebungen erwähnen, und zwar: Service-Virtualisierung.
Nicht zu verwechseln mit virtuellen Maschinen (das ist Hardware Virtualisierung): Mit der Dienstvirtualisierung können Sie die Dienste simulieren, die zwischen verschiedenen Hardwareteilen kommunizieren. Stellen Sie sich zum Beispiel eine Anwendung vor, die eine Datenbank aufruft. Benötigen Sie diese Datenbank tatsächlich in Ihrer Testumgebung? Was ist, wenn es nicht die Daten enthält, die Sie benötigen? Mit der Service-Virtualisierung können Sie die Transaktionen mit der Datenbank aufzeichnen und diese Aufzeichnung dann verwenden, um eine simulierte Version dieser Datenbank mit dem für Ihre Testumgebung gewünschten Verhalten zu erstellen. Aber natürlich hört es nicht nur bei Datenbanken auf - es kann sich um jede Art von Service handeln, z. B. eine SOAP- oder REST-API, sogar um TCP und Microservices.
Als Teil der Entwicklung einer nachhaltigen API-Teststrategie müssen Sie eine nachhaltige Service-Virtualisierungsstrategie entwickeln. Dies beginnt mit der Beantwortung von Fragen wie:
- Welche Services sind gute Kandidaten für die Virtualisierung?
- Wie werden virtuelle Dienste erstellt?
- Wie kann ich eine virtuelle Umgebung pflegen?
- Wie kann ich eine virtuelle Umgebung als Teil meiner kontinuierlichen Teststrategie bereitstellen?
Service-Virtualisierung ist ein Schlüsselelement für eine nachhaltige Strategie für kontinuierliche Tests, aber Verständnis wo und wann man es hereinbringt und wie man so effektiv wie möglich ist, ist der Schlüssel zum Erfolg.
Was nun?
So, jetzt haben Sie ein besseres Verständnis dafür, wie es geht API-Tests integrieren Als Teil Ihrer kontinuierlichen Teststrategie ist der nächste Schritt, loszulegen! Wenden Sie sich an einen Anbieter von API-Testtools und beginnen Sie mit Schritt eins. Das Verständnis des Endziels zu Beginn wird Ihnen helfen, auf dem Weg kluge Entscheidungen zu treffen. Viel Spaß beim kontinuierlichen Testen!