Nehmen Sie am 19. September an unserem Webinar teil: KI-gestütztes API-Testing: Ein No-Code-Ansatz zum Testen | Registrierung

Wie wird die Testautomatisierungspyramide in der Softwareentwicklung verwendet?

Headshot von Wilhelm Haaker, Director, Solution Engineering, Functional bei Parasoft
7. Juni 2024
6 min lesen

Hier finden Sie eine ausführliche Diskussion darüber, wie die Testautomatisierungspyramide in der Softwareentwicklung eingesetzt werden kann und welche Lösungen Parasoft für jede Phase der Testpyramide bereitstellt.

Die Testautomatisierungspyramide, erstellt von Mike Cohn und populär gemacht von Martin Fowlerhat die Art und Weise verändert, wie wir über Softwaretests denken. Es gibt Hinweise darauf, welche Arten von Tests durchgeführt werden müssen und wie viele von jedem Testtyp durchgeführt werden müssen. Die Testautomatisierungspyramide hat dazu beigetragen, effizientere Tests zu ermöglichen und zu Folgendem geführt: zuverlässigere Software an Kunden freigegeben werden.

Vorteile der Testautomatisierungspyramide

Die meisten Vorteile der Testautomatisierung liegen auf der Hand:

  • Kosten- und Zeitersparnis.
  • Bessere Genauigkeit zur Beseitigung menschlicher Fehler.
  • Möglichkeit, Tests zu wiederholen, wiederzuverwenden und an Ihre Softwareanforderungen anzupassen.

Aber warum ist die Testautomatisierungspyramide beim automatisierten Softwaretest so wichtig?

Nur die Automatisierung allein bringt Sie nicht dahin, wo Sie in der Softwareentwicklung mit einem engen Zeitplan und Budget hin wollen. Es wird immer noch begrenzte Ressourcen und begrenzte Zeit geben.

Wie können wir die geeigneten Arten von automatisierten Tests mit dem richtigen Volumen entwerfen, um die Tests mit den Entwicklungspraktiken zu skalieren? Die Testpyramide ist eine großartige Anleitung, um genau das zu tun!

Nachfolgend finden Sie eine Übersicht über die Testpyramide und wie jede Phase der Pyramide in der Softwareentwicklung verwendet wird.

Durchqueren der Testautomatisierungspyramide

Die Testpyramide ist eine großartige visuelle Metapher, die verschiedene Testebenen beschreibt und zeigt, wie viele Tests in jeder Ebene durchgeführt werden müssen.

Blaues Dreieck in 3 Teile unterteilt: unten ist Einheit, Mitte ist Service, oben ist E2E

Unit-Tests befinden sich unten und stellen die detailliertesten Tests dar, von denen Sie viele haben sollten.

Die nächste Schicht in der Pyramide hat Dienstschicht bzw Integrationstests. Hier beginnen Sie zu testen, wie Ihre Softwarekomponenten miteinander interagieren, unabhängig davon, ob es sich um interne oder externe Integrationen handelt.

Die End-to-End-Test (E2E) ist die komplexeste und testet die Software als Ganzes, um sicherzustellen, dass sie von Anfang bis Ende wie erwartet funktioniert.

Wenn Sie das Volumen Ihrer Testsuiten in jeder Ebene an dieser visuellen Metapher einer Pyramide ausrichten, können Sie die Tests skalieren, um eine zuverlässigere Software zu erhalten. Lassen Sie uns untersuchen, warum.

Unit-Tests

Ein Komponententest wird an einem kleinen Teil des Codes durchgeführt, typischerweise einer Funktion/Methode oder bis zu einer Klasse, um festzustellen, ob er seine Funktion korrekt erfüllt. Die Merkmale dieser Tests sind einfach und schnell, weshalb Sie einen großen Prozentsatz Ihrer Tests in dieser Schicht haben möchten. Wenn ein Komponententest fehlschlägt, werden Entwickler gewarnt und können schnell feststellen, was die unbeabsichtigten Folgen ihrer Codeänderungen sind, und dies dient als kritisches Sicherheitsnetz, um den Code mit Zuversicht zu ändern.

Bei all ihren Vorteilen sind Unit-Tests nicht das Ende aller Tests. Bei derart eng gefassten Tests, bei denen Testdoppel verwendet werden (z. B. Mocks und Stubs), verlieren Sie die Überprüfung, wie große Teile der Software zusammenarbeiten.

Wenn Sie an der Überprüfung der Geschäftsanforderungen interessiert sind, ist dies mit Komponententests schwierig zu vereinfachen. Wie der Ausdruck lautet: "Sie können den Wald vor lauter Bäumen nicht sehen." Eine Richtlinie zum Zuordnen und Verfolgen von Komponententests zu User Stories, während diese bearbeitet werden, kann jedoch dazu beitragen, Risiken zu identifizieren, die mit bestimmten Funktionen verbunden sind, wenn Instabilität bei Komponententests fehlschlägt.

Wie Parasoft beim Unit-Test hilft

