Empfohlenes Webinar: MISRA C++ 2023: Alles, was Sie wissen müssen | Zum Video

Was ist ein „umgebungsbasierter“ Ansatz für Softwaretests?

Parasoft-Würfel-Logo 300x300
2. November 2023
8 min lesen

Was ist umgebungsbasiertes Testen und warum ist es beim Softwaretesten wichtig? Hier finden Sie eine ausführliche Behandlung des Themas und einige der Vorteile eines umgebungsbasierten Testansatzes.

Das isolierte Testen von Anwendungen und Diensten bringt Sie nur bedingt weiter und schließlich müssen Sie die Tests in einer Betriebsumgebung durchführen. Der „umgebungsbasierte“ Testansatz von Parasoft ermöglicht es Teams, ihre Anwendungen im Kontext aller Abhängigkeiten zu testen, die in der realen Umgebung bestehen.

Oft betrachten Tester und Entwickler ihre Bereitstellungsumgebung und ihre Komponenten individuell und testen diese Teile isoliert. Dies funktioniert bis zu einem gewissen Grad, testet jedoch nicht genug des Systems. Eine andere Version davon ist das Testen auf der Ebene der Benutzeroberfläche an einem Punkt, an dem die Hauptursachen für Fehler schwer zu diagnostizieren sind. Auf dem Mittelweg können Anwendungen in einer möglichst realistischen Umgebung mit virtuellen Diensten getestet werden, um Abhängigkeiten nachzuahmen, die zum Testen nicht verfügbar oder konsistent genug sind. Wenn mehr Abhängigkeiten online gehen, können Sie von virtualisierten Diensten zu Live-Versionen wechseln.

Bei Parasoft nennen wir dies einen „umgebungsbasierten“ Testansatz, der es dem gesamten Team ermöglicht, seine Anwendung im vollständigen Kontext der realen Umgebung zu testen. Tests werden je nach Bedarf in einer Live-, teilweise virtualisierten oder vollständig virtualisierten Umgebung bereitgestellt. Der umgebungsbasierte Testansatz bietet eine stabilisierte Plattform für die Testausführung.

Umweltbasierte Tests

Der umgebungsbasierte Testansatz bietet mehr Kontext, um besser zu verstehen, wie sich Abhängigkeiten auf die Anwendung während des UI-Tests auswirken, und hilft dem Team, durch die Erstellung von API- und Datenbanktests für die abhängigen Komponenten auf die nächste Ebene vorzudringen. Auf diese Weise können Sie eine umfassendere Testabdeckung für Ihre Anwendung erreichen und Tests von der Benutzeroberfläche entkoppeln, sodass beide zusammen oder unabhängig voneinander ausgeführt werden können. Testfehler werden in der Umgebung hervorgehoben, was die Lokalisierung von Fehlern erleichtert.

Einige zusätzliche Vorteile, die mit einem umweltbasierten Testansatz verbunden sind, sind:

  • Verschiebungstests durch Testen der Anwendung in der Produktionsumgebung so schnell wie möglich. Möglich wird dies durch Dienstvirtualisierung, die Erstellung virtueller Dienste und die anschließende Übertragung auf Live-Dienste, sobald diese verfügbar und stabil sind.
  • Reduzieren Sie die Zeit und den Aufwand für die Diagnose von Testfehlern indem Sie genau bestimmen, wo und warum Tests fehlgeschlagen sind.
  • Einfache Erweiterung des Testens von UI-Tests auf API-Tests, die im Kontext der Umgebung sowie als Teil einer CI / CD-Pipeline konfigurierbar ist.
  • Erhöhung der Testabdeckung indem Szenarien erstellt werden, die nicht durch UI-Tests allein implementiert werden könnten.

Diese Vorteile verringern den Gesamtaufwand für Tester beim Einrichten, Ausführen und Diagnostizieren von Anwendungstests, erhöhen gleichzeitig die Testabdeckung und ermöglichen eine frühere und umfassendere Durchführung von Tests.

Arten von Testumgebungen

Wie viele Tester wissen, ist eine Testumgebung lediglich eine kontrollierte Struktur, die es Systemen und Software ermöglicht, Tests auf Zuverlässigkeit, Funktionalität und Kompatibilität durchzuführen. Diese simulieren in der Regel reale Szenarien und Bedingungen, um potenzielle Fehler oder Verstöße vor der Bereitstellung zu beheben. Daher kann jede Testumgebung auf die Art der Tests und Ergebnisse zugeschnitten werden, die ein Team wünscht.

