Holen Sie sich die neuesten wichtigen Update-Informationen für die Log4j-Sicherheitslücke. Sehen Sie sich an, wie Sie das Problem mithilfe der Parasoft-Anleitung beheben können. Erfahren Sie mehr >>

X
BLOG

Können API-Tests Effizienzmodifikatoren in der neuen Normalität von COVID-19 hinzufügen?

Können API-Tests Effizienzmodifikatoren in der neuen Normalität von COVID-19 hinzufügen? Lesezeit: 9 Minuten

Auswirkungen auf die traditionellen Methoden zur Bereitstellung von Software

Während Unternehmen weiterhin mit den Auswirkungen von COVID-19 kämpfen, arbeiten Unternehmen daran, Testpraktiken in der „neuen Realität“ neu zu definieren. Die anhaltende Pandemie hat die Fähigkeit von Unternehmen beeinträchtigt, Software auf verschiedene Weise zu testen und bereitzustellen.

Eingeschränkte Ressourcen

Erstens und vor allem Ressourcenbeschränkungen steigen weiter an, da viele Arbeitnehmer einfach nicht in der gleichen Kapazität wie in einem Büro von zu Hause aus arbeiten können. Da viele Unternehmen Ressourcen von globalen Systemintegratoren nutzen, haben verschiedene Regionen spezifische Regeln für die Arbeitsbedingungen festgelegt. Viele Unternehmen können einfach nicht mit den Auswirkungen fertig werden. Daher suchen Führungskräfte nach Lösungen, um die gleichen Anforderungen für Tests mit weniger Ressourcen zu erfüllen.

Remote-Team-Zusammenarbeit

Als nächstes müssen Unternehmen darüber nachdenken, wie und Remote-Teams arbeiten zusammen. Es ist sehr interessant zu bemerken, wie die fortgesetzte Isolation ein Gefühl des Unwohlseins erzeugt hat, das sich erheblich auf Teams auswirkt, die remote arbeiten. Dies liegt daran, dass es für diejenigen von uns, die in einem Büroraum gearbeitet haben, allzu einfach war, in das Büro eines anderen zu gehen und ein Gespräch über die neueste Version zu beginnen.

Diese Ebene der sozialen Interaktion gab uns die Möglichkeit, unsere täglichen Aufgaben sowie Bedenken hinsichtlich Qualität und Prozess zu erörtern. Das Arbeiten in einer rein entfernten Kapazität schränkt diese Aktivitäten ein und versetzt uns entweder in einen Zustand völliger Isolation oder in den meisten Organisationen in völlige Ablenkung. Es ist schwierig, die richtigen Wege zu finden, um mit Remote-Teams zusammenzuarbeiten, damit Sie das Gleichgewicht zwischen zu wenig Kommunikation und Kommunikationsüberschuss finden können. Mit der richtigen Software für die Zusammenarbeit, Governance und Best Practices können Unternehmen in der neuen Realität erfolgreich sein.

Mechanik der Softwarebereitstellung

Als nächstes müssen IT-Organisationen radikal Überdenken Sie ihre Software-Bereitstellungsmechanismen. „Mobile-first“ wird für Unternehmen, die ihren Kunden digitale Erlebnisse bieten, zunehmend überkritisch. Dies ist besonders wichtig, da Sie in einem Geschäft nicht physisch mit Ihren Kunden interagieren können. Call Center sind stark betroffen. Und die digitale Präsenz repräsentiert heute weitgehend deine Marke. Alles bewegte sich in einen rein digitalen Bereich: von der Bestellung von Lebensmitteln über eine App über Online-Banking, die Bestellung und Lieferung kritischer Arzneimittel bis hin zum Kauf von Kleidung. Unternehmen müssen in der Lage sein, diese Erfahrungen schnell zu entwickeln und in dieser sich verändernden Welt schnell bereitzustellen, damit sie nicht die Verbindung zu ihren Kunden verlieren.

Mit dieser Herausforderung ist die Überlegung verbunden, die Organisationen in Bezug auf die tatsächliche Situation machen müssen Liefermechanik. Während wir die digitalen Erlebnisse für unsere Kunden radikal überdenken und gestalten, müssen wir darüber nachdenken, wie wir digitale Inhalte über die DevOps-Pipeline entwickeln, testen und bereitstellen.

Umstellung auf Cloud-Ökosysteme und Low-Code-Entwicklungsplattformen

Die COVID-19-Pandemie veranlasste viele Unternehmen, ihre Bereitstellungsmechanismen zu modernisieren, indem sie ihre Software in Cloud-Ökosysteme und Low-Code-Entwicklungsplattformen verlagerten, damit geografisch getrennte Entwickler und Tester zusammenarbeiten und iterieren können, um die bestmöglichen Erfahrungen zu liefern.

Wir sehen einen Anstieg der Migrationen auf Plattformen wie Salesforce, Guidewire, Mendix und andere. Nicht nur, um eine schnelle Bereitstellung zu ermöglichen, sondern um alle Funktionen dieser Plattformen für eine ressourcenbeschränkte Organisation zu nutzen.

Darüber hinaus sehen wir mit der Modernisierung der Softwareentwicklung und -bereitstellung über die CI-Pipeline eine Migration auf Cloud-Plattformen wie Azure DevOps, Pivotal Cloud und Amazon Web Services (AWS).

Software-IT-Unternehmen müssen aushalten. Sie müssen ihren Kunden hochgradig interaktive digitale Erlebnisse mit begrenzten Ressourcen und begrenzten Ressourcen bieten. Aber etwas muss geben.

Sehr oft landen Sie mit diesen konkurrierenden Kräften Qualität opfern dabei. Es ist wichtiger denn je, sicherzustellen, dass Qualität Priorität hat, damit Kunden, die über digitale Erlebnisse direkt mit Ihnen interagieren, nicht darunter leiden. Der beste Weg, um in einer beengten Welt weiterhin Qualitätserlebnisse zu bieten, besteht darin, nach „Effizienzmodifikatoren“ für Ihre Testpraxis zu suchen.

Effizienzmodifikatoren sparen Ihnen Zeit

Was sind diese „Effizienzmodifikatoren“? Sie kommen in verschiedenen Formen vor:

  • Intelligentes Testdesign und -optimierung
  • Umfassende Anforderung an die Codeabdeckung
  • Intelligente Testausführung

Intelligentes Testdesign und -optimierung

In einer modernen Anwendung gibt es so viele Dinge zu testen, einschließlich der Frontend-Benutzeroberfläche, Middleware-Diensten wie Datenbanken, Backend-Systemen und Abhängigkeiten von Drittanbietern. Jede dieser Schichten erhöht die Komplexität des gesamten Testprozesses. Viele Anbieter von Softwaretest-Tools bieten Lösungen zum Testen von Teilen dieser Architektur an. Wichtig wird jedoch, dass Sie sicherstellen können, dass Sie jede Komponente in ihrer Gesamtheit genau testen können, ab dem Zeitpunkt, an dem die erste Codezeile durch intelligente UI-Tests in der abgeschlossenen Anwendung geschrieben wurde.

Eine Abkürzung zum Entwerfen und Optimieren dieser erforderlichen Tests besteht darin, künstliche Intelligenz zu nutzen. Unternehmen suchen nach intelligenten Lösungen mit künstlicher Intelligenz, um den Testerstellungsprozess zu optimieren. Dies kann in Form eines intelligenten Code-Scans erfolgen, um beim Schreiben von Code schlechte Praktiken zu identifizieren, automatisch Komponententests zu generieren und Muster und Beziehungen in API-Sequenzen zu identifizieren, um umfassende Testszenarien zu erstellen. Und schließlich die Verwendung von AI-gestützter Selbstheilung auf der UI-Ebene, um sich von sich ändernden Anwendungsschnittstellen zu erholen.

Umfassende Anforderung an die Codeabdeckung

Es reicht nicht aus, nur eine ganze Reihe von Tests zu erstellen. Um die Anwendung schnell zu validieren, müssen Sie verstehen, wie jeder der Tests mit den Geschäftsanforderungen korreliert, damit Sie die Priorität verstehen und wie sie mit dem zugrunde liegenden Code korreliert, damit Sie beginnen können, die Vollständigkeit des Tests zu verstehen.