Parasoft C / C ++ - Test Erkennt Fehler frühzeitig und spart Geld, indem C- und C ++ - Tests in die Entwicklung von Software für eingebettete sicherheitskritische Anwendungen integriert werden.

Parasoft Test Integriert sich eng in Ihr Entwicklungsökosystem und Ihre CI/CD-Pipeline für intelligentes Echtzeit-Feedback zu Ihren Java-Tests und Compliance-Fortschritte. Jtest hebt die Codeabdeckung hervor, nutzt eine umfassende Codeanalyse zur Unterstützung der JUnit-Erstellung und identifiziert Sicherheits- und Zuverlässigkeitsprobleme, damit Stakeholder die Qualität der Ergebnisse verstehen und fundierte Entscheidungen über das Risiko einer Veröffentlichung treffen können.

Integrationstests

Integrationstests sind die mittlere Ebene der Standardtestpyramide. Wenn Komponententests sehr detailliert sind, verwenden wir auf dieser Ebene Tests, mit denen überprüft wird, ob größere Codepakete ordnungsgemäß zusammenarbeiten.

Integrationstests sind heute wichtiger denn je, da verteilte Systemarchitekturen mit Microservices und Cloud-Bereitstellungen immer beliebter werden. Die Tage der Entwicklung monolithischer Anwendungen sind lange vorbei und die unabhängig implementierten Softwarekomponenten vieler moderner Systeme lassen sich über ihre exponierten Schnittstellen miteinander integrieren, häufig über REST oder einen Nachrichtenbroker wie Apache Kafka oder ActiveMQ. Ältere Systeme werden langsam entkoppelt und in neue Softwarekomponenten zerlegt, die trotz komplexerer Bereitstellung einfacher zu skalieren und zu testen sind.

Fitch bietet hohe Codeabdeckung und Qualität für Microservices-Anwendungen

Diese Tests werden langsamer ausgeführt als Komponententests und erfordern die Bereitstellung Ihrer Software in einer Testumgebung. Sie können jedoch schwierige Probleme erkennen, die bei Komponententests übersehen werden. Und sie sind entscheidend für das effiziente Testen Ihrer Software im Vergleich zu End-to-End- oder Tests auf Systemebene.

Aufgrund der Natur eines größeren Testumfangs erhöht sich die Zeit für die Diagnose und Behebung von Problemen. Wie bei Komponententests können Integrationstests jedoch wiederholt werden, bis alle Tests erfolgreich sind und die Build-Pipeline bereit ist, in die unten beschriebenen End-to-End-Tests überzugehen (oder wieder in diese einzusteigen).

In der heutigen Softwareentwicklung sind Integrationstests ein sehr wenig erprobter Bereich, da sie als „Mittelweg“ zwischen Entwicklungstests und QS-Tests angesehen werden können. Die Finger können darauf hinweisen, wer diese Ebene testen soll (Spoiler-Alarm… die Antwort ist BEIDE). Es ist ein sehr technisch versierter Tester mit den entsprechenden Tools erforderlich, um Integrationstests korrekt durchzuführen.

Wie Parasoft beim Integrationstest hilft

Parasoft SOAtest bietet vollständig integrierte API- und Webservice-Testtools, die automatisieren Funktionale und nichtfunktionale API-Tests. Teams können automatisierte Tests mit erweiterten Funktionen zur Erstellung codeloser Tests für Anwendungen mit mehreren Schnittstellen (REST- und SOAP-APIs, Microservices, reaktive Architekturen, Datenbanken, Legacy-Systeme usw.) optimieren.

Die Tools reduzieren das Risiko von Sicherheitsverletzungen und Leistungsausfällen, indem sie Artefakte für Funktionstests in Sicherheits- und Lastäquivalente umwandeln. Die intelligente Testausführung, die durch eine binäre Diff-Analyse der Änderungen in der gepackten Software zwischen den Builds erleichtert wird, stellt sicher, dass innerhalb eines Tages Builds getestet werden, was getestet werden muss, während der Rest übersprungen wird. Solche Optimierungen und Wiederverwendungen ermöglichen zusammen mit der kontinuierlichen Überwachung von APIs auf Änderungen schnellere und effizientere Tests.

Parasoft Virtualisieren geht über das grundlegende Verspotten und Stubben hinaus und schafft eine robustere Simulationsumgebung für APIs und Dienste. Es stellt einen „digitalen Zwilling“ Ihrer Testumgebung bereit, um ihn als Sandbox für die Partnerentwicklung oder als virtuellen Endpunkt für interne Tests zu verwenden.

Virtualize ermöglicht es Testern und Entwicklern, Dienste oder Daten zu simulieren, wenn der Zugriff eingeschränkt oder unzuverlässig ist. Einführung der Service-Virtualisierung führt auch zu direkten Einsparungen bei den Infrastrukturkosten, während der Umfang der Testautomatisierung wächst. Die Ergebnisse können leicht in andere Testverfahren integriert und für eine schnellere Fehlererkennung und Fehlersuche mit einer intuitiven, codefreien Schnittstelle visualisiert werden.