Eine browserübergreifende Testumgebung ist ein perfektes Beispiel für eine Testumgebung zum Testen auf verschiedenen Browsern und Browserversionen. Testteams nutzen die Umgebung, um die Qualität und Auswirkung der Anwendung zu überprüfen, bevor Benutzer mit ihr interagieren.

Es gibt mehrere wichtige Arten von Testumgebungen, darunter:

  • Performance Testumgebungen für die Leistung überprüfen, ob ein System wie erwartet funktioniert und die Leistungsziele erfüllt. Dazu können Reaktionszeit, Parallelität, Stabilität und mehr gehören. Diese Art von Tests kann aufgrund der großen Unterschiede in den Systemen (RAM-Größe, Anzahl der Benutzer, CPU-Kerne usw.) komplex sein und erfordert eine sorgfältige Einrichtung.
  • Security. Bei dieser Art von Umgebung steht die Softwaresicherheit im Vordergrund. Es wird auf Schwachstellen in Bezug auf Authentifizierung, Autorisierung, Vertraulichkeit und Integrität getestet.
  • Integration. In dieser Umgebung wird die Integration von Softwaremodulen getestet, um das Verhalten zu überprüfen oder zu überwachen. Damit können ein oder mehrere Module zum Funktionstest implementiert werden.
  • Chaos. Ziel dieser gezielten Umgebung ist es, bestimmte Bereiche zu identifizieren, die Ausfallrisiken darstellen, und diese zu beheben, bevor die Endbenutzer darauf stoßen.

Einrichtung der Testumgebung: Best Practices und Überlegungen

Beim Erstellen einer guten Testumgebung geht es nicht nur darum, realistische Szenarien zu verwenden. Es umfasst alles von der Betrachtung von Randfällen über den Schutz der Datensicherheit bis hin zur Nachahmung oder Nutzung realer Informationen. Obwohl jedes Team unterschiedliche Ziele und Anforderungen hat, können bestimmte Best Practices befolgt werden, um die beste Testumgebung für Ihr Projekt sicherzustellen.

Was ist eine gute Testumgebung?

Eine gute Testumgebung ähnelt der Live-Produktionsumgebung, in der die Software oder das System sehr gut funktionieren wird. Es muss den gleichen Code, das gleiche Betriebssystem, die gleichen Daten, die gleiche Funktionalität und die gleiche Konfiguration verwenden.

Zu den Schlüsselfaktoren für die Schaffung einer guten Testumgebung gehören die folgenden:

  • Ihre Daten. Nutzen Sie hochwertige, realistische Daten, die auch Randfälle umfassen, um zu testen, ob die Software oder das System wie erwartet funktioniert.
  • Design Fügen Sie zum Testen ein Beispiel für die Anwendung oder die gesamte Anwendung bei.
  • Automatisierung. Nutzen Sie die Automatisierung, um bestimmte Belastungen zu verringern, bestimmte Prozesse zu stärken und umsetzbare Daten abzurufen.
  • Security. Gewährleisten Sie die Sicherheit des Tests und seiner Daten.
  • Verwaltung. Bedenken Sie, dass kontinuierliche Tests langfristig durchgeführt werden müssen, und stellen Sie sicher, dass die Testumgebung dafür eingerichtet ist.

Best Practices für Testumgebungen

Zusätzlich zu den oben genannten mechanischen Grundsätzen basieren Testumgebungen auch auf allgemeinen immateriellen Richtlinien.

  1. Befolgen Sie eine Softwaretestmethodik.
  2. Behandeln Sie Tests als Teil des Bereitstellungsprozesses.
  3. Integrieren Sie die Kommunikation in die Testumgebung.
  4. Testressourcen und -umgebungen recyceln oder wiederverwenden.
  5. Testen Sie früh, häufig und kontinuierlich.
  6. Nehmen Sie eine Feature-Management-Denkweise an, damit Sie einzelne Features statt der gesamten Codebasis testen können.

Testumgebungsmanagement

Die Verwaltung Ihrer Testumgebungen kann große Kopfschmerzen bereiten oder sich als unverzichtbarer Teil Ihres SDLC erweisen, der unschätzbar wertvolle Informationen und Daten bereitstellt. Der Schlüssel liegt in der Art und Weise, wie Sie dieses Management angehen. Indem Sie einen Teil der Arbeit und Organisation von vornherein übernehmen, können Sie eine einfacher zu wartende Einrichtung schaffen und dennoch von den Vorteilen häufiger Tests profitieren.

