Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Parasoft-Blog
Kontinuierliches Testen unterstützt die Notwendigkeit, Software in allen Phasen des SDLC kontinuierlich zu testen. Es geht nicht ohne Hindernisse. Gehen Sie durch, um diese Hindernisse zu verstehen und wie Sie sie lösen können.
Zum Abschnitt springen
Kontinuierliches Testen ist ein Prozess, der es Teams ermöglicht, Qualität in die Softwareentwicklung einzubauen und die Bereitstellung hochwertiger Kundenerlebnisse zu beschleunigen. Durch kontinuierliche Tests erhalten Teams mithilfe automatisierter Tests sofortiges Feedback zum Codezustand.
Durch kontinuierliche Tests können Unternehmen das Geschäftsrisiko bewerten. Aktuelle Branchenumfragen zeigen die wichtigsten Kennzahlen zur Verfolgung des Projektfortschritts und -erfolgs:
Qualität ist ein wichtiges Thema für Führungskräfte. Hier sind einige aufschlussreiche Ergebnisse der befragten Wirtschaftsführer:
Das neue Ziel? Bauen Sie Qualität in den Entwicklungsprozess ein, um die Bereitstellung hochwertiger Kundenerlebnisse zu beschleunigen.
Wie wird diese Kombination aus Geschwindigkeit und Qualität erreicht? Kontinuierliche Prüfung. Aber es bringt seine Herausforderungen mit sich.
Bei dem Ziel, Qualität bei gleichzeitiger Geschwindigkeit zu erreichen, müssen bei der Implementierung von kontinuierlichem Testen typischerweise drei Haupthindernisse überwunden werden.
Die Teams müssen diese Hindernisse beseitigen, damit kontinuierliche Tests in die Entwicklungskultur einer Softwareorganisation integriert werden können.
Anfänglich ist der Mangel an Fachwissen nicht nur der Mangel an Wissen und Fähigkeiten des Teams. Es gibt auch Einschränkungen der verwendeten Werkzeuge.
Berücksichtigen Sie die Testautomatisierung der Benutzeroberfläche. Dies ist eine gängige Praxis und eine zuverlässige, aber wiederverwendbare Automatisierung ist schwierig. Selen ist der De-facto-Standard. Obwohl es Open Source und kostenlos ist, hat es eine eigene Akzeptanzkurve und es braucht Erfahrung und Zeit, um es zu meistern.
Selentests können unzuverlässig sein und was an einem Tag aufgezeichnet wird, kann am nächsten nicht wiedergegeben werden. Die Testwartung wird zu einem wachsenden Problem, da immer mehr UI-Tests automatisiert werden. Selen benötigt weitere Tools, um die Verwendung und Wartung zu vereinfachen.
Service-Level- oder API-Tests sind eine relativ neue, aber wertvolle Methode. Sie befinden sich jedoch in einer Grauzone zwischen Entwicklern und Testern. Entwickler verstehen die APIs am besten, sind aber weder motiviert noch verpflichtet, sie zu testen, und Testern fehlt das nötige Wissen für API-Tests.
Die größte Herausforderung, wenn Organisationen versuchen, API-Tests einzuführen, besteht darin, zu verstehen, wie die APIs tatsächlich verwendet werden. Das soll nicht heißen, dass APIs nicht gut dokumentiert oder konzipiert sind. Vielmehr gibt es nicht viele Informationen darüber, wie die Dienste in einem Anwendungsfall, Workflow oder Szenario zusammen verwendet werden.
Darüber hinaus ist es wichtig, dass die API-Testautomatisierung über die Aufzeichnung (während des Betriebs) und die Wiedergabe (zum Testen) hinausgeht. Die Modellierung des Verhaltens und der Interaktionen zwischen APIs ist ebenso erforderlich wie die Verwendung dieser Interaktionen zur Steuerung der Testerstellung und -verwaltung.
Leistungstests werden oft als etwas angesehen, das von einem anderen Team in der Organisation durchgeführt wird, möglicherweise als Kontrollkästchen. Wenn jedoch Leistungsprobleme auftreten, hat sich die Produktentwicklung möglicherweise weiterentwickelt, und möglicherweise ist ein störendes Rollback erforderlich.
Im Idealfall müssen Leistungstests früher im Softwareentwicklungsprozess durchgeführt werden und die bereits geleistete Arbeit mit automatisierten Funktionstests nutzen. Gleichzeitig übernimmt das Team API-Tests und kann diese Arbeit nutzen, um Leistungstests nach links zu verlagern. Dies liegt in der gemeinsamen Verantwortung von Entwicklern und Testern.
Der Mangel an Fachwissen und Schulung im Entwicklungs- und Testteam sollte sich nicht auf das Team selbst auswirken, sondern auf die Komplexität bei der Einführung der Testautomatisierung und der damit verbundenen Tools. Es stehen Lösungen zur Verfügung, die die Testautomatisierung vereinfachen sollen. Diese Lösungen machen die Einführung weniger störend und lassen sich besser in bestehende Prozesse integrieren.
Erstellen Sie wiederverwendbare, wartungsfreundliche und verständliche Testskripte. Parasoft Selenic löst die Hauptprobleme bei der Einführung von Selenium: die Erstellung und Wartung von Tests. Durch die Aufzeichnung von UI-Interaktionen über den Chrome-Browser werden automatisch Selenium-Testfälle auf Basis dieser Interaktionen generiert. Zusätzlich werden Locators mithilfe des Page Object Model aufgezeichnet, um die Robustheit gegenüber UI-Änderungen zu erhöhen. Selenic nutzt KI-gestützte Selbstheilung von Tests. Wenn UI-Änderungen bestehende Tests beeinträchtigen, trifft das Tool intelligente Annahmen, um zu verhindern, dass die Testfälle fehlschlagen.
Modellieren Sie reale API-Testszenarien durch die Aufzeichnung manueller und automatisierter UI-Interaktionen. Die Einführung von API-Tests wird oft durch die Schwierigkeit der Testerstellung erschwert. Parasoft SOAtest nutzt bestehende UI-Tests (einschließlich mit Selenic erstellter Tests), um API-Interaktionen während der Anwendungsausführung aufzuzeichnen. Die KI in SOAtest organisiert diese aufgezeichneten Interaktionen in erkennbare Szenarien, die die Grundlage für ein API-Test-Repository bilden. Diese API-Szenarien können wiedergegeben, bearbeitet, geklont und wiederverwendet werden, um eine umfassende API-Testsuite zu erstellen. Die Automatisierung und die KI-gestützte Entscheidungsfindung von SOAtest vereinfachen die Einführung, Nutzung und Wartung von API-Tests. Zudem trägt SOAtest dazu bei, Wissenslücken im Entwicklerteam zu schließen.
Nutzen Sie vorhandene Testartefakte wieder, um Last-, Leistungs- und Sicherheitstests im Rahmen der DevOps-Testpipeline effizient zu skalieren . Mit zunehmender Erfahrung des Entwicklungsteams in der Testautomatisierung für UI- und API-Ebene wird das Test-Repository zu einer wichtigen wiederverwendbaren Ressource. Tests können für Last- und Leistungstests sowie zur Erhöhung der Anwendungsfall- und Codeabdeckung wiederverwendet werden.
Der Prozessablauf zeigt die Automatisierung für Selenium-UI-Tests, das Aufzeichnen und Erstellen von API-Tests sowie die Wiederverwendung von Assets für zukünftige Funktions-, Leistungs- und Sicherheitstests.
Verständlicherweise erwarten Softwareunternehmen, dass automatisierte Tests effizient sind und den Entwicklungsfortschritt nicht behindern. Mit dem Wachstum der Testsuiten steigen jedoch auch die Probleme bei der Wartung und Ausführung. Tests sind wie Code von Änderungen betroffen. Neue Funktionen, die während eines Sprints hinzugefügt werden, können sich erheblich auf die Benutzeroberfläche oder die Workflows der Anwendung auswirken. Diese Änderungen brechen bestehende Tests und machen sie instabil. Es ist wichtig, diese so schnell wie möglich anzusprechen.
Wenn Tests fehlschlagen, müssen Sie den Kontext des Fehlers verstehen. Nicht jeder Testfehler ist gleich. Einige Anwendungsfälle sind wichtiger als andere, oder einige Tests sind von Natur aus instabil. Was fehlt, ist ein Verständnis der Auswirkungen von Testfehlern oder Testinstabilitäten auf die Geschäftsprioritäten der Anwendung. Die Untersuchung dieser ständigen Testfehler wird zu einer Ablenkung von der gesamten Testautomatisierungsstrategie. Die Korrelation zwischen Geschäftsanforderungen und Tests ist entscheidend, um sicherzustellen, dass der Wert der Automatisierung realisiert wird.
Ein weiteres Hindernis ist die tatsächliche Ausführungszeit für Testsuiten. Wenn das Testportfolio wächst, steigt auch die Ausführungszeit über eine angemessene Wartezeit für Feedback hinaus. Ein schnelles Feedback zur Änderung ist für eine erfolgreiche CI / CD-Pipeline unerlässlich. Daher sind Testeffizienz und -fokus erforderlich.
Die Lösung für das Hindernis bei der Testausführung besteht darin, mit AI intelligenter zu testen. Dies bedeutet, die KI der Testautomatisierung zu nutzen, um Tests widerstandsfähiger gegen Änderungen zu machen und die Ausführung nur für Schlüsseltests zu zielen.
Intelligente UI-Tests mit Selenium und Selenic. Parasoft Selenic nutzt KI, um Tests bei erkannten UI-Änderungen automatisch zu reparieren. Diese Korrekturen werden automatisch angewendet, und Entwickler erhalten Empfehlungen zur Fehlerbehebung. Die Korrekturen können automatisch auf die Selenium-Tests angewendet werden, wodurch manuelles Debugging und Codeänderungen entfallen.
Die Verwendung von KI zur Selbstheilung von Tests verringert die Testinstabilität, bietet jedoch auch Empfehlungen und schnelle Lösungen.
Planen Sie Tests für Arbeitselemente basierend auf den betroffenen Anforderungen. Um Testaktivitäten zu priorisieren, ist eine Korrelation zwischen Tests und Geschäftsanforderungen erforderlich. Die Nachverfolgung von User Stories und Anforderungen ermöglicht die Echtzeit-Transparenz der Qualität des Wertstroms. User Stories und Anforderungen sollten hinsichtlich ihrer Priorität überprüft werden. Die Rückverfolgbarkeitsfunktionen in Parasoft SOAtest werden genutzt, um die Ausführung von Tests zu planen, die die im Sprint bearbeiteten Elemente validieren. Da jedoch unklar ist, wie sich die jüngsten Änderungen auf den Code ausgewirkt haben, sind weitere Maßnahmen erforderlich.
Die Priorisierung von Tests basierend auf betroffenen User Stories ist der erste Schritt zur Optimierung der Testausführung.
Nutzen Sie die Testauswirkungsanalyse, um ausschließlich die Änderungen zu validieren. Für eine optimale Testausführung ist es notwendig, den von jedem Test abgedeckten Code zu verstehen und anschließend die geänderten Codeabschnitte zu ermitteln. Parasoft-Tools bieten diese Möglichkeit durch ein zentrales Repository für Testergebnisse und -analysen. Die Testauswirkungsanalyse ermöglicht es Testern, sich ausschließlich auf die Tests zu konzentrieren, die die Änderungen validieren.
Die Testauswirkungsanalyse ermittelt, welche Tests mit dem Code korrelieren, der geändert wurde, um das Testen nur auf das zu konzentrieren, was getestet werden soll.
Die Testumgebung ist der Dreh- und Angelpunkt der Hindernisse, die Unternehmen davon abhalten, automatisierte Tests in kontinuierliche Tests umzuwandeln. Es gibt drei Arten von Herausforderungen, denen sich Unternehmen gegenübersehen, wenn sie versuchen, Tests jederzeit und überall auszuführen und mit den externen Abhängigkeiten der Anwendung umzugehen. Dies gilt insbesondere für eine Microservices-Architektur. Die Anzahl der Abhängigkeiten explodiert aufgrund der Art des Entwurfs.
Der Zugriff auf ein gemeinsam genutztes System , wie beispielsweise einen Mainframe oder eine externe Abhängigkeit eines Drittanbieters, kann zeit- und kostenintensiv sein. Besonders problematisch wird es, wenn die externe Abhängigkeit stark ausgelastet ist und mehrere Personen gleichzeitig daran arbeiten, was zu Instabilität der Tests aufgrund von Datenkonflikten führen kann.
Engpässe entstehen durch verzögerten Zugriff . Dies ist der Natur paralleler Entwicklung geschuldet und typisch für moderne Prozesse. Beispielsweise arbeiten mehrere Teams zusammen, um neue Funktionen für den Wertstrom bereitzustellen, wie etwa voneinander abhängige Microservices. Tests können für einen Microservice nicht durchgeführt werden, da ein anderer noch nicht verfügbar ist.
Unkontrollierbare Testdaten. Obwohl Microservices relativ einfach isoliert bereitgestellt und getestet werden können, schränken ihre Abhängigkeiten von Daten oder Leistungsmerkmalen die Möglichkeiten für umfassende Tests ein. Beispielsweise kann die Nutzung von Daten in einer gemeinsam genutzten Produktionsdatenbank die Testbarkeit von Diensten einschränken.
Beginnen Sie mit der Simulation dieser Abhängigkeiten, um Ihrem Team mithilfe einer Servicevirtualisierungslösung die volle Kontrolle zu geben. Parasoft Virtualize simuliert Dienste, die außerhalb Ihrer Kontrolle liegen oder nicht verfügbar sind. Es bietet Workflows, die Folgendes ermöglichen:
Servicevirtualisierung beseitigt die Engpässe . So funktioniert es.
Aufzeichnen und simulieren: Erfassen, Modellieren und Bereitstellen von Simulationen von Live-Systemen.
Mit der Aufnahmefunktion von Parasoft SOAtest ist es möglich, das Verhalten der Anwendung in ihrer Umgebung zu erfassen. Parasoft Virtualize modelliert das Verhalten externer Abhängigkeiten und ermöglicht es, das Verhalten von Abhängigkeiten dynamisch im laufenden Betrieb zu entfernen und zu simulieren und dabei zwischen real und virtuell zu wechseln. Wenn diese Dienste und Abhängigkeiten virtuell verfügbar und stabil sind, wird der Testprozess beschleunigt und ein kontinuierliches Testen ermöglicht.
Abhängigkeiten in der Testumgebung sind Hindernisse für das Testen. Durch die Virtualisierung dieser Abhängigkeiten werden ihre Auswirkungen auf das Testen beseitigt und kontinuierliche Tests ermöglicht.
Stellen Sie zuerst einen Prototyp bereit: Modellverhalten basierend auf Vertragsbeschreibungen oder Nutzlastbeispielen.
Die Servicevirtualisierung ermöglicht die Entwicklung von Prototypen basierend auf den Vertragsbeschreibungen, die aus den API-Interaktionsaufzeichnungen und -analysen in SOAtest abgeleitet wurden.
Abhängige Dienste können mit guter Genauigkeit simuliert werden, um Prototypversionen zu erstellen, die ihre Rolle im System erfüllen, wenn ein anderer benachbarter Dienst getestet wird. Dadurch wird die mit der parallelen Entwicklung verbundene Zeitplanbeschränkung aufgehoben. Selbst wenn die Dienste nicht vollständig sind, können sie zum Testen anderer Dienste virtualisiert werden.
Der Umgebungsmanager bietet eine grafische Modellierung und Steuerung der Testumgebung. Mithilfe dieses Diagramms werden Dienste gesteuert und Virtualisierungsparameter konfiguriert.
Synthetisieren Sie private Testdaten.
Ein weiteres Hindernis beim Testen von Unternehmensanwendungen sind Testdaten. Viele Unternehmen verwenden echte Daten, dies ist jedoch mit Datenschutzbedenken behaftet. Rein synthetische Daten sind oft nicht realistisch genug, um sie zu testen, sodass ein Kompromiss erforderlich ist. Die Synthese realer Daten durch Entfernen personenbezogener Daten (PII) liefert realistische und benutzerfreundliche Daten. Die Verwaltung von Testdaten ist in Verbindung mit der Servicevirtualisierung erforderlich, um eine realistische, hochverfügbare Testumgebung bereitzustellen, die keine Datenschutzkompromisse zur Folge hat.
Durch das Entfernen der Haupthindernisse für kontinuierliche Tests können Tests nach einem regelmäßigen, vorhersehbaren Zeitplan durchgeführt werden. Es transformiert Anwendungstests, die Teams befähigen, Folgendes zu tun: