Parasoft C/C++test 2022.2 unterstützt das neue MISRA C:2012 Amendment 3 und eine Entwurfsversion von MISRA C++ 202x. Erfahren Sie mehr >>

Cloud-Anwendungen werden schneller gestartet. Kann die Testautomatisierung auch die Fluchtgeschwindigkeit erreichen?

Von Jason Englisch

13. Februar 2020

5  min lesen

Es wäre schwierig, ein tragfähiges Unternehmen zu finden, das überhaupt keine Cloud-Migrationsstrategie hat.

Führende Unternehmen werden bei dieser Migration einen Alles-oder-Nichts-Ansatz verfolgen und darauf bestehen, dass alle Geschäftsfunktionen schließlich in den Verbrauch einer Art elastischer Cloud aufgelöst werden müssen, sei es in einem führenden IaaS wie AWS oder Azure oder vor Ort oder nach Maß Aromen von Private Cloud.

Selbst Marktverzögerer haben den Plan, mindestens eine Anwendung auf eine On-Demand-Cloud-Instanz zu verschieben - einen Zeh ins Wasser zu tauchen, bevor sie den Sprung wagen.

Unternehmen können die Entwicklung beschleunigen und die Bereitstellungsumgebung mithilfe der Cloud modernisieren. Eines ändert sich jedoch nie: Kunden erwarten weiterhin, dass Software in der Produktion wie erwartet funktioniert und funktioniert, unabhängig davon, wo sie bereitgestellt wird.

Sie benötigen Anwendungen, die hoch verfügbar, sicher und belastbar sind, oder sie werden an einen anderen Ort verschoben. Damit bleibt die Testautomatisierung eine wichtige Gating-Funktion für den Erfolg.

Wenn die Cloud-Release-Rate die Tests übertrifft

Ein Global 500-Finanzdienstleistungsunternehmen, John Hancock, gab kürzlich die Einführung eines geschätzten Unternehmens bekannt 142 Mio. US-Dollar Übergangsprojekt zu einer privaten Cloud IaaS

Machen Sie keinen Fehler, ein Großteil dieses Budgets sind keine Cloud-Gebühren, sondern Arbeit. Die Neugestaltung von Unternehmensanwendungen für die Cloud ist offensichtlich keine leichte Aufgabe. Es ist ein gewaltiger Arbeitsaufwand erforderlich, um die Anwendungen zu integrieren, zu testen und kontinuierlich zu validieren. Diese Arbeit wird häufig wiederholt, wenn die Tests nach jeder Version beibehalten werden.

Das ist aber nichts Neues. Solche Nacharbeitskosten gab es sicherlich vor der Cloud.

Was hat sich geändert? In einer modernen Cloud-Umgebung steigt die Veröffentlichungsrate exponentiell an. DevOps-Teams verwenden IaC-Definitionen (Infrastructure-as-Code), schnelle servicebasierte Integration und Datenfeeds, automatisierte Bereitstellungspipelines und Containerisierung, die überall ausgeführt werden kann.

Bei einer KubeCon-Keynote sagte die Airbnb-Ops-Ingenieurin Melanie Cebula, dass ihr Team wöchentlich mehr als 20,000 Container-Releases herausbringt - und das war vor einem Jahr! Während die meisten Unternehmen wahrscheinlich nie die Geschwindigkeit der Netflixes und Airbnbs der Welt erreichen werden, sehen wir immer noch eine tausendfache Steigerung der Bereitstellungsgeschwindigkeit für jedes Unternehmen, das Cloud-Umgebungen richtig macht.

Wo bleibt also der Rest der Welt, Unternehmen, die nicht in der Cloud geboren wurden?

Jeder leitende Entwickler oder Testingenieur erkennt an, dass der Code selbst eine Haftung darstellt. Je mehr Code Sie schreiben, desto mehr müssen Sie diesen Code testen - und desto mehr Testcode müssen Sie im Laufe der Zeit schreiben und warten.

Das Erreichen der Fluchtgeschwindigkeit bedeutet nicht mehr, die Geschwindigkeit von Bereitstellungen und Freigaben zu erhöhen, wenn wir den Luftwiderstandsbeiwert für die Beibehaltung des dazugehörigen Testcodes nicht berücksichtigen können.

Fluchtgeschwindigkeit gegen Veränderung erreichen

Wenn Unternehmen die DevOps-Bewegung annehmen, wenden sie sich leistungsstarken Automatisierungs-Pipelines für die kontinuierliche Automatisierung von Releases und Umgebungsbereitstellungen in dynamischen Cloud-Architekturen zu.

Das Testen muss ein erstklassiger Aspekt dieser Pipeline sein. Wenn Sie Software nicht früh und häufig in einer realistischen Umgebung testen, sind die daraus resultierenden Fehler in der Produktion möglicherweise zu kostspielig, um sie zu beheben.

Die meisten Test- und Entwicklungsgruppen verwenden eine Kombination aus kommerziellen Tools und Open Source, wenn dies praktikabel ist, um Tests zu automatisieren und Abhängigkeiten zu verspotten (auch als "Service-Virtualisierung" bezeichnet). . Das beliebteste Open Source-Tool zur Automatisierung von Webtests ist SeleniumDamit können Tester browserbasierte Workflows über ein zu testendes System reproduzieren.