Verlassen Sie sich auf Vertrauen und Transparenz

Behandeln Sie die Leute in den Entwicklungsteams vom erfahrensten Entwickler bis zum frischgebackenen QS-Tester als wichtige Mitglieder des Projekts. Die Nutzung einer einzigen Quelle oder einer goldenen Kopie für Umgebungen und Bereitstellungen, die für jedermann im Rahmen des Zumutbaren zugänglich ist, fördert eine Umgebung, in der die Kommunikation offen, gefördert und konstruktiv ist.

Dokumentieren und verfolgen Sie den Prozess

Die Verwaltung der Wissensdatenbank – sei es mit Confluence, JIRA oder anderen Tools – trägt dazu bei, Missverständnisse zu vermeiden und Telefonspiele zu reduzieren. Teammitglieder können in der Dokumentation nach grundlegenden Informationen suchen, Änderungen nachverfolgen, sehen, wer woran gearbeitet hat und mehr.

Informationen verfügbar machen

Zusammen mit den oben genannten Grundsätzen trägt die Bereitstellung dieser Informationen für Stakeholder zusätzlich zur Aufrechterhaltung von Testumgebungen bei. Dies gilt jedoch auch für Dinge wie Bereitstellungspläne, Ausfallpläne und andere Aspekte der Entwicklung.

Vermeiden Sie manuelle Updates

Menschen machen Fehler. Es ist eine Tatsache. Manuelle Aktualisierungen unterliegen dieser Realität. Daher kann die Integration der Testumgebungsverwaltung in die von Ihnen verwendete Toolchain dazu beitragen, manuelle Fehler zu reduzieren.

Nutzen Sie Virtualisierung

Es ist ein Muss, mit den von Ihren Testfällen generierten Daten interagieren zu können. Noch besser ist es, dies auf eine schlanke und einfache Weise tun zu können. Mit der Virtualisierung können Sie Snapshots erstellen, Ihre Umgebung durchgängig replizieren und vieles mehr. Tatsächlich hat Parasoft ein eigenes Branchenführende Service-Virtualisierung Lösung nur für diesen Zweck.

Überprüfen Sie Daten und Leistung

Das scheint vielleicht nicht unbedingt erwähnenswert zu sein, aber die Verfolgung von KPIs wie der Anzahl ungeplanter Dienstunterbrechungen, der Umgebungsverfügbarkeit und anderen Variablen kann Ihnen dabei helfen, Ihre Testumgebungen zu verbessern. Überprüfen Sie die Daten nach umfangreichen Testzyklen, um zu sehen, was funktioniert, was geändert werden muss und wie die Ressourcen zugewiesen sind oder anders sein könnten.

Umgebungsbasiertes Testen in Aktion mit Parasoft SOAtest

Schauen wir uns das also in Aktion an. Parasoft SOAtest stellt einen Umgebungsmanager bereit, der die Ausführungsumgebung für die zu testende Anwendung visuell anzeigt. Unten sehen Sie ein Beispiel einer Anwendung in ihrer Umgebung, verbunden mit Abhängigkeiten. Jede Komponente in der Umgebung kann je nach Bedarf live oder virtualisiert bereitgestellt werden, abhängig von der Stabilität und Verfügbarkeit dieser Komponenten.

Screenshot mit Parasoft SOAtest Environment Manager.

Bereitstellungsvoreinstellungen konfigurieren die Umgebung basierend auf aktuellen Testanforderungen. Unterschiedliche Szenariokategorien erfordern möglicherweise unterschiedliche Voreinstellungen. Diese Voreinstellungen enthalten alle erforderlichen Einstellungen für den Environment Manager:

Screenshot der Voreinstellungen im Environment Manager von SOAtest.

 

 

 

 

 

 

 

 

 

Einmal Testumgebung wird bereitgestelltwird eine Reihe von API- und UI-Interaktionen für die zu testende Anwendung ausgeführt. Die Ergebnisse werden erfasst, aufgezeichnet und mit den erwarteten Ergebnissen in der IDE und im Parasoft-Webportal verglichen, wo das Environment Manager-Dienstprogramm als Drehscheibe für Funktionstests fungiert.

Fehler werden im Environment Manager hervorgehoben und es ist möglich, Fehlerberichte von dort aus in einem detaillierteren Bericht zu verfolgen.

Screenshot mit Benachrichtigung über zwei fehlgeschlagene Tests im Environment Manager von SOAtest.

 

 

 

 

 

 