Ein leistungsfähiger Effizienzmodifikator für ein eingeschränktes Testteam besteht darin, eine Testpraxis aufzubauen, in der Testfälle eng an die Geschäftsanforderungen und den Entwicklungscode gekoppelt sind, um eine umfassende und ganzheitliche Sicht auf die Qualität zu erstellen.

Intelligente Testausführung

Sobald Sie eine ganze Reihe von Tests durchgeführt haben und wissen, wie die Testergebnisse aus einer Prioritätsperspektive bearbeitet werden können, indem Sie sie mit den Anforderungen verknüpfen, müssen Sie in der Lage sein, diese Tests so effektiv wie möglich auszuführen. Die meisten Organisationen führen ihre gesamte Testsuite über Nacht durch. Verbringen Sie dann den halben nächsten Tag damit, diese Ergebnisse zu durchforsten, um festzustellen, ob tatsächlich etwas schief gelaufen ist oder ob es ein „Automatisierungsgeräusch“ gab.

Der beste Weg, um die Effizienz Ihrer Testausführung zu steigern, ist die Durchführung einer intelligenten Testausführung. Dies ist eine Ausführung nur der Testfälle, die Sie ausführen müssen, um die Änderungen zu überprüfen, die an Ihrer Anwendung vorgenommen wurden. Mithilfe von Technologien wie der Ausführung intelligenter Tests können Sie:

  • Identifizieren Sie schnell die Testfälle, auf die sich Änderungen auswirken.
  • Verknüpfen Sie sie mit den zugehörigen Anforderungen.
  • Verstehe die Priorität.
  • Sagen Sie Ihrem eingeschränkten Testteam genau, was es tun muss.

Es gibt viele Teile dieses Qualitätspuzzles, wie oben aufgeführt. Viele dieser Testpraktiken werden weitgehend verstanden, beispielsweise die Fähigkeit, Datenbanken zu testen oder eine Benutzeroberfläche zu testen. Aber eine Disziplin, die oft übersehen und den späteren Phasen des Anwendungstests überlassen wird, ist API-Tests.

Eine fokussierte Perspektive auf API-Tests

Beim API-Testen werden Schnittstellen in Ihrer Anwendung auf Service- oder Komponentenebene überprüft. Diese APIs sind die Mechanismen, über die Maschinen miteinander kommunizieren, und dienen häufig als Bruchstelle für Anwendungen, sobald sie zusammengeführt werden. Gerade in der heutigen Welt der serviceorientierten oder Microservice-Architekturen ist dieser kritische Integrationspunkt für die Schaffung eines digitalen Erlebnisses von größter Bedeutung.

In der Regel ist die mobile Anwendung nur ein Frontend für eine ganze Reihe von Diensten, und diese Dienste bieten Ihren kritischen Geschäftswert. Daher müssen Unternehmen parallel zu den übrigen Testtechniken eine umfassende API-Testpraxis erstellen.

Dies ist jedoch leichter gesagt als getan, da die meisten API-Schnittstellen schlecht dokumentiert sind oder eine Reihe versteckter und nicht dokumentierter APIs enthalten. Dies macht es für Testteams wirklich schwierig zu verstehen, wie alle APIs in welcher Reihenfolge getestet werden und wie sichergestellt wird, dass sie die richtige Anzahl von Anwendungsfällen genau abgedeckt haben.

So integrieren Sie API-Tests in Ihre Testpraxis

Sobald sich eine Organisation dazu entschließt, API-Tests als Effizienzmodifikator zu verwenden, besteht der Schlüssel darin, auf sinnvolle Weise zu beginnen. Der beste Weg, um diesen Prozess zu starten, besteht darin, ein Inventar der verfügbaren APIs in Ihrer Anwendungsarchitektur zu ermitteln. Parasoft SOAtestMit dem intelligenten API-Testgenerator können Sie APIs erkennen, indem Sie Interaktionen zwischen der Anwendung und den API-Diensten aufzeichnen.

Die Technologie nutzt künstliche Intelligenz (AI) Bereitstellung der Konstruktion aussagekräftiger API-Tests durch Verständnis von Mustern und Beziehungen in den API-Sequenzen. Anschließend werden automatisierte API-Tests erstellt, die kontinuierlich ausgeführt werden, um die Interaktionen zwischen Ihren verschiedenen Systemkomponenten zu überprüfen.

Gleichzeitig können Sie mit reinen Selenium-UI-Level-Tests erstellen Parasoft Selenic. UI-Tests sind ein wichtiger Bestandteil der gesamten Testpraxis. Bei einer rein UI-fokussierten Teststrategie können jedoch Probleme mit der Wartbarkeit auftreten. Parasoft Selenic verwendet AI, um Stabilitätsprobleme bei Testskripten zu identifizieren, und kann Tests zur Laufzeit selbst heilen.

Die Kombination der beiden Komponenten steht zwar nicht im Mittelpunkt dieser Konversation, gewährleistet jedoch eine breite Abdeckung der Anwendung und hilft Ihnen, das Vertrauen zu gewinnen, dass Ihre Anwendungsschnittstellen nicht gefährdet sind.

Wenn Sie bereits über Selenium-basierte UI-Tests verfügen, können Sie mit Parasoft Selenic die relevanten API-Aufrufe extrahieren und in die API-Test-Engine einspeisen. Indem Sie eine Bestandsaufnahme der verfügbaren Schnittstellen durchführen und automatisierte Tests für diese Schnittstellen erstellen, können Sie sofort mit dem Aufbau einer API-Testpraxis beginnen.

Woher weiß ich, wann ich mit dem API-Test fertig bin?

Dies ist ein sehr komplexes Problem. Woher wissen Sie, wann Sie genug getestet haben? Es gibt viele Debatten zu diesem Thema, aber ich denke, es gliedert sich in drei Metriken.

  • Codeabdeckung
  • API-Abdeckung
  • Anforderungsabdeckung

Code-Abdeckung erhalten

Die Codeabdeckung ist weitgehend einfach zu erhalten. Sie instrumentieren Ihre Anwendung mit einem Code-Level-Monitor und üben Ihre Anwendungen über die APIs aus. Der Code-Level-Monitor identifiziert Klassen und Methoden, mit denen interagiert wird, und liefert diese Informationen an Ihre Berichts- und Analyse-Engine zurück.

APIs stellen naturgemäß nicht alle verfügbaren Codefunktionen über die API bereit. Daher muss Ihre Organisation ermitteln, welcher Code für die APIs erreichbar ist. Sobald Sie über diese Informationen verfügen, können Sie einen Schwellenwert für den Grad der Codeabdeckung festlegen, den Sie durch Ihre API-Tests erreichen möchten. Im Allgemeinen sind 80% ein gutes Niveau.

API-Abdeckung erhalten

Die Codeabdeckung ist jedoch nur ein Teil der Geschichte. Sie möchten auch die API-Abdeckung betrachten. Die API-Abdeckung ist eine Metrik, die angibt, wie viele dieser APIs von den insgesamt verfügbaren APIs, auf die zugegriffen werden kann, mit Ihren automatisierten API-Tests getestet werden. Es kann viele Fälle geben, in denen Sie, obwohl Sie eine hohe Codeabdeckung erreichen, dennoch ein Risiko in Ihrer Anwendung haben, da Sie bestimmte Schlüssel-APIs nicht validiert haben.

Möglicherweise berühren diese Schlüssel-APIs nur einen kleinen Teil des Codes, sodass sie in der gesamten Codeabdeckung verloren gehen. Da sie jedoch eine kritische Komponente berühren, stellen sie ein erhebliches Risiko dar, wenn sie sich schlecht verhalten oder absichtlich missbraucht werden.

Sie können eine API-Abdeckung durch Ihre automatisierte Testlösung erzielen, indem Sie das Delta zwischen den in den Dienstdefinitionen verfügbaren Diensten wie Swagger, Open API und anderen gegen die Endpunkte ableiten, auf die in Ihren API-Tests zugegriffen wird. Durch diese Metrik können Sie die Gesamtzahl der abgedeckten Dienste gegen die Gesamtzahl der verfügbaren Dienste anzeigen. Im Allgemeinen ist 90% ein gutes Niveau, das je nach Größe der APIs erreicht werden kann.

Anforderungsabdeckung erhalten

Schließlich müssen wir über die Abdeckung der Anforderungen sprechen. Obwohl die Codeabdeckung und die API-Abdeckung angeben, wie viel Prozent der Anwendung Sie berühren, geben sie nicht an, ob das erreicht wird, was Sie für Ihre Kunden beabsichtigt haben.

Anforderungsabdeckung ist der Prozess des Zuordnens von Anforderungen zu Testszenarien. Sie müssen feststellen, dass das automatisierte Testszenario den Anwendungsfall auf technischer Ebene validiert. Sie können dann durch Ausführung verstehen, ob alle Ihre Anforderungen abgedeckt sind. Wenn nicht, welche Anforderungen bleiben offen? Und was ist ihre geschäftliche Priorität?

Man würde argumentieren, dass die Anforderungsabdeckung die wichtigste der drei Techniken ist - idealerweise 100% Abdeckung. In der Realität müssen Sie jedoch alle drei Metriken in Kombination verwenden, um vollständig zu verstehen, wann Sie ein akzeptables Risiko für die Veröffentlichung haben.

Wie kann ich die Lücke zwischen Fehlererkennung und -behebung verkürzen?

Kontinuierliches Feedback ist in einer Remote-Arbeitsumgebung von entscheidender Bedeutung. Wir müssen in der Lage sein, auf Qualitätsprobleme, die sich in unseren digitalen Erfahrungen manifestieren, auf sinnvolle Weise und so schnell wie möglich zu reagieren. Da APIs den Code am nächsten bringen, ohne auf Quellen zu achten, stellen sie eine gute erste Verteidigungslinie für das Quality Engineering dar, um festzustellen, wann Fehler in die Anwendung eingeführt wurden, die sich möglicherweise auf Benutzer ausbreiten könnten. Mit automatisierten API-Tests können Sie Ihre APIs fortlaufend validieren. Möglicherweise als Build-Schritt in Ihrer CI / CD-Pipeline. Ein Schlüssel zur Sicherstellung der Skalierbarkeit dieses Prozesses ist die intelligente Testausführung.

Wie bereits erwähnt, ist die Ausführung intelligenter Tests ein Sammelbegriff, der sich auf den Prozess bezieht, bei dem nur die Tests ausgeführt werden, die zur Validierung der Änderungen erforderlich sind. Diese Änderungen können aus dem Code oder aus der Anforderung stammen.

Durch die Implementierung einer intelligenten Testausführung in Ihrem CI / CD- oder DevOps-Prozess können Sie die entsprechenden API-Tests ausführen, um Ihre sich ändernde Architektur zu validieren. Indem Sie nicht die gesamte Testsuite für jeden Build ausführen, können Sie die Zeit zwischen der Fehlererkennung und -behebung erheblich verkürzen. Diese schnellen Rückkopplungszyklen sind in einer ressourcenbeschränkten Welt von entscheidender Bedeutung.

Zusammenfassung

Die Welt hat sich verändert. Seien wir ehrlich. Das wird auf absehbare Zeit so sein. Aber wir müssen dies nicht als eine Zeit betrachten, um uns zu ärgern. Vielmehr können wir dies als Chance für die digitale Transformation nutzen.

Indem wir nach innen schauen und Bereiche identifizieren, in denen Effizienzmodifikatoren hinzugefügt werden können, können wir aus dieser Pandemie in einer viel günstigeren Position herauskommen. API-Tests sind eine von vielen Methoden, die ein Unternehmen anwenden kann, um wertvolle Einblicke in die Zuverlässigkeit und Skalierbarkeit unserer Anwendungen zu erhalten.

Weitere Informationen zum Aufbau einer API-Testpraxis finden Sie in unserem On-Demand-Webinar.

Verbessern Sie die Softwarequalität mit AI-gestützten API-Tests Sehen Sie sich das Webinar an

Geschrieben von

Chris Colosimo

Als Produktmanager bei Parasoft strategisiert Chris die Produktentwicklung der Funktionstestlösungen von Parasoft. Seine Expertise in der SDLC-Beschleunigung durch Automatisierung hat ihn zu wichtigen Unternehmensbereitstellungen wie Capital One und CareFirst geführt.

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