Während es Kernelemente von Selen schon seit Jahren gibt, haben sich die Partneraktivitäten und Entwicklerbeiträge zum Projekt in letzter Zeit verschärft. In den letzten 3-5 Jahren ist Selen für die meisten Business-Entwickler / Testteams Teil der Toolchain geworden.

Unabhängig davon, wie viele Code-, Integrations- und Leistungstests das Softwareteam durchführt, sind Funktionstests aus Anwendersicht mit Tools wie Selenium immer noch das Endspiel. Das wiederholte Testen einer Web-Benutzeroberfläche in allen Zielbrowsern und -geräten ist entscheidend für den Erfolg.

Nun, Wiederholbarkeit - hier wird es haarig. Wenn die Back-End-Geschäftslogik und -Daten zur Laufzeit dynamisch in der Web-Benutzeroberfläche dargestellt werden, treten auf dem Bildschirm unendlich viele Anomalien auf, die die Selenium-Testskripte beschädigen, unabhängig davon, ob sie durch Browsen erfasst oder von Testern manuell geändert wurden.

Beispielsweise können Elemente an verschiedenen Positionen auf der Seite oder in einer anderen Reihenfolge geladen werden oder Datenwerte oder Bilder enthalten, die außerhalb der Erwartungen des Selenium-Testskripts liegen.

Tester und SREs (Site oder Service Reliability Engineers) können versuchen, benutzerdefinierte Handler zu erstellen, um falsche Fehler zu berücksichtigen, und den Code so anpassen, dass bestimmte Parameter flexibel sind. In Kürze wird es jedoch unmöglich, den Ergebnissen einer Reihe manuell gewarteter Funktionen zu vertrauen Tests aufgrund zugrunde liegender Änderungen in der Cloud-Back-End-Architektur, die immer wieder zu Inkonsistenzen in einer dynamischen Web-Benutzeroberfläche führen.

Machen Sie das Testen so belastbar wie die Architektur

Der beste Weg, um dem ständigen Tempo der Cloud beim Testen von Anwendungen entgegenzuwirken? Wenden Sie das gleiche DevOps-Prinzip "Alles automatisieren" auf die Wartung der Testautomatisierung selbst an!

Während es auf dem Markt einige proprietäre Automatisierungstools gibt, die den gesamten Testlebenszyklus abdecken, gibt es auch Ansätze, die die Fähigkeiten von Testern, die Open-Source-Tools verwenden, erweitern.

Ein großes Reiseunternehmen stand genau vor einer solchen Herausforderung, als es begann, eine geschäftskritische Treueprogramm-App von vorhandenen Legacy-Server-Clustern auf eine reservierte Cloud-Anwendungsinstanz mit öffentlichen Cloud-Überlauffunktionen zu migrieren.

Die erste Version war vollständig getestet und recht erfolgreich, aber als im Laufe von drei weiteren Punktversionen weitere Kunden hinzukamen, scheiterten ihre ersten Selenium-Testsuiten mit einer sehr hohen Rate. Die Arbeitskosten für das Ändern von Tests sowie die erhöhten Cloud-Kosten aufgrund der redundanten Computernutzung führten zu einer negativen Managementansicht des Projekts.

Zum Glück konnten sie sich wenden Parasoft Selenic Ein Tool zur Verbesserung der Selenium-Testsuiten, zur Anwendung eines AI-basierten Ansatzes zur Interpretation der Objekte auf der Seite und zur Selbstheilung der Tests zur Anpassung an sich ändernde Bedingungen in der Web-Benutzeroberfläche.

Diese Teststabilität reduzierte die Kosten für die Testwartung des Unternehmens um bis zu 75 Prozent und ermöglichte es ihnen, ihre Inbetriebnahme mit Selenium und Selenic zwei Wochen früher abzuschließen, wobei das Ausfallrisiko im Verlauf der Migration weitaus geringer war.

Die Intellyx nehmen

Unternehmen haben klare Absichten, Anwendungen in die Cloud zu verschieben, aber die Konsequenzen und Kosten des Umzugs sind weitaus weniger klar.

Wenn Sie vorhandene Monolithen modernisieren und neue Funktionen schneller freigeben möchten, um die Kundenanforderungen zu erfüllen, müssen Sie noch viele Funktions- und Regressionstests durchführen. Tatsächlich so viele Tests, dass selbst die erfahrensten und effizientesten Testingenieure nicht genug Tests codieren und ausführen können, um Schritt zu halten.

Die Sicherstellung der Teststabilität - durch Tests, die sich selbst testen und heilen können - ist die einzige Möglichkeit, mit den schnellen Änderungen, die die Cloud mit sich bringt, Schritt zu halten.

Weiter oben: Vermeiden von Open Source-Dramen: Minderung des Risikos der Entwicklung mit Open Source-Software.

Von Jason Englisch

Jason English ist Principal Analyst und CMO bei Intellyx, wo er führende Anbieter von Technologielösungen und Software-Startups bei der Steuerung der digitalen Transformation berät. Sein Hintergrund umfasst Kundenerfahrung und interaktives Design, Entwicklungs- / Testlebenszyklus von Unternehmenssoftware, Virtualisierung, Cloud und Blockchain.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.