Erfahren Sie, wie die Continuous Quality Platform von Parasoft dabei hilft, Testumgebungen zu steuern und zu verwalten, um zuverlässig hochwertige Software zu liefern. Für Demo registrieren >>

BLOG

Wie wird die Testautomatisierungspyramide in der Softwareentwicklung verwendet?

Wie wird die Testautomatisierungspyramide in der Softwareentwicklung verwendet? Lesezeit: 6 Minuten

Die Testautomatisierungspyramide, erstellt von Mike Cohn und populär gemacht von Martin Fowler, hat die Art und Weise, wie wir über Softwaretests denken, verändert. Es ist eine Anleitung, welche Arten und wie viele von jeder Art von Test durchzuführen sind. Die Testautomatisierungspyramide hat zu einem effizienteren Testen beigetragen und dazu geführt, dass 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.

Kontinuierliches Testen für DevOps: Entwicklung über die einfache Automatisierung hinaus

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 beschreibt, wie viel Test in jeder Ebene durchgeführt werden muss.

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.

The 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, um in Echtzeit intelligentes Feedback zu Ihren Java-Tests und zum Fortschritt der Compliance zu erhalten. Jtest hebt die Codeabdeckung hervor, verwendet eine umfassende Codeanalyse, um die Erstellung von JUnit zu unterstützen, und identifiziert Sicherheits- und Zuverlässigkeitsprobleme, damit die Stakeholder die Qualität der zu erbringenden Leistungen verstehen und fundierte Entscheidungen über das Veröffentlichungsrisiko 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

Testen Sie die kostenlose Community-Edition

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 ist jedoch immer im Rückstand und es fehlen Tests für neue Funktionen. Und das Testen wirkt sich im Allgemeinen negativ auf das Erkennen von Problemen mit der Softwarequalität aus, wenn das Entwicklungstempo zunimmt. Aus diesem Grund ist die Testpyramide bei der Modernisierung von Teams so wertvoll.

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 Code-Analyse aufgebaut sein, die darauf ausgerichtet ist, Zuverlässigkeits- und Sicherheitsprobleme zu identifizieren und zu verhindern. Die unten abgebildete Parasoft-Testpyramide zeigt, wie Parasoft beim Testen von Lösungen für jede Ebene hilft.

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.

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.

Sehen Sie sich unseren On-Demand-Gipfel an, um mehr über die Parasoft Continuous Quality Suite zu erfahren und zu erfahren, wie Sie Ihre Softwaretests für Unternehmen verbessern können.

Sehen Sie sich den virtuellen On-Demand-Gipfel an, um zu erfahren, wie Branchenführer echte Probleme mit der Softwarequalität lösen

 

Geschrieben von

Wilhelm Hacker

Wilhelm Haaker ist Senior Solutions Architect bei der Parasoft Corporation und verfügt über Fachkenntnisse in der gesamten Parasoft-Produktsuite. Wilhelm ist spezialisiert auf Testautomatisierungsstrategien für offene Systeme, Webanwendungen und Microservices sowie SOA für Entwickler durch Funktions- und Leistungstestingenieure.

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