Die generierten API-Testberichte geben sowohl Fehler als auch Informationen zur Testabdeckung an. Fehler bedeuten, dass neue Funktionen fehlerhaft sind oder dass bei einem Test ein Problem vorliegt. Die Grundursache dieser Fehler kann vom Fehler hier bis zur entsprechenden API zurückverfolgt werden. Informationen zur Testabdeckung sind wichtig, da sie auf fehlende Tests und möglicherweise die Auslieferung von ungetestetem Code hinweisen.

Parasoft SOAtest-Screenshot mit einer Liste der Details zur API-Testabdeckung.

Die Rolle der Service-Virtualisierung

Fehler entstehen auch durch fehlende Abhängigkeiten. Das ist wo die Servicevirtualisierung ins Spiel kommt. Es ist oft nicht möglich, Live-Abhängigkeiten zum Testen zur Verfügung zu haben, vielleicht weil sie noch nicht bereit sind oder es schwierig und zeitaufwändig ist, sie aus der Produktionsumgebung zu duplizieren. Um jedoch qualitativ hochwertige Anwendungen innerhalb der Zeit- und Budgetvorgaben sicherzustellen, ist es wichtig, uneingeschränkten Zugriff auf eine vertrauenswürdige und realistische Testumgebung zu haben, die die zu testende Anwendung und alle ihre abhängigen Komponenten wie APIs, Dienste von Drittanbietern, Datenbanken und Anwendungen umfasst und andere Endpunkte.

Screenshot mit Benachrichtigung über einen fehlgeschlagenen Test, wobei der reale Endpunkt im Environment Manager von SOAtest derzeit offline ist.

 

 

 

 

 

Servicevirtualisierung ermöglicht es Softwareteams Erhalten Sie Zugriff auf eine vollständige Testumgebung, einschließlich aller kritischen abhängigen Systemkomponenten, und ändern Sie das Verhalten dieser abhängigen Komponenten auf eine Weise, die mit einer abgestuften Testumgebung nicht möglich wäre, sodass Sie früher, schneller und vollständiger testen können. Es ermöglicht Ihnen auch, verschiedene Ebenen der Anwendung zum Debuggen und Leistungstesten zu isolieren, aber darauf werden wir hier nicht so ausführlich eingehen.

Einzelne Dienste können live oder virtualisiert konfiguriert werden. Bereitstellungskonfigurationen, bei denen es sich um Kombinationen aus aktiven und virtualisierten Abhängigkeiten handelt, können als Voreinstellungen gespeichert werden.

Integration mit CI/CD-Pipelines

Beispiele für manuelle Tests sind interessant, aber die eigentliche Arbeit findet in einer kontinuierlichen Integrationspipeline statt. Die dynamischen Testumgebungen von Parasoft können von Jenkins aus als Teil einer kontinuierlichen Integrations-/Bereitstellungspipeline bereitgestellt werden. Das folgende Beispiel zeigt „Deploy Dynamic Environment“ als Jenkins-Build.

Screenshot von Parasoft SOAtest, der zeigt, dass dynamische Testumgebungen von Jenkins als Teil einer kontinuierlichen Integrations-/Bereitstellungspipeline bereitgestellt werden können. Das Beispiel zeigt „Deploy Dynamic Environment“ als Jenkins-Build.

Mit dem Parasoft Jenkins-Plugin werden Build-Schritte hinzugefügt, um Testsuiten aus dem Build bereitzustellen. Die Ergebnisse werden erfasst und mit dem Environment Manager verknüpft.

Es können Buildschritte für das Parasoft Jenkins-Plugin hinzugefügt werden, um Testsuiten aus dem Build bereitzustellen. Der Screenshot zeigt die erfassten und mit dem Environment Manager verknüpften Ergebnisse.

Nach Abschluss des Builds werden die Testergebnisse in Jenkins angezeigt. Fehler sind direkt mit dem Umgebungsmanager und dem Bereitstellungsszenario verknüpft.

Zusammenfassung

Indem Softwaretester zunächst die Betriebsumgebung berücksichtigen und einen umgebungsbasierten Testansatz nutzen, können sie sicherstellen, dass alles vorhanden ist, um Tests produktiv und effizient zu gestalten. Anstatt Zeit damit zu verbringen, Anwendungen isoliert oder in einer pseudorealistischen Umgebung zu testen, können Tester mehr Zeit mit dem eigentlichen Testen selbst verbringen.

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