Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Parasoft-Blog
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.
Zum Abschnitt springen
Die von Mike Cohn entwickelte und von Martin Fowler bekannt gemachte Testautomatisierungspyramide hat unser Verständnis von Softwaretests grundlegend verändert. Sie gibt vor, welche Arten von Tests durchgeführt werden sollen und wie viele Tests jeder Art erforderlich sind. Die Testautomatisierungspyramide hat zu effizienteren Tests und damit zu zuverlässigerer Software für die Kunden beigetragen.
Die meisten Vorteile der Testautomatisierung liegen auf der Hand:
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.
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.
Die Unit-Tests befinden sich ganz unten und stellen die detailliertesten Tests dar, von denen Sie viele haben sollten.
Die nächste Ebene in der Pyramide ist die Service- oder Integrationsschicht . Hier beginnen Sie mit dem Testen der Interaktion Ihrer Softwarekomponenten untereinander, unabhängig davon, ob es sich um interne oder externe Integrationen handelt.
Der End-to-End-Test (E2E) ist der komplexeste Test und prüft 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.
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 Geschäftsanforderungen überprüfen möchten, ist dies mit Unit-Tests schwierig, und wie heißt es so schön: „Man sieht den Wald vor lauter Bäumen nicht.“ Eine Richtlinie zur Zuordnung und Nachverfolgung von Unit-Tests zu User Stories während der Bearbeitung kann jedoch dazu beitragen, Risiken im Zusammenhang mit bestimmten Funktionen zu identifizieren, wenn Sie Instabilitäten bei fehlgeschlagenen Unit-Tests feststellen.
Parasoft C/C++test erkennt Fehler frühzeitig und spart Kosten durch die Integration von C- und C++-Tests in die Softwareentwicklung für eingebettete sicherheitskritische Anwendungen.
Parasoft Jtest integriert sich nahtlos in Ihre Entwicklungsumgebung und CI/CD-Pipeline und liefert intelligentes Echtzeit-Feedback zu Ihren Java-Tests und dem Fortschritt Ihrer Compliance-Prüfungen. Jtest hebt die Codeabdeckung hervor, führt detaillierte Codeanalysen zur Unterstützung der JUnit-Erstellung durch und identifiziert Sicherheits- und Zuverlässigkeitsprobleme. So können Stakeholder die Qualität der Ergebnisse beurteilen und fundierte Entscheidungen zum Release-Risiko treffen.
Integrationstests bilden die mittlere Ebene der Standardtestpyramide. Während Unit-Tests sehr detailliert sind, verwenden wir auf dieser Ebene Tests, die zunächst überprüfen, ob größere Codeabschnitte korrekt 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 werden Integrationstests oft nur unzureichend getestet, da sie als „Mittelweg“ zwischen Entwicklungstests und Qualitätssicherungstests gelten. Es wird oft mit dem Finger darauf gezeigt, wer diese Ebene testen soll (Spoiler-Alarm: Die Antwort lautet: BEIDES). Für die korrekte Durchführung von Integrationstests sind technisch versierte Tester mit den entsprechenden Tools erforderlich.
Parasoft SOAtest bietet vollständig integrierte Tools für API- und Webservice-Tests, die funktionale und nicht-funktionale API-Tests automatisieren . Teams können automatisierte Tests mit fortschrittlichen Funktionen zur codefreien Testerstellung für Anwendungen mit mehreren Schnittstellen (REST- und SOAP-APIs, Microservices, reaktive Architekturen, Datenbanken, Legacy-Systeme und mehr) 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 Virtualize geht über einfaches Mocking und Stubbing hinaus und schafft eine robustere Simulationsumgebung für APIs und Services. Es stellt einen „digitalen Zwilling“ Ihrer Testumgebung bereit, der als Sandbox für die Partnerentwicklung oder als virtueller Endpunkt für interne Tests genutzt werden kann.
Virtualize ermöglicht es Testern und Entwicklern, Dienste oder Daten zu simulieren, wenn der Zugriff eingeschränkt oder unzuverlässig ist. Die Nutzung von Dienstvirtualisierung führt zudem zu direkten Einsparungen bei den Infrastrukturkosten, während der Umfang der Testautomatisierung wächst. Die Ergebnisse lassen sich problemlos in andere Testverfahren integrieren und visualisieren, um Fehler schneller zu erkennen und zu beheben – dank einer intuitiven, codefreien Oberfläche.
Erstellen, Bereitstellen und Verwalten virtueller Testumgebungen mit Parasoft Virtualize
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 setzt zunehmend auf agile Methoden und DevOps und beschleunigt sich. Doch das Testen hinkt hinterher und vernachlässigt die Prüfung neuer Funktionen. Zudem nimmt die Wirksamkeit von Tests bei der Erkennung von Softwarequalitätsproblemen mit steigendem Entwicklungstempo generell ab. Deshalb ist die Testpyramide für die Modernisierung von Teams so wertvoll.
Ohne Automatisierung kommt man nicht mit der Entwicklung mit. Und noch wichtiger: Ohne einen soliden Plan, der zeigt, wie getestet werden sollte, ist das nicht möglich. Hier beginnen Unternehmen, „schlanke UI-Tests“ als Mantra zu schätzen, da sie aus erster Hand erfahren, dass ihre Teststrategie nicht mehr mit dem Entwicklungstempo mithalten 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.
Parasoft Selenic ist eine leichtgewichtige Erweiterung für Selenium-Tester , die maschinelles Lernen einsetzt, um instabile oder veraltete Tests automatisch zu reparieren, die unter sich ständig ändernden HTML-DOMs und unvorhersehbaren Antwortzeiten leiden.
Führen Sie Ihre Selenium-UI-Tests mit Zuversicht durch, denn die Selbstheilungsfunktion von Selenic mit optimierten Locator- und Wartebedingungen erkennt instabile Tests, behebt diese während der Ausführung und ermöglicht schnelle IDE-Reparatur-Workflows, um den Wartungsaufwand für Ihre UI-Tests zu reduzieren. Selenic bietet außerdem eine Chrome-Erweiterung, mit der Sie UI-Aktionen aufzeichnen und Selenium-WebDriver-Code in Java generieren können, der dem bewährten Selenium-Page-Object-Model- Muster entspricht.
Erleben Sie, wie viel einfacher Selenium-Tests sein können – testen Sie Parasoft Selenic Free Edition.
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.
Parasoft-Testpyramide
Die Ergebnisse dieser verschiedenen Ebenen lassen sich im Parasoft DTP Dashboard für Reporting, Analysen und Compliance zusammenführen und bieten so einen einheitlichen Überblick über Softwarequalität und Testabdeckung. Ihr Team erhält dadurch Einblicke, um den Status Ihrer Anwendung zu analysieren und die nächsten Schritte zur Zielerreichung festzulegen.
Erfahren Sie mehr darüber, wie Parasoft Softwaretests im gesamten SDLC optimiert.