Vereinfachen Sie Compliance-Workflows mit dem neuen C/C++-Test 2024.2 und KI-gesteuerter Automatisierung | Registrierung

3 Hindernisse für kontinuierliche Tests und deren Entfernung

Parasoft-Würfel-Logo 300x300
22. April 2021
9 min lesen

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.

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:

  • Hohe Testabdeckung
  • Erhöhte Fehlerbehebung
  • Verminderte Produktionsfehler
Whitepaper: Kontinuierliches Testen für DevOps

Qualität in den Entwicklungsprozess einbauen

Qualität ist ein wichtiges Thema für Führungskräfte. Hier sind einige aufschlussreiche Ergebnisse der befragten Wirtschaftsführer:

  • 48% gaben an, dass die Qualitätsverbesserung zu den drei wichtigsten Initiativen gehört.
  • 68% suchten nach Wegen, um die Liefergeschwindigkeit und -qualität zu verbessern.

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.

Überwindung kontinuierlicher Testhindernisse

Wenn Qualität und Geschwindigkeit das Ziel sind, gibt es typischerweise drei Haupthindernisse, die überwunden werden müssen, wenn Implementieren kontinuierlicher Tests.

  • Mangel an Fachwissen. Dem Team fehlt möglicherweise die Verfügbarkeit, um neue Ansätze und Fähigkeiten zu erlernen, die zum Erlernen und Anwenden neuer Werkzeuge und Techniken erforderlich sind.
  • Instabile Ausführung. Die derzeitige Testautomatisierung in der Organisation kann instabil und unzuverlässig sein. Wenn der Code wächst, wächst auch die Ausführungszeit.
  • Nicht verfügbare Umgebung. Die Testumgebung ist häufig nicht verfügbar, nicht kontrollierbar und wird durch Systemabhängigkeiten eingeschränkt.

Die Teams müssen diese Hindernisse beseitigen, damit kontinuierliche Tests in die Entwicklungskultur einer Softwareorganisation integriert werden können.

Hindernis 1: Mangel an Fachwissen im Team

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.

Top 10 Web UI-Testtools: Automatisierte Web UI-Tests

Service-Level- oder API-Tests ist eine relativ neue, aber wertvolle Praxis. Es befindet sich jedoch in einem Niemandsland zwischen Entwicklern und Testern. Entwickler verstehen die APIs am besten, sind aber weder motiviert noch gezwungen, sie zu testen, und Testern fehlt das nötige Wissen, um API-Tests durchzuführen.

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.

So entfernen Sie: Vereinfachen Sie die Testautomatisierung

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, wartbare und verständliche Testskripte. Parasoft Selenic löst die Hauptprobleme bei der Einführung von Selen: Erstellung und Wartung von Tests. Durch Aufzeichnen von UI-Interaktionen über den Chrome-Browser werden Selenium-Testfälle basierend auf diesen Interaktionen automatisch erstellt. Darüber hinaus werden Locators mithilfe des Seitenobjektmodells aufgezeichnet, um Änderungen in der Benutzeroberfläche widerstandsfähiger zu sein. Selenic verwendet die AI-gesteuerte Selbstheilung von Tests, sodass das Tool intelligente Annahmen trifft, um zu verhindern, dass die Testfälle fehlschlagen, wenn Änderungen an der Benutzeroberfläche vorhandene Tests beschädigen.

Modellieren Sie reale API-Testszenarien, indem Sie manuelle und automatisierte UI-Interaktionen aufzeichnen. Die Übernahme von API-Tests wird durch die Möglichkeit zum Erstellen von Tests behindert. Parasoft SOAtest verwendet vorhandene UI-Tests (einschließlich von Selenic erstellter Tests), um die API-Interaktion aufzuzeichnen, die während der Ausführung der Anwendung auftritt. AI in SOAtest organisiert diese aufgezeichneten Interaktionen in erkennbaren Szenarien, die dann 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 bilden. Das Automatisierung und KI-angetrieben Entscheidungsfindung SOAtest erleichtert die Übernahme, Verwendung und Wartung von API-Tests. Darüber hinaus hilft es, die Wissenslücke beim API-Testen im Entwicklungsteam zu schließen.

Verwenden Sie vorhandene Testartefakte wieder, um Last-, Leistungs- und Sicherheitstests im Rahmen von effizient zu skalieren DevOps-Test Pipeline. Wenn das Entwicklungsteam die Testautomatisierung für die Benutzeroberflächen- und API-Ebene besser beherrscht, 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.

Das Bild zeigt den Prozessablauf und zeigt die Automatisierung für Selenium-UI-Tests, die Aufzeichnung und Erstellung von API-Tests sowie die Wiederverwendung von Assets für zukünftige Funktions-, Leistungs- und Sicherheitstests
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.

Hindernis 2: Die Ausführung von Tests ist instabil, unzuverlässig und dauert zu lange

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.

So entfernen Sie: AI-gestützte Testausführung

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.

Beschleunigen Sie das Testen mit künstlicher Intelligenz

Intelligente UI-Tests mit Selen und Selen. Mit KI, Parasoft Selenic Selbstheilungstests, wenn Änderungen an der Benutzeroberfläche erkannt werden. Diese werden automatisch verwendet, aber Empfehlungen werden an den Entwickler gesendet, um die Tests zu beheben. Diese Korrekturen können automatisch auf die Selenium-Tests angewendet werden, wodurch manuelles Debuggen und Codeänderungen entfernt werden.

Das Bild zeigt den Prozess der Verwendung von KI zur Selbstheilung von Tests, um die Testinstabilität zu verringern, bietet jedoch auch Empfehlungen und schnelle Korrekturen
Die Verwendung von KI zur Selbstheilung von Tests verringert die Testinstabilität, bietet jedoch auch Empfehlungen und schnelle Lösungen.

Planen Sie Workitem-Tests basierend auf den betroffenen Anforderungen. Um Testaktivitäten zu priorisieren, ist eine Korrelation zwischen Tests und Geschäftsanforderungen erforderlich. Das Verfolgen von User Stories und Anforderungen bietet Echtzeit-Einblick in die Qualität des Wertstroms. User Stories und Anforderungen sollten vorrangig überprüft werden. Die Rückverfolgbarkeitsfunktionen in Parasoft SOAtest werden verwendet, um die Ausführung für Tests zu planen, die Elemente validieren, an denen im Sprint gearbeitet wird. Es ist jedoch mehr erforderlich, da unklar ist, wie sich die jüngsten Änderungen auf den Code ausgewirkt haben.

Bild zeigt Geschichten (links), Tests (Mitte), Code (rechts). Die Priorisierung von Tests basierend auf betroffenen User Stories ist der erste Schritt zur Optimierung der Testausführung.
Die Priorisierung von Tests basierend auf betroffenen User Stories ist der erste Schritt zur Optimierung der Testausführung.

Verwenden Sie die Testauswirkungsanalyse, um nur zu überprüfen, was sich geändert hat. Um die Testausführung vollständig zu optimieren, müssen Sie den Code verstehen, den jeder Test abdeckt, und dann den Code ermitteln, der sich geändert hat. Parasoft-Tools bieten diese Funktion über ein zentrales Repository für Testergebnisse und Analysen. Mit der Testauswirkungsanalyse können sich Tester nur auf die Tests konzentrieren, die die Änderungen validieren.

Bild zeigt Geschichten (links), Tests (Mitte), Code (rechts). Die Testauswirkungsanalyse bestimmt, welche Tests mit dem Code korrelieren, der geändert wurde, um das Testen nur auf das zu konzentrieren, was getestet werden soll.
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.

Hindernis 3: Die Testumgebung ist nicht verfügbar, nicht kontrollierbar und wird durch Systemabhängigkeiten eingeschränkt

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.

Herausforderungen für die Testumgebung

Warten auf den Zugriff auf ein freigegebenes System, wie ein Mainframe oder eine externe Abhängigkeit, die von einem Dritten bereitgestellt wird. Die Verfügbarkeit kann zeitlich begrenzt und kostspielig sein. Es ist auch eine Herausforderung, wenn die externe Abhängigkeit stark mit mehreren Personen belastet ist, die gleichzeitig daran arbeiten, was zu einer Testinstabilität aufgrund von Datenkollisionen führt.

Engpässe durch verzögerten Zugriff. Dies liegt an der Natur der parallelen Entwicklung und ist typisch für moderne Prozesse. Beispielsweise arbeiten mehrere Teams zusammen, um dem Wertstrom neue Funktionen bereitzustellen, z. B. voneinander abhängige Mikrodienste. Das Testen kann nicht für einen Microservice fortgesetzt werden, da ein anderer noch nicht verfügbar ist.

Unkontrollierbare Testdaten. Obwohl Microservices relativ einfach isoliert bereitzustellen und zu testen sind, schränken ihre Abhängigkeiten von Daten oder Leistungsmerkmalen die Fähigkeit ein, sie gründlich zu testen. Beispielsweise kann die Abhängigkeit von Daten in einer gemeinsam genutzten Produktionsdatenbank die Möglichkeit zum Testen von Diensten einschränken.

Entfernen: Steuern Sie die Testumgebung

Beginnen Sie mit der Simulation dieser Abhängigkeiten, um dem Team mithilfe einer Service-Virtualisierungslösung die volle Kontrolle zu geben. Parasoft Virtualisieren simuliert Dienste, die außerhalb Ihrer Kontrolle liegen oder nicht verfügbar sind. Es bietet Workflows, die:

  • Ermöglichen Sie Benutzern den Zugriff auf vollständige und realistische Testumgebungen.
  • Stabilisieren Sie ihre Testumgebung.
  • Erhalten Sie Zugriff auf ansonsten unzugängliche Abhängigkeiten.
  • Verwalten Sie die komplexe Geschäftslogik, Testdaten und Leistungsmerkmale, die erforderlich sind, damit sich virtuelle Services in der von ihnen dargestellten realen Umgebung wie reale Services verhalten.

Service-Virtualisierung beseitigt die Engpässe. Hier ist wie.

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.

Bilder, die Abhängigkeiten in der Testumgebung zeigen, sind Hindernisse für das Testen.
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.

Whitepaper: Einführung und Skalierung von Service-Virtualisierung

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.

Screenshot mit grafischer Modellierung, Abbildung und Steuerung einer Testumgebung.
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.

Die Vorteile kontinuierlicher Tests

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:

  • Früher testen. Wechseln Sie nach links zum Sprint-Test, wo das Problem schneller, billiger und einfacher zu beheben ist.
  • Schneller testen. Automatisieren und kontinuierlich ausführen, um sofortiges Feedback zu erhalten, wenn Fehler auftreten.
  • Weniger testen. Konzentrieren Sie sich und verbringen Sie weniger Zeit mit dem Erstellen, Verwalten und Ausführen von Testszenarien. Reduzieren Sie die Kosten für die Testinfrastruktur.
Erfahren Sie, wie Ihr Team kontinuierliche Tests implementieren kann, um Fehler früher zu erkennen, Risiken zu reduzieren und qualitativ hochwertige Software bereitzustellen.