Erstellen, Bereitstellen und Verwalten virtueller Testumgebungen mit Parasoft Virtualize

End-to-End-Tests

End-to-End-Tests testen die größte Menge an Code (wie in der gesamten Softwareanwendung von Ende zu Ende). Sie verwenden Daten und eine Testumgebung, um den realen Betrieb der Software zu simulieren. Es ist am teuersten zu warten und am langsamsten zu betreiben. Da hier vollständig zusammengebaute Anwendungen getestet werden, ist es auch die schwierigste Testphase, in der Probleme (Huch) diagnostiziert werden können.

Es ist jedoch am einfachsten zu entwerfen, da es den Geschäftsanforderungen der Software entspricht. Ein weniger technischer Geschäftsanalyst oder Produktbesitzer könnte definieren, was diese Tests tun sollen. Dies könnte teilweise die Popularität von BDD-Praktiken in der Testautomatisierung erklären.

Wenn Unternehmen ihren Softwareentwicklungsprozess ausbauen und mit der Automatisierung von Tests beginnen, geraten viele in eine Falle, in der die meisten ihrer Tests in diese Kategorie fallen. Schließlich stießen sie auf einen Engpass.

Die Entwicklung übernimmt Agile- und DevOps-Praktiken und beschleunigt sich. Das Testen hinkt jedoch immer hinterher, das Testen neuer Funktionen wird verpasst. Und das Testen hat im Allgemeinen einen humpelnden Einfluss auf das Fangen Softwarequalität Probleme, wenn das Tempo der Entwicklung zunimmt. Aus diesem Grund ist die Testpyramide so wertvoll, wenn sich Teams modernisieren.

Ohne Automatisierung kann man nicht mithalten. Noch wichtiger ist, dass Sie nicht mithalten können, wenn Sie nicht über eine solide Blaupause verfügen, die Ihnen zeigt, wie Sie testen sollten. Hier beginnen Unternehmen, „Lean UI-Tests“ als Mantra zu bewerten, da sie aus erster Hand sehen, wie ihre Teststrategie nicht mehr mit dem Entwicklungstempo skaliert werden kann.

Wenn Sie sehen, dass Ihre Organisation in diesem Paradigma gefangen ist, suchen Sie nach Möglichkeiten, Funktionstests von der UI-Schicht zur Service-Schicht umzugestalten. Konzentrieren Sie sich bei UI-Tests auf das Testen der clientseitigen Logik, der Benutzerreise, kritischer Pfade und der plattformübergreifenden Zertifizierung.

Wie Parasoft beim End-to-End-Testen hilft

Parasoft Selenisch ist eine leichte Ergänzung für Selentester Dies wendet maschinelles Lernen an, um instabile oder veraltete Tests, die unter sich ständig ändernden HTML-DOMs und unvorhersehbaren Antwortzeiten leiden, automatisch zu heilen.

Führen Sie Ihre Selenium-UI-Tests mit Zuversicht durch und wissen Sie, dass die Selbstheilungsfähigkeit von Selenic mit verbesserten Locator- und Wartezustandsstrategien instabile Tests erkennt, diese während der Ausführung im Handumdrehen wiederherstellt und IDE-Schnellkorrektur-Workflows ermöglicht, um den Wartungsaufwand für Sie zu verringern UI-Tests. Selenic bietet auch eine Chrome-Erweiterung zum Aufzeichnen von UI-Aktionen und zum Generieren von Selenium WebDriver-Code in Java, der dem folgt Selenium Best Practice-Seitenobjektmodell Muster.

Parasoft-Testpyramide

Während die Testautomatisierungspyramide einen Entwurf für eine effiziente Testautomatisierungsstrategie bietet, können Sie die Qualität einer Anwendung nicht testen. Die Pyramide muss auf einer soliden Grundlage einer umfassenden Codeanalyse aufgebaut werden, die sich auf die Identifizierung und Vermeidung von Zuverlässigkeits- und Sicherheitsproblemen konzentriert. Die Parasoft-Testpyramide zeigt, wie die Lösungen der Continuous Quality Testing Platform von Parasoft Tests auf jeder Ebene automatisieren.

Dreieck in 5 Teile geteilt. Die unteren 4 sind von unten nach oben blau: 1) Code-Analyse: Zuverlässigkeit + Sicherheit; 2) Unit-Tests; 3) API-Tests; 4) automatisierte UI-Tests. Die Spitze ist weiß und vom Rest der Pyramide getrennt: manuelle Prüfung.
Parasoft-Testpyramide

Ergebnisse auf diesen Ebenen können in Parasofts Berichts-, Analyse- und Compliance-Dashboard Parasoft konsolidiert werden DTPDies bietet eine einheitliche Ansicht der Softwarequalität und der Testabdeckung. Ihr Team erhält Einblicke, um den Status Ihrer Anwendung zu analysieren und die nächsten Schritte zum Erreichen Ihrer Ziele festzulegen.

Parasoft-Plattform für kontinuierliche Qualitätstests

Verwandte Post + Ressourcen