Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften# Software-Entwicklung

API-Tests mit UI-Interaktionen verbessern

Eine neue Technik wandelt UI-Tests in effektive API-Tests um.

― 6 min Lesedauer


UI-Tests verwandelnUI-Tests verwandelnAPI-TestsEffizienz von API-Tests.Eine neue Methode verbessert die
Inhaltsverzeichnis

Moderne Webanwendungen nutzen oft APIs, um mit Servern zu interagieren und die Benutzeroberflächen basierend auf verschiedenen Ereignissen zu aktualisieren. Das Testen dieser APIs ist entscheidend, weil sie eine Verbindung zwischen der Benutzeroberfläche und den Backend-Systemen herstellen. Traditionelle Tools zur API-Tests basieren jedoch auf Spezifikationen, die nicht immer verfügbar oder genau sind. Diese Lücke kann das automatisierte Testen von APIs erschweren.

Um dieses Problem zu lösen, wurde eine neue Technik entwickelt, die UI-Tests nutzt, um API-Tests zu erstellen. Diese Methode erfasst die Interaktionen, die über die Benutzeroberfläche gemacht werden, und generiert API-Tests basierend auf diesen Aktionen. Im Grunde genommen ermöglicht es Entwicklern, nützliche API-Tests zu erstellen, ohne vorher vollständige Spezifikationen zu benötigen.

Bedeutung des API-Testens

In Webanwendungen sind APIs dafür verantwortlich, Anfragen von Nutzern zu bearbeiten und die benötigten Informationen zurückzusenden. Das Testen dieser APIs ist wichtig, um sicherzustellen, dass sie korrekt und effizient arbeiten. Allerdings kann diese Art von Testen aus mehreren Gründen herausfordernd sein:

  1. Mangel an Spezifikationen: Viele APIs haben keine verfügbaren Spezifikationen. Wenn Entwickler sie nicht aufschreiben, kann es schwierig sein, zu wissen, was getestet werden soll.

  2. Inkonsistente Dokumentation: Selbst wenn Spezifikationen existieren, stimmen sie möglicherweise nicht damit überein, wie die APIs in der Praxis funktionieren. Diese Inkonsistenz kann zu Verwirrung und Fehlern beim Testen führen.

  3. Einschränkungen beim automatisierten Testen: Aktuelle Tools können oft keine Tests automatisch generieren, wenn Spezifikationen fehlen, was die Fähigkeit einschränkt, gründliche Tests durchzuführen.

Angesichts dieser Herausforderungen bietet ein neuer Ansatz, der UI-Tests nutzt, um API-Tests zu erstellen, erhebliche Vorteile. Es gibt eine Möglichkeit, reale Interaktionen zu erfassen und in sinnvolle Tests umzuwandeln, die wichtige Aspekte der API-Funktionalität abdecken.

Wie der neue Ansatz funktioniert

Die Technik umfasst folgende Schritte:

  1. Ausführung von UI-Tests: Zuerst werden UI-Tests durchgeführt, die Benutzeraktionen wie das Klicken auf Schaltflächen oder das Ausfüllen von Formularen auf einer Website simulieren.

  2. Überwachung der API-Aufrufe: Während die UI-Tests laufen, erfasst die Technik die API-Aufrufe, die während dieser Interaktionen gemacht werden. Dabei werden die Anfragen, die vom Browser an den Server gesendet werden, und die Antworten, die zurückkommen, verfolgt.

  3. Filtern unnötiger Aufrufe: Die erfassten Daten enthalten oft viele irrelevante API-Aufrufe, die für das Testen der Funktionalität der Anwendung nicht benötigt werden. Die neue Methode filtert diese unnötigen Aufrufe heraus und konzentriert sich nur auf die, die wichtig sind.

  4. Generierung von API-Tests: Mithilfe der relevanten API-Aufrufe generiert das System API-Testfälle, die unabhängig von der UI ausgeführt werden können. Diese Tests sind darauf ausgelegt, die Funktionalität der APIs direkt zu überprüfen.

  5. Erstellung von API-Spezifikationen: Neben der Generierung von Tests erstellt die Technik auch eine OpenAPI-Spezifikation, die die API-Endpunkte beschreibt, die durch Überwachung und Filterung entdeckt wurden. Diese Spezifikation dient als Dokumentation für Entwickler und Tester.

Testleistung

Die Effektivität der neuen Methode wurde untersucht, indem ihre Präzision und Rückruf bezüglich API-Tests und Spezifikationen bewertet wurden.

  • Präzision bezieht sich auf die Genauigkeit der generierten Tests und Spezifikationen. Eine hohe Präzision bedeutet, dass die meisten der generierten Tests das tatsächliche Verhalten der API korrekt widerspiegeln.

  • Rückruf misst die Fähigkeit, alle relevanten API-Endpunkte innerhalb der generierten Tests und Spezifikationen zu identifizieren und einzuschliessen. Ein hoher Rückruf zeigt, dass die Technik die meisten verfügbaren API-Interaktionen erfolgreich identifiziert hat.

Die Bewertung zeigte, dass dieser neue Ansatz beeindruckende Ergebnisse erzielen kann. Die generierten API-Tests wiesen eine Präzision von bis zu 98 % auf, was bedeutet, dass die Mehrheit von ihnen das Verhalten der APIs genau widerspiegelte. Der Rückruf verbesserte sich von 49 % auf 56 % bei weiterer Untersuchung und erfasste mehr API-Endpunkte.

Verbesserung der Abdeckung

Ein weiterer wesentlicher Vorteil dieser Technik ist die Verbesserung der Codeabdeckung. Die Codeabdeckung misst, wie viel des Anwendungscodes durch die automatisierten Tests getestet wird. Höhere Abdeckung bedeutet, dass während der Tests mehr potenzielle Probleme entdeckt werden können.

In praktischen Tests verbesserte sich die Abdeckungsrate durch die generierten API-Tests erheblich. Bei Hinzufügung zu bestehenden automatisierten REST-API-Testtools stieg die Abdeckung durchschnittlich um 52 % für die Anweisungsabdeckung und um 99 % für die Zweigabdeckung. Diese Verbesserung bedeutet, dass mehr Teile der Anwendung getestet wurden, was zu einer höheren Wahrscheinlichkeit führt, potenzielle Probleme zu identifizieren.

Ausführungseffizienz

Eine der herausragenden Eigenschaften der neuen Methode ist ihre Effizienz im Vergleich zu traditionellen UI-Tests. Die Durchführung von UI-Tests kann zeitaufwendig sein, während die durch diese Technik erstellten API-Tests deutlich schneller ablaufen.

Zum Beispiel benötigten UI-Test-Suiten im Durchschnitt sieben Minuten, um abgeschlossen zu werden, während die generierten API-Test-Suiten etwa 0,6 Minuten benötigten. Das entspricht einer mehr als zehnfachen Verbesserung der Ausführungszeit. Eine solche Effizienz ist entscheidend für Entwickler, die während des Entwicklungsprozesses häufig Tests durchführen müssen.

Praktische Vorteile für Entwickler

Die Auswirkungen dieser Technik auf Entwickler sind erheblich. Indem sie es ihnen ermöglicht, automatisierte API-Tests aus UI-Interaktionen zu erstellen, können Entwickler Zeit sparen und eine bessere Testabdeckung gewährleisten. Dieser neue Ansatz bietet eine integrierte Testlösung, die UI- und API-Tests verbindet, die oft als separate Prozesse behandelt werden.

Ausserdem profitieren Entwickler von einer besseren Dokumentation der APIs, mit denen sie arbeiten, indem sie sinnvolle API-Spezifikationen zusammen mit den Tests generieren. Diese Dokumentation kann neuen Teammitgliedern helfen zu verstehen, wie die APIs funktionieren und die Wartung der Anwendung im Laufe der Zeit unterstützen.

Herausforderungen und Einschränkungen

Trotz seiner Vorteile hat der neue Ansatz einige Einschränkungen. Zum Beispiel ist die Technik auf die Effektivität der ursprünglichen UI-Tests angewiesen. Wenn die UI-Tests bestimmte Interaktionen nicht abdecken, werden die generierten API-Tests diese Szenarien nicht enthalten, was potenziell kritische Funktionalität verpasst.

Zudem kann der Ansatz bei APIs, die komplexe Eingaben erfordern oder sehr dynamisch sind, Schwierigkeiten haben. In einigen Fällen müssen Entwickler die generierten Tests möglicherweise mit zusätzlichen Tests ergänzen, um eine vollständige Abdeckung zu gewährleisten.

Fazit

Die Technik, API-Tests aus UI-Tests zu erstellen, stellt einen bedeutenden Fortschritt im Software-Testen dar. Sie adressiert häufige Herausforderungen, wie den Mangel an verfügbaren API-Spezifikationen und die Einschränkungen bestehender automatisierter Testtools.

Durch die effiziente Generierung sinnvoler API-Tests und -Spezifikationen verbessert dieser Ansatz die Gesamtqualität von Webanwendungen. Da Software weiterhin Entwicklung und Testautomatisierung stärker integriert, werden Methoden, die Effizienz und Abdeckung verbessern, für den Erfolg in der Branche von entscheidender Bedeutung sein.

Originalquelle

Titel: Carving UI Tests to Generate API Tests and API Specification

Zusammenfassung: Modern web applications make extensive use of API calls to update the UI state in response to user events or server-side changes. For such applications, API-level testing can play an important role, in-between unit-level testing and UI-level (or end-to-end) testing. Existing API testing tools require API specifications (e.g., OpenAPI), which often may not be available or, when available, be inconsistent with the API implementation, thus limiting the applicability of automated API testing to web applications. In this paper, we present an approach that leverages UI testing to enable API-level testing for web applications. Our technique navigates the web application under test and automatically generates an API-level test suite, along with an OpenAPI specification that describes the application's server-side APIs (for REST-based web applications). A key element of our solution is a dynamic approach for inferring API endpoints with path parameters via UI navigation and directed API probing. We evaluated the technique for its accuracy in inferring API specifications and the effectiveness of the "carved" API tests. Our results on seven open-source web applications show that the technique achieves 98% precision and 56% recall in inferring endpoints. The carved API tests, when added to test suites generated by two automated REST API testing tools, increase statement coverage by 52% and 29% and branch coverage by 99% and 75%, on average. The main benefits of our technique are: (1) it enables API-level testing of web applications in cases where existing API testing tools are inapplicable and (2) it creates API-level test suites that cover server-side code efficiently while exercising APIs as they would be invoked from an application's web UI, and that can augment existing API test suites.

Autoren: Rahulkrishna Yandrapally, Saurabh Sinha, Rachel Tzoref-Brill, Ali Mesbah

Letzte Aktualisierung: 2023-05-23 00:00:00

Sprache: English

Quell-URL: https://arxiv.org/abs/2305.14692

Quell-PDF: https://arxiv.org/pdf/2305.14692

Lizenz: https://creativecommons.org/licenses/by/4.0/

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Mehr von den Autoren

Ähnliche Artikel