quality assurance

Qualitätssicherung, Quality Assurance und Tests – die Grundlagen des Softwarequalitätsmanagements

Stefan
50 Min Read
quality assurance

Wenn Sie eine Birne kaufen, können Sie ihre Qualität sofort beurteilen: Größe und Form, Reife und das Fehlen sichtbarer Druckstellen. Aber erst beim ersten Bissen werden Sie verstehen, ob die Frucht so gut ist. Selbst eine schöne Birne kann sauer schmecken oder einen Wurm haben quality assurance.

Das Gleiche gilt für fast jedes Produkt, sei es physisch oder digital. Eine Website, die Sie im Internet finden, mag auf den ersten Blick in Ordnung erscheinen, aber wenn Sie nach unten scrollen, auf eine andere Seite gehen oder eine Kontaktanfrage senden, können sich Designmängel und Fehler zeigen.

Doch ein Misserfolg richtet nicht so viel Schaden an wie ein selbstfahrendes Auto mit minderwertiger Autopilot-Software. Ein einziger Fehler in einem EHR-System  kann das Leben eines Patienten gefährden. Gleichzeitig können Leistungsprobleme bei der Website den Eigentümer Millionen von Dollar an Einnahmen kosten.

Deshalb legen wir bei AltexSoft höchsten Wert auf die Qualität der Software, die wir für unsere Kunden entwickeln. In diesem Dokument teilen wir unsere Erkenntnisse zum quality assurance und Testprozess, zu Best Practices und bevorzugten Strategien.

1. Software-Qualitätssicherung vs. quality assurance vs. Testen

Irren ist zwar menschlich, aber manchmal können die Kosten eines Fehlers einfach zu hoch sein. Die Geschichte kennt viele Situationen , in denen Softwarefehler Milliardenverluste verursachten oder sogar zu Opfern führten: von Starbucks-Cafés, die wegen einer Kassenstörung gezwungen waren, kostenlose Getränke auszugeben, bis hin zum F-35-Kampfjet, der aufgrund eines Radarfehlers seine Ziele nicht erkennen konnte. 

Das Konzept der Softwarequalität wird eingeführt, um sicherzustellen, dass das veröffentlichte Programm sicher ist und wie erwartet funktioniert. Es kann definiert werden als „die Fähigkeit eines Softwareprodukts, unter bestimmten Bedingungen die angegebenen und impliziten Anforderungen zu erfüllen. Darüber hinaus bezieht sich Qualität auf den Grad, in dem ein Produkt seine angegebenen Anforderungen erfüllt.“

Qualitätssicherung (QA) , quality assurance (QC) und  QA-Softwaretests sind drei Aspekte des Qualitätsmanagements, die sicherstellen sollen, dass ein Programm wie vorgesehen funktioniert. Die drei Begriffe werden oft synonym verwendet, decken unterschiedliche Prozesse ab und unterscheiden sich in ihrem Umfang, haben jedoch dasselbe Ziel: die Bereitstellung des bestmöglichen digitalen Produkts bzw. Dienstes.

Was ist Qualitätssicherung?

Qualitätssicherung ist ein weit gefasster Begriff, der im Google Testing Blog wie folgt erklärt wird :  „ Die kontinuierliche und konsequente Verbesserung und Aufrechterhaltung von Prozessen, die … uns die Gewissheit geben, dass das Produkt die Bedürfnisse der Kunden erfüllt .“ QA konzentriert sich auf die organisatorischen Aspekte des Qualitätsmanagements und zielt darauf ab, den gesamten Produktentwicklungszyklus von der Anforderungsanalyse bis hin zur Markteinführung und Wartung zu verbessern. 

Die Qualitätssicherung spielt eine entscheidende Rolle bei der frühzeitigen Erkennung und Vermeidung von Produktfehlern. Zu ihren wichtigsten Aktivitäten gehören

  • Festlegung von Qualitätsstandards und -verfahren,
  • Erstellen von Leitlinien für den gesamten Entwicklungsprozess,
  • Durchführen von Messungen,
  • Überprüfen und Ändern von Arbeitsabläufen, um sie zu verbessern.

An der Qualitätssicherung sind externe Stakeholder  und eine breite Palette interner Spezialisten beteiligt, darunter Business-Analysten  (BAs), QA-Ingenieure und Softwareentwickler. Ihr oberstes Ziel ist es, eine Umgebung zu schaffen, die die Produktion qualitativ hochwertiger Produkte gewährleistet und so Vertrauen bei den Kunden schafft. 

Was ist quality assurance

Die quality assurance ist ein Teil des Qualitätsmanagements, der die Konformität des Produkts mit den von der Qualitätssicherung festgelegten Standards überprüft. Investopedia  definiert sie als „ Prozess, durch den ein Unternehmen sicherstellen möchte, dass die Produktqualität erhalten bleibt oder verbessert wird und Herstellungsfehler reduziert oder eliminiert werden.

Während QA-Aktivitäten darauf abzielen, Probleme während des gesamten Entwicklungsprozesses zu vermeiden, geht es bei QC darum, Fehler in der gebrauchsfertigen Software zu erkennen und ihre Übereinstimmung mit den Anforderungen vor der Produkteinführung zu überprüfen . Dazu gehören Codeüberprüfungen und Testaktivitäten, die vom Entwicklungsteam durchgeführt werden.

Was ist Softwaretesten?

Beim Testen  handelt es sich in erster Linie um die Erkennung und Lösung technischer Probleme im Software-Quellcode sowie um die Bewertung der allgemeinen Benutzerfreundlichkeit, Leistung, Sicherheit und Kompatibilität des Produkts. Der Fokus liegt eng und wird von Testingenieuren parallel zum Entwicklungsprozess oder in der dedizierten Testphase durchgeführt (je nach methodischem Ansatz für den Softwareentwicklungszyklus).

Im Automobilbau bedeutet ein ordnungsgemäßer quality assurance prozess, dass jedes Teammitglied die Anforderungen versteht und seine Arbeit gemäß den allgemein anerkannten Richtlinien ausführt. Er stellt sicher, dass die Aktionen in der richtigen Reihenfolge ausgeführt werden, die Details ordnungsgemäß umgesetzt werden und der Gesamtablauf konsistent ist, sodass das Endprodukt nicht beschädigt werden kann.

Quality assurance  ist so, als würde ein leitender Manager in eine Produktionsabteilung gehen und ein beliebiges Auto für eine Untersuchung und Probefahrt auswählen. In diesem Fall beziehen sich Testaktivitäten  auf die separate Überprüfung jeder Verbindung und jedes Mechanismus sowie die Durchführung von Crashtests, Leistungstests und tatsächlichen oder simulierten Probefahrten.

Aufgrund ihres praktischen Ansatzes bleiben  Softwaretests  Gegenstand hitziger Diskussionen. Deshalb werden wir uns hauptsächlich auf diesen Aspekt des Softwarequalitätsmanagements konzentrieren. Doch bevor wir ins Detail gehen, definieren wir die wichtigsten Prinzipien des Softwaretests.

2. Grundsätze des Softwaretests

Die sieben Prinzipien des Softwaretests wurden in den letzten 40 Jahren formuliert und  stellen die Grundregeln für den Prozess dar. 

Beim Testen werden Fehler aufgezeigt. Ziel des Testens ist es, die Mängel einer Software zu erkennen. Doch egal, wie sehr Sie sich auch bemühen, Sie werden nie hundertprozentig sicher sein können, dass keine Mängel vorliegen. Durch das Testen kann lediglich die Anzahl nicht gefundener Probleme verringert werden.

Ausführliche Tests sind unmöglich. Es gibt keine Möglichkeit, alle Kombinationen von Dateneingaben, Szenarien und Vorbedingungen innerhalb einer Anwendung zu testen. Wenn beispielsweise ein einzelner App-Bildschirm zehn Eingabefelder mit jeweils drei möglichen Wertoptionen enthält, müssen Testingenieure 59.049 (310) Szenarien erstellen, um alle möglichen Kombinationen abzudecken. Und was, wenn die App mehr als 50 solcher Bildschirme enthält? Konzentrieren Sie sich auf häufigere Szenarien, um nicht wochenlang Millionen weniger möglicher Szenarien zu erstellen.

Frühes Testen. Wie oben erwähnt, steigen die Kosten eines Fehlers in allen Phasen des Softwareentwicklungszyklus ( SDLC ) exponentiell an . Daher ist es wichtig, so früh wie möglich mit dem Testen des Codes zu beginnen, um Probleme zu lösen und nicht zu einer Lawine zu führen.

Fehlerclusterung. Die Fehlerclusterung wird oft als Anwendung des Pareto-Prinzips  auf Softwaretests bezeichnet und bedeutet, dass etwa 80 Prozent aller Fehler normalerweise nur in 20 Prozent der Systemmodule gefunden werden. Wenn Sie einen Fehler in einer bestimmten Komponente finden, kann es auch noch andere geben. Daher ist es sinnvoll, diesen Bereich des Produkts gründlich zu testen. 

Pestizid-Paradoxon. Wenn Sie immer wieder die gleichen Tests durchführen, werden Sie keine weiteren Probleme finden. Sobald Sie die erkannten Fehler beheben, sind die vorherigen Szenarien nutzlos. Überprüfen und aktualisieren Sie sie regelmäßig, um versteckte Fehler zu erkennen.

Das Testen ist kontextabhängig. Testen Sie Anwendungen  je nach Branche oder Ziel unterschiedlich. Während Sicherheit für ein Fintech-Produkt von größter Bedeutung sein kann, ist sie für eine Unternehmenswebsite weniger wichtig, da hier Benutzerfreundlichkeit und Geschwindigkeit im Vordergrund stehen.

Irrtum der Fehlerfreiheit. Die Abwesenheit von Fehlern führt nicht unbedingt zum Erfolg eines Produkts. Egal, wie viel Zeit Sie in die Verfeinerung des Codes investiert haben, die Software wird scheitern, wenn sie die Erwartungen der Benutzer nicht erfüllt quality assurance.

Einige Quellen  weisen neben den grundlegenden Prinzipien auch auf andere Prinzipien hin:

  • Die Tests müssen ein unabhängiger Prozess sein, der von unvoreingenommenen Fachleuten durchgeführt wird.
  • Testen Sie auf ungültige und unerwartete sowie auf gültige und erwartete Eingabewerte.
  • Führen Sie Tests nur mit einer statischen Software durch (Sie sollten während des Testvorgangs keine Änderungen vornehmen).
  • Definieren Sie die erwarteten Testergebnisse anhand einer umfassenden und umfassenden Dokumentation.

Dennoch bleiben die oben aufgeführten sieben Punkte unumstrittene Richtlinien für jeden Softwaretest-Profi.  

3. Wann  Tests im Softwareentwicklungszyklus stattfinden

Wie oben erwähnt, werden Tests in der entsprechenden Phase des Softwareentwicklungszyklus oder parallel zum Engineering-Prozess durchgeführt – dies hängt von der Projektmanagementmethode ab, an die sich Ihr Team hält.

3.1. Wasserfallmodell

Das Wasserfallmodell stellt einen traditionellen Softwareentwicklungslebenszyklus dar und  umfasst sechs aufeinanderfolgende Phasen: Erfassung und Analyse der Anforderungen, Systementwurf, Entwicklung, Test, Bereitstellung und Wartung. 

In der Testphase wird ein bereits entworfenes und programmiertes Produkt vor der Veröffentlichung gründlich validiert. Die Praxis zeigt jedoch, dass die Behebung von in dieser Phase erkannten Softwarefehlern und -defekten zu teuer sein kann, da die Kosten eines Fehlers im Laufe des Softwareentwicklungsprozesses tendenziell steigen.

Es ist viel günstiger, Fehler in früheren Phasen zu beheben. Wenn sie beispielsweise während des Entwurfs nicht erkannt werden, wächst der Schaden in den weiteren Phasen exponentiell. In der Entwicklungsphase werden ungelöste Fehler in den Anwendungskern eingebettet und können die Funktion des Produkts beeinträchtigen. Entscheidende Änderungen an der Programmstruktur nach dem Testen oder insbesondere nach der Veröffentlichung erfordern erheblichen Aufwand und Investitionen, ganz zu schweigen von den Reputationsverlusten, die eine fehlerhafte App verursachen kann.

Daher ist es besser, jede Software zu testen, während das Produkt noch erstellt wird. Hier erweisen sich iterative Agile-Methoden  als vorteilhaft. 

3.2. Agiles Testen

Agile unterteilt den Entwicklungsprozess in kleinere Teile, sogenannte Iterationen  oder Sprints. So können Tester parallel mit dem Rest des Teams arbeiten und Fehler sofort beheben, wenn sie auftreten. 

Dieser Ansatz ist weniger kostenintensiv: Die Fehler frühzeitig im Entwicklungsprozess zu beheben, bevor sich weitere Probleme anhäufen, ist deutlich günstiger und erfordert weniger Aufwand. Darüber hinaus beschleunigen eine effiziente Kommunikation im Team und eine aktive Einbindung der Stakeholder den Prozess und ermöglichen besser informierte Entscheidungen.

Weitere Informationen zu Rollen und Verantwortlichkeiten in einem Testteam finden Sie  in unserem speziellen Artikel. 

Beim Agile-Testansatz geht es darum, eine QA-Praxis aufzubauen, anstatt ein QA-Team zu haben. Amir Ghahrai, Senior Test Consultant bei Amido, kommentiert dies wie folgt : „ Durch den Aufbau eines QA-Teams laufen wir Gefahr, die Tester von wichtigen Gesprächen mit den Produktbesitzern, Entwicklern usw. abzukoppeln. In Agile-Projekten sollte die QA in die Scrum-Teams eingebettet werden, da Tests und quality assurance kein nachträglicher Einfall sind. quality assurance sollte von Anfang an fester Bestandteil sein .“

3.3. DevOps-Tests

Für diejenigen, die Agile-Erfahrung haben, wird DevOps  allmählich zur gängigen Praxis. Diese Softwareentwicklungsmethode erfordert ein hohes Maß an Koordination zwischen verschiedenen Funktionen der Lieferkette, nämlich Entwicklung, quality assurance ssicherung und Betrieb. 

DevOps ist eine Weiterentwicklung von Agile, die die Lücke zwischen Entwicklung, quality assurance ssicherung und Betrieb schließt. Es umfasst das Konzept der kontinuierlichen Entwicklung, das wiederum kontinuierliche Integration und Bereitstellung  (CI/CD), kontinuierliches Testen und kontinuierliche Bereitstellung umfasst. DevOps legt großen Wert auf Automatisierung und CI/CD-Tools , die eine schnelle Bereitstellung von Anwendungen und Diensten ermöglichen. 

Die Tatsache, dass in jeder Phase des DevOps-Modells Tests stattfinden, verändert die Rolle der Tester und die allgemeine Idee des Testens. Um ihre Aktivitäten effektiv ausführen zu können, wird von Testern daher heute erwartet, dass sie sich mit Code auskennen.

Laut der State of Testing-Umfrage 2023 ist Agile unter allen Ansätzen unangefochtener Spitzenreiter: Fast 91 Prozent der Befragten arbeiten in ihren Organisationen zumindest an einigen Agile-Projekten. DevOps belegt den zweiten Platz und wird in 50 Prozent der Organisationen akzeptiert. Unterdessen praktizieren 23 Prozent der Unternehmen immer noch das Waterfall-Modell.

4. Lebenszyklus des Softwaretests

Der Softwaretest-Lebenszyklus (STLC) ist eine Reihe von Aktivitäten, die innerhalb des Softwareentwicklungslebenszyklus oder parallel zu den SDLC-Phasen durchgeführt werden .  Er besteht normalerweise aus sechs verschiedenen Phasen: Anforderungsanalyse, Testplanung, Testfallentwicklung, Umgebungseinrichtung, Testausführung und Testabschluss . Jede Phase ist mit bestimmten Aktivitäten und Ergebnissen verknüpft.

4.1. Analyse der Softwaretestanforderungen

In dieser Phase überprüft ein QA-Team die Softwareanforderungsspezifikationen  aus einer Testperspektive und kommuniziert mit verschiedenen Stakeholdern, um zusätzliche Details zu sammeln und Testprioritäten zu identifizieren. Basierend auf den gewonnenen Informationen entscheiden Experten über Testmethoden, -techniken und -typen und führen eine Machbarkeitsstudie zur Automatisierung durch  , um zu verstehen, welche Prozesse automatisiert werden können und mit welchen Tools.

Ein wichtiges Dokument, das in der Anfangsphase erstellt wird, ist eine Anforderungsverfolgbarkeitsmatrix (RTM) . Dabei handelt es sich im Wesentlichen um eine Checkliste, die Testaktivitäten erfasst und Anforderungen mit zugehörigen Testfällen verknüpft.

4 .2 Versuchsplanung

Wie bei jedem anderen formalen Prozess gehen Testaktivitäten normalerweise gründliche Vorbereitungen und Planungen voraus. Das Hauptziel besteht darin, sicherzustellen, dass das Team die Kundenziele, den Hauptzweck des Produkts, die möglichen Risiken und die erwarteten Ergebnisse versteht. Eines der in dieser Phase erstellten Dokumente, die Testmission oder -aufgabe , hilft dabei, die Testaktivitäten auf den Gesamtzweck des Produkts auszurichten und die Testbemühungen mit der übrigen Arbeit des Teams zu koordinieren.

  • Teststrategie

Die Teststrategie, auch Testansatz oder -architektur genannt, ist ein weiteres Ergebnis der Planungsphase. James Bach, ein Testguru, der den Kurs „Rapid Software Testing“ entwickelt hat , definiert  den Zweck einer Teststrategie als „ das Verdeutlichen der Hauptaufgaben und Herausforderungen des Testprojekts “. Eine gute Teststrategie ist seiner Meinung nach produktspezifisch, praktisch und gerechtfertigt. 

Roger S. Pressman, ein professioneller Softwareentwickler, bekannter Autor und Berater, erklärt : „ Die Strategie für Softwaretests bietet einen Fahrplan, der die im Rahmen des Tests durchzuführenden Schritte beschreibt, wann diese Schritte geplant und dann durchgeführt werden und wie viel Aufwand, Zeit und Ressourcen erforderlich sein werden .“ 

Je nachdem, wann genau im Prozess sie eingesetzt werden, können die Strategien klassifiziert werden als

  • präventiv, wenn die Tests schon früh im SDLC entwickelt werden; oder
  • reaktiv, wenn Testdetails spontan als Reaktion auf Benutzerfeedback entworfen werden oder Probleme auftreten.

Darüber hinaus gibt es verschiedene Arten von Strategien  , die einzeln oder zusammen verwendet werden können. 

Die analytische Strategie ist die häufigste Art und basiert auf den Anforderungen oder einer zusätzlichen Risikoanalyse. Im letzteren Fall arbeitet ein Testteam mit den Beteiligten zusammen, um die Bereiche zu priorisieren, die für die Endbenutzer am kritischsten sind. Zwar ist es unmöglich, ein Nullrisiko zu erreichen, aber QA-Experten können zumindest die wichtigsten Schwachstellen aufzeigen und quality assurance srisiken auf ein akzeptables Niveau minimieren.

Die modellbasierte Strategie folgt einem vorgefertigten Modell, das erklärt, wie ein Programm funktionieren muss. Dieses Modell besteht normalerweise aus  einem Diagramm, das verschiedene Aspekte des erwarteten Softwareverhaltens visualisiert – eine Customer Journey  durch eine Website, Datenflüsse, Interaktionen zwischen Komponenten usw. Es hilft dabei, die Systemfunktionalität besser zu verstehen, verbessert die Kommunikation mit den Beteiligten und reduziert den Zeit- und Arbeitsaufwand für die Testautomatisierung.

Die modellbasierte Strategie steigert zwar die Effizienz großer, komplexer Projekte, kann jedoch für einfache, unkomplizierte Anwendungen zu teuer und ressourcenintensiv sein.

Bei der methodischen Strategie werden vordefinierte quality assurance schecklisten und -verfahren verwendet, die intern erstellt oder branchenweit übernommen wurden. Sie wird häufig für Standard-Apps oder bestimmte Arten von Prüfungen verwendet, beispielsweise Sicherheitstests.

Eine standardkonforme Strategie hält sich an bestimmte Vorschriften, Richtlinien und Branchenstandards. Sie verhindert, dass Ihre App gegen Gesetze verstößt, und schützt Sie so vor hohen Strafen. Wenn Sie beispielsweise eine Reiseplattform betreiben, die Kreditkartenzahlungen akzeptiert, verarbeitet oder speichert, müssen Sie diese anhand der Payment Card Industry Data Security Standards ( PCI DSS ) überprüfen.  

Bei einer dynamischen Strategie  wenden Sie informelle Techniken an, die keine vorherige Planung erfordern (z. B. Ad-hoc- und exploratives Testen). Sie gehört zur Kategorie der reaktiven Methoden und kommt zum Einsatz, wenn in der laufenden Software Fehler auftreten.

Die beratende (gelenkte) Strategie  stützt sich bei der Entscheidung über Testumfang, -methoden usw. auf das Fachwissen und die Empfehlungen der Beteiligten oder das Feedback der Endbenutzer. Sie ist für domänenspezifische Apps relevant, bei denen zusätzliche Anleitung erforderlich ist. Sie eignet sich auch für Szenarien, in denen Sie die vorhandene App verbessern möchten, um die Kundenanforderungen besser zu erfüllen.

Bei der regressionsaversen Strategie geht es darum, das Risiko von Regressionen zu reduzieren – also Situationen, in denen eine App nach Updates nicht mehr richtig funktioniert. Normalerweise handelt es sich dabei um einen hochautomatisierten Ansatz. Ein QA-Team kann vor der Veröffentlichung oder bei Änderungen an der Software wiederverwendbare Tests sowohl für typische als auch für außergewöhnliche Szenarien durchführen.

  • Versuchsplan

Während eine Teststrategie ein Dokument auf hoher Ebene ist, verfolgt ein Testplan  einen praktischeren Ansatz und beschreibt detailliert, was getestet werden soll, wie getestet werden soll, wann getestet werden soll und wer den Test durchführen wird. Im Gegensatz zum statischen Strategiedokument, das sich auf ein Projekt als Ganzes bezieht, deckt der Testplan jede Phase separat ab und wird während des gesamten Prozesses vom Projektmanager häufig aktualisiert  .

Gemäß dem IEEE-Standard für Softwaretestdokumentation sollte ein Testplandokument die folgenden Informationen enthalten: 

  • Testplankennung
  • Einführung
  • Referenzen (Liste verwandter Dokumente)
  • Testobjekte (das Produkt und seine Versionen)
  • Zu testende Funktionen
  • Nicht zu testende Funktionen
  • Kriterien für das Bestehen oder Nichtbestehen von Elementen
  • Testansatz (Testniveaus, -arten, -techniken)
  • Aussetzungskriterien
  • Lieferumfang (Testplan oder dieses Dokument selbst, Testfälle, Testskripte, Fehler-/Verbesserungsprotokolle, Testberichte)
  • Testumgebung (Hardware, Software, Tools)
  • Schätzungen
  • Zeitplan
  • Personal- und Schulungsbedarf
  • Aufgaben
  • Risiken
  • Annahmen und Abhängigkeiten
  • Zulassungen

Das Schreiben eines Plans, der alle aufgeführten Informationen enthält, ist eine zeitaufwändige Aufgabe. Bei Agile-Methoden, bei denen der Schwerpunkt auf dem Produkt statt auf Dokumenten liegt, erscheint eine solche Ressourcenverschwendung unvernünftig.

Um dieses Problem zu lösen, führte James Whittaker, Technical Evangelist bei Microsoft und ehemaliger Engineering Director bei Google, den Ansatz des 10-Minuten-Testplans ein . Die Grundidee hinter diesem Konzept besteht darin, sich zunächst auf das Wesentliche zu konzentrieren und allen Ballast abzuschaffen, indem anstelle langer Absätze mit detaillierten Beschreibungen einfache Listen und Tabellen verwendet werden. Kein Team, das am ursprünglichen Experiment teilnahm, beendete seine Arbeit innerhalb von zehn Minuten. Sie brauchten jedoch nur 30 Minuten, um 80 Prozent der Arbeit zu erledigen – während James damit gerechnet hatte, dass sie eine Stunde brauchen würden. 

4.3. Testfallentwicklung 

Als nächstes entwickeln QA- oder Softwareingenieure Testfälle   – detaillierte Beschreibungen, wie eine bestimmte Funktion zu bewerten ist. Dazu gehören Testvoraussetzungen, Dateneingaben, notwendige Aktionen und erwartete Ergebnisse. Nach der Erstellung überprüft ein QA-Team die Testfälle und aktualisiert das RTM-Dokument, indem es sie mit den Anforderungen verknüpft. In dieser Phase sollte eine Reihe leicht verständlicher und präziser Anweisungen erstellt werden, die einen gründlichen Testprozess gewährleisten.

4.4. Einrichten der Testumgebung (250 möglich, einfach)

Sobald Testfälle fertig sind, benötigen sie einen sicheren und isolierten virtuellen Raum zur Ausführung – eine Testumgebung . Sie kombiniert Hardware, Software, Daten und Netzwerke, die für die Anforderungen des zu prüfenden Programms konfiguriert sind. Die Testumgebung muss Produktionsszenarien so genau wie möglich emulieren .

Normalerweise richten Unternehmen mehrere Umgebungen ein, um verschiedene Tests durchzuführen – Unit-, System-, Sicherheitstests usw. Der End-to-End-Test wird normalerweise in einer Staging-Umgebung durchgeführt , die die Live-Bedingungen exakt nachbildet und echte Daten verwendet, aber für Endbenutzer nicht zugänglich ist.

4.5. Testdurchführung

Ein Testteam beginnt, Testfälle in der vorbereiteten Umgebung auszuführen. Anschließend analysieren QA-Ingenieure die Ergebnisse und teilen sie den Entwicklern und Stakeholdern mit. Wenn Fehler oder Mängel vorliegen, wird die Testausführung wiederholt, nachdem die Entwickler die Probleme behoben haben. Die wichtigsten Ergebnisse dieser Phase sind verschiedene Testberichte – Fehlerberichte, Testausführungsberichte, Testabdeckungsberichte usw. Das RTM wird auch mit Testergebnissen aktualisiert.

4.6. Abschluss des Tests

Es gibt keine perfekte Software, daher sind die Tests nie zu 100 Prozent abgeschlossen. Es ist ein fortlaufender Prozess. Wir haben jedoch die sogenannten „Exit-Kriterien“, die basierend auf der Risikobewertung des Projekts definieren, ob „genügend getestet“ wurde.

 Die Beendigungskriterien weisen gemeinsame Punkte auf : 

  • Die Ausführung des Testfalls ist zu 100 Prozent abgeschlossen.
  • Ein System weist keine Defekte mit hoher Priorität auf.
  • Die Leistung des Systems ist unabhängig von der Einführung neuer Funktionen stabil.
  • Die Software unterstützt alle notwendigen Plattformen und/oder Browser
  • Die Benutzerakzeptanztests sind abgeschlossen.

Sobald alle diese Anforderungen (oder alle benutzerdefinierten Anforderungen, die Sie in Ihrem Projekt festgelegt haben) erfüllt sind, wird der Test abgeschlossen. Die Testzusammenfassung und die Abschlussberichte werden erstellt und den Beteiligten zur Verfügung gestellt. Das Team hält ein Retrospektivmeeting ab, um die während der Entwicklung aufgetretenen Probleme zu definieren und zu dokumentieren und den Prozess zu verbessern.

5. Testen von Konzepten und Kategorien

Softwaretests gibt es in vielen verschiedenen Formen, sie finden in verschiedenen Phasen des Entwicklungsprozesses statt, prüfen verschiedene Teile der Software, konzentrieren sich auf eine Reihe von Merkmalen – und lassen sich daher in viele Kategorien unterteilen. Im Folgenden werden wir uns die wichtigsten Konzepte des Softwaretests ansehen und wie sie miteinander zusammenhängen.

5.1 Statisches Testen vs. dynamisches Testen 

Der Softwaretestprozess lässt sich in zwei große Kategorien einteilen: statisches Testen und dynamisches Testen.

Beim statischen Testen  werden zunächst der Quellcode und die Softwareprojektdokumente untersucht, um Fehler frühzeitig im Softwaretestzyklus zu erkennen und zu verhindern. Es wird auch als Nicht-Ausführungstechnik oder Verifizierungstest bezeichnet und umfasst

  • Code-Reviews – systematische Peer-Inspektionen des Quellcodes;
  • Code-Walkthroughs – informelle Treffen, bei denen ein Entwickler Kollegen ein Programm erklärt, Kommentare erhält und Änderungen am Code vornimmt; und
  • Code-Inspektionen – formelle Verfahren, die von Experten aus mehreren Abteilungen durchgeführt werden, um die Konformität der Produkte mit Anforderungen und Standards zu überprüfen.

Sobald die primären Vorbereitungen abgeschlossen sind, fährt das Team mit dynamischen Tests fort , die während der Ausführung durchgeführt werden. Dieses Whitepaper konzentriert sich auf dynamische Tests als gängigste Methode zur Validierung des Codeverhaltens. Sie variieren je nach Designtechniken, Ebenen und Typen. Sie können Anwendungsfalltests  (ein Typ) während  des Systems oder Abnahmetests  (eine Ebene) mithilfe von Black-Box-Tests  (einer Designtechnik) durchführen. Lassen Sie uns jede Gruppe separat untersuchen.

5.2 . Ebenen des Softwaretests

Die verschiedenen Teststufen von Software  unterscheiden sich im Umfang der zu prüfenden Elemente und reichen von einzelnen Komponenten bis hin zu einem kompletten Programm. Normalerweise durchläuft der Code vor der Veröffentlichung vier Teststufen: Unit-Tests , Integrationstests , Systemtests und Abnahmetests .

Eine Einheit oder Komponente ist der kleinste testbare Teil des Softwaresystems. Daher werden auf dieser Testebene einzelne Teile (Funktionen, Prozeduren, Methoden, Module) einer Anwendung untersucht, um sicherzustellen, dass sie den Programmspezifikationen entsprechen und wie erwartet funktionieren.

Unit-Tests werden früh im Entwicklungsprozess von Softwareentwicklern und nicht vom Testteam durchgeführt. Sie bestehen aus wenigen Codezeilen, sind schnell und in der Regel automatisiert: Jede gängige Programmiersprache verfügt über ein Framework zum Ausführen von Unit-Tests.

  • Integrationstests

Das Ziel dieser Ebene besteht darin, zu überprüfen, ob die Einheiten als Gruppe gut zusammenarbeiten und auch reibungslos mit anderen Systemelementen – Datenbanken, externen APIs usw. – interagieren. Dies ist ein zeit- und ressourcenintensiver Prozess, der von Testingenieuren, QA-Testern oder Softwareentwicklern durchgeführt wird.

Für diese Tests gibt es zwei Hauptansätze: Bottom-up und Top-down. Ersterer beginnt mit Unit-Tests und erhöht sukzessive die Komplexität der bewerteten Softwareteile. Die Top-down-Methode verfolgt den umgekehrten Ansatz, indem sie sich zuerst auf Kombinationen auf hoher Ebene konzentriert und die einfachen später untersucht.

  • Systemtests

Auf dieser Ebene wird ein komplettes Softwaresystem als Ganzes getestet. In dieser Phase wird die Konformität des Produkts mit den funktionalen und nicht-funktionalen Anforderungen überprüft . Ein hochprofessionelles Testteam sollte die Systemtests in einer Staging-Umgebung durchführen, die dem realen Geschäftsnutzungsszenario so nahe wie möglich kommt.

  • Abnahmetests

Hier wird das Produkt auf seine Genauigkeit und die Anforderungen des Endbenutzers geprüft. Dieser auch als Benutzerakzeptanztest  (User Acceptance Testing, UAT) bezeichnete Prozess ist ein umfassender End-to-End-Prozess, der dabei hilft zu entscheiden, ob das Produkt die Abnahmekriterien erfüllt  und versandbereit ist.

Während kleine Probleme früher im Prozess erkannt und behoben werden sollten, geht es bei dieser Teststufe um die allgemeine System quality assurance, von Inhalten und Benutzeroberfläche bis hin zu Leistungsproblemen.  Die drei üblichen Phasen des UAT sind

  • Alphatests, die von internen Testern in einer Staging-Umgebung durchgeführt werden;
  • Betatests, die von einer Gruppe echter Kunden in der Produktionsumgebung durchgeführt werden, um zu überprüfen, ob die App oder Website ihren Erwartungen entspricht, und
  • Gammatests, bei denen eine begrenzte Anzahl von Kunden bestimmte Spezifikationen (vor allem in Bezug auf Sicherheit und Benutzerfreundlichkeit) prüft. In dieser Phase ist das Produkt zu 99 Prozent bereit zur Veröffentlichung, sodass die Entwickler keine kritischen Änderungen mehr vornehmen. Feedback soll in den nächsten Versionen berücksichtigt werden.

Allerdings verzichten viele Unternehmen auf Gammatests, da die Fristen knapp sind, die Ressourcen begrenzt sind und die Entwicklungszyklen kurz sind.

Die vier Teststufen folgen aufeinander, von der Überprüfung der einfacheren Teile bis hin zu komplexeren Gruppen, die das Risiko des Eindringens von Fehlern in die Veröffentlichung verringern. Bei der agilen Entwicklung stellt diese Testsequenz einen iterativen Prozess dar, der für jede hinzugefügte Funktion gilt. In diesem Fall wird jede kleine Einheit der neuen Funktionalität überprüft. Anschließend überprüfen die Ingenieure die Verbindungen zwischen den Einheiten, die Art und Weise, wie sich die Funktion in das restliche System integriert, und ob das neue Update den Anforderungen der Endbenutzer entspricht.

5.3.Methoden und Techniken zur Qualitätsprüfung

Softwaretestmethoden  sind die Art und Weise, wie Tests auf verschiedenen Ebenen durchgeführt werden. Dazu gehören Black-Box-Tests , White-Box-Tests , Gray-Box-Tests , Ad-hoc-Tests und explorative Tests .

  • Black-Box-Tests

Diese Methode hat ihren Namen, weil sich ein QA-Ingenieur auf die Eingaben und die erwarteten Ausgaben konzentriert, ohne zu wissen, wie die Anwendung intern funktioniert und wie diese Eingaben verarbeitet werden. Der Hauptzweck besteht darin, die Funktionalität der Software zu überprüfen und sicherzustellen, dass sie ordnungsgemäß funktioniert und die Benutzeranforderungen erfüllt. Black-Box-Tests gelten auf allen Ebenen, werden jedoch hauptsächlich für System- und Benutzerakzeptanztests verwendet.

Eine der beliebtesten Techniken in der Blackbox-Kategorie ist das Testen von Anwendungsfällen .  Ein Anwendungsfall simuliert eine reale Abfolge der Interaktionen eines Benutzers mit der Software. QA-Experten und Verbraucher können das Produkt anhand verschiedener Szenarien überprüfen, um frustrierende Mängel und Schwachstellen zu identifizieren. 

  •  White-Box-Test

Im Gegensatz zum Black-Box-Test erfordert diese Methode eine umfassende Kenntnis des Codes, da sie strukturelle Teile der Anwendung bewertet. Daher sind Entwickler, die direkt am Schreiben des Programms beteiligt sind, im Allgemeinen für die Durchführung solcher Prüfungen verantwortlich. Beim White-Box-Test geht es darum, die Sicherheit zu erhöhen, versteckte Mängel aufzudecken und diese zu beheben. Diese Methode wird auf Unit- und Integrationsebene verwendet.

  •  Gray-Box-Test

Diese Methode kombiniert die beiden vorherigen und testet sowohl funktionale als auch strukturelle Teile der Anwendung. Dabei kennt ein erfahrener Ingenieur den Quellcode zumindest teilweise und entwirft Testfälle auf der Grundlage seines Wissens über Datenstrukturen, verwendete Algorithmen usw. Gleichzeitig wendet der Tester einfache Black-Box-Techniken an, um die Präsentationsschicht der Software aus der Sicht eines Benutzers zu bewerten. Gray-Box-Tests sind hauptsächlich auf der Integrationsebene anwendbar.

  •  Rauchprüfung

Smoke-Tests sind eine beliebte White-Box-Technik, um zu prüfen, ob ein der Software hinzugefügter Build fehlerfrei ist. Sie enthalten eine kurze Reihe von Testläufen, bei denen eine neue Funktion anhand kritischer Funktionen bewertet wird. Ziel ist es, zu bestätigen, dass die Komponente für weitere, zeitaufwändigere und teurere Tests bereit ist. Alle Fehler signalisieren, dass der Code an die Entwickler zurückgegeben werden muss.

  •  Ad-hoc-Tests

Diese informelle Testtechnik wird ohne Dokumentation, vordefiniertes Design und Testfälle durchgeführt. Ein QA-Experte improvisiert Schritte und führt sie nach dem Zufallsprinzip aus, um Fehler zu erkennen, die bei strukturierten Testaktivitäten übersehen wurden. Ad-hoc-Tests können früh im Entwicklungszyklus durchgeführt werden, bevor ein Testplan erstellt wird.

Ad-hoc-Tests sind flexibel und anpassungsfähig, sodass sie schneller und kostengünstiger sind als formale Methoden. Gleichzeitig müssen Sie sie durch strukturiertere QA-Aktivitäten ergänzen.

  • Versuchsforschung

Exploratives Testen wurde erstmals  von Cem Kaner, Professor für Softwaretechnik und Verbraucherschützer, als „ eine Art des Softwaretests beschrieben , bei dem die persönliche Freiheit und Verantwortung des einzelnen Testers im Vordergrund steht, den Wert seiner Arbeit kontinuierlich zu optimieren, indem er testbezogenes Lernen, Testentwurf, Testausführung und Testergebnisinterpretation als sich gegenseitig unterstützende Aktivitäten betrachtet, die während des gesamten Projekts parallel ablaufen .“ 

Ähnlich wie bei der Ad-hoc-Methode basiert exploratives Testen nicht auf vordefinierten und dokumentierten Testfällen. Stattdessen handelt es sich um einen kreativen und freien Prozess, bei dem das System durch Interaktion erlernt wird. Der Ansatz ermöglicht es Testern und nicht-technischen Stakeholdern, die quality assurance des Produkts aus der Sicht eines Benutzers schnell zu validieren und schnelles Feedback zu geben.

Sowohl Ad-hoc- als auch explorative Techniken gehören zum Black-Box-Test, da sie funktionszentriert sind, sich auf die Validierung der Benutzererfahrung (nicht des Codes) konzentrieren und keine Kenntnisse der internen Programmstruktur erfordern agile project management.  

5.4. Arten von Softwaretests

Abhängig vom Hauptziel kann es verschiedene Arten von Tests geben. Hier sind die beliebtesten Testarten laut der State of Development Ecosystem Survey 2023  von JetBrains , einem Unternehmen, das auf die Erstellung von Tools für Softwareentwickler spezialisiert ist.

  •  Funktionsprüfung

Bei diesem Typ wird das System anhand der funktionalen Anforderungen beurteilt  , indem die Eingaben eingegeben und die Ausgabe geprüft werden. Normalerweise umfasst der Prozess die folgenden Aktionen :

1. Skizzieren Sie die Funktionen, die die Software ausführen soll.
2. Stellen Sie die Eingabedaten je nach Funktionsspezifikation zusammen
. 3. Bestimmen Sie die Ausgabe je nach Funktionsspezifikation.
4. Führen Sie den Testfall aus.
5. Stellen Sie die empfangenen und erwarteten Ausgaben einander gegenüber.

Funktionstests verwenden die Black-Box-Methode, bei der die Ergebnisse und nicht der Code selbst von größter Bedeutung sind. Sie werden normalerweise auf System- und Benutzerakzeptanzebene durchgeführt.

  •  Leistungstest

Leistungstests untersuchen die Geschwindigkeit, Reaktionsfähigkeit und Stabilität des Systems unter einer bestimmten Belastung. Je nach Arbeitslast wird das Verhalten eines Systems durch verschiedene Arten von Leistungstests bewertet:

  • Belastungstests — bei kontinuierlich steigender Arbeitslast
  • Stresstests – an oder über den Grenzen der erwarteten Arbeitsbelastung
  • Dauerbelastungstests — bei kontinuierlicher und erheblicher Belastung
  • Spike-Tests – bei plötzlich und erheblich erhöhter Arbeitsbelastung

Die Arten von Leistungstests unterscheiden sich in ihrer Dauer. Last- und Stresstests können zwischen 5 und 60 Minuten dauern. Soak-Tests dauern Stunden, während Spike-Tests nur wenige Minuten dauern.

Leistungstests sollten früh im Entwicklungszyklus beginnen und häufig in allen Phasen durchgeführt werden. Wie bei anderen Problemen steigen die Kosten für die Behebung von Leistungsfehlern mit dem Projektfortschritt.  

  •  Regressionstests

Durch Regressionstests wird das Softwareverhalten nach Updates überprüft, um sicherzustellen, dass die Änderungen weder das aktualisierte Element noch andere Produktkomponenten oder die Interaktionen zwischen ihnen beschädigt haben.

Mit diesem Typ können QA-Experten funktionale und nicht-funktionale Aspekte prüfen und dabei sowohl White-Box- als auch Black-Box-Methoden einsetzen. Sie können vorherige Skripte und Szenarien wiederverwenden, um zu überprüfen, wie eine Funktion oder das gesamte Produkt nach Änderungen funktioniert. Obwohl Regressionstests auf jeder Ebene relevant sind, sind sie für die Integration und die Qualitätssicherung des Systems am wichtigsten.

  • Usability-Tests

Usability-Tests bewerten die Benutzererfahrung bei der Interaktion mit einer Website oder Anwendung. Sie sollten nicht mit Benutzerakzeptanztests verwechselt werden. Obwohl beide Tests Endkunden einbeziehen, konzentrieren sie sich auf unterschiedliche Mängel und finden in unterschiedlichen Phasen des Entwicklungszyklus statt.

Der UAT findet kurz vor der Veröffentlichung statt und prüft, ob das Produkt den Kunden hilft, ihre Ziele zu erreichen. Beim Usability-Test werden die Kundenstimmungen berücksichtigt und es wird beurteilt, wie benutzerfreundlich und intuitiv das Produkt ist. Er kann bereits in der Entwurfsphase durchgeführt werden, sodass eine Zielgruppe den Prototyp eines Produkts bewertet  , bevor sich eine bestimmte Logik oder Funktion im Code verfestigt. Es ist auch wichtig, während des gesamten Projekts Usability-Tests mit verschiedenen Beteiligten durchzuführen.

  • Sicherheitstests

Dieser Testtyp deckt Schwachstellen und Bedrohungen auf, die zu Datenlecks, bösartigen Angriffen, Systemabstürzen und anderen Problemen führen können. Zu den üblichen Bedrohungsprüfungen gehören unter anderem

  • Penetrationstests oder Ethical Hacking, bei denen Cyberangriffe auf die Software unter sicheren Bedingungen simuliert werden;
  • Anwendungssicherheitstests (AST);
  • API-Sicherheitstests;
  • Konfigurationsscan, um das System anhand der Liste der bewährten Sicherheitsmethoden zu überprüfen; und
  • Sicherheitsaudits zum Aufdecken von Sicherheitslücken und zur Bewertung der Einhaltung von Vorschriften und Sicherheitsanforderungen.

Sicherheitsaktivitäten beginnen in der Phase der Anforderungsanalyse des SDLC und erstrecken sich über spätere Phasen und alle Testebenen.

6. Testautomatisierung

Die Testautomatisierung ist im Hinblick auf kontinuierliches Testen von entscheidender Bedeutung  , da sie die Belastung durch die Verwaltung der Testanforderungen verringert und Ingenieuren Zeit und Aufwand spart, die sie in die Erstellung besserer Testfälle investieren können. Die immer stärkere Verbreitung agiler Methoden fördert sowohl die Testautomatisierung als auch kontinuierliche Integrationsverfahren  als Eckpfeiler einer effektiven Softwareentwicklung.  

Der Prozess der Testautomatisierung  umfasst typischerweise mehrere aufeinanderfolgende Schritte:

  • vorläufige Projektanalyse
  • Rahmenkonstruktion
  • Testfallentwicklung
  • Implementierung von Testfällen
  • iterative Framework-Unterstützung

Vorteile der Testautomatisierung.  Automatisierung kann auf nahezu jede Testart auf jeder Ebene angewendet werden. Sie minimiert den menschlichen Aufwand für die Durchführung von Tests und reduziert die Markteinführungszeit sowie die Kosten von Fehlern, da die Tests im Vergleich zum manuellen Testprozess bis zu 10-mal schneller durchgeführt werden. Darüber hinaus deckt ein solcher Testansatz über 90 Prozent des Codes ab und deckt Probleme auf, die bei manuellen Tests möglicherweise nicht sichtbar sind, und kann mit dem Wachstum des Produkts skaliert werden.

Testautomatisierung in Zahlen.  Laut dem Software Testing and quality assurance Report 2023  der Testmanagement-Plattform TestRail ist der manuelle Ansatz noch immer vorherrschend, wobei durchschnittlich 40 Prozent der Tests automatisiert sind. Dennoch nimmt die Automatisierung stetig zu – im Jahr 2020 lag ihr Automatisierungsgrad bei nur 35 Prozent.

Open-Source-Frameworks führen die Liste der beliebtesten Tools an, selbst bei großen Unternehmen. Selenium, Cypress, JUnit, TestNG, Appium, Cucumber und Pytest erwiesen sich als die beliebtesten Instrumente für eine Reihe von Testarten – von Regressions- bis hin zu API-Tests.

Wir laden Sie ein, unseren Artikel zu lesen, in dem die beliebtesten automatisierten Testtools verglichen werden ,  darunter Selenium , Katalon Studio , TestComplete und Ranorex.  

Die Entwicklung automatisierter Tests wird von 39 Prozent der Organisationen als größte Herausforderung angegeben. Gleichzeitig nannten die Teilnehmer der TestRail-Umfrage die Automatisierung weiterer Tests als ihr wichtigstes Ziel, gefolgt von der Reduzierung von Fehlern in der Produktion. Am häufigsten ziehen Unternehmen die Einführung von Automatisierung für Regressionstests (38 Prozent), Web-UI-Tests (34 Prozent), End-to-End-Tests (E2E) (33 Prozent), Integrationstests (26 Prozent) und mobile Tests (23 Prozent) in Betracht.

Es ist erwähnenswert, dass die effektivsten Testverfahren manuelle und automatisierte Testaktivitäten kombinieren , um die besten Ergebnisse zu erzielen. 

7. Fachkraft für Qualitätssicherung

Quality assurance spezialist ist ein weit gefasster Begriff, der alle Experten umfasst, die an QA-Aktivitäten beteiligt sind. In kleinen Organisationen kann diese Position bedeuten, ein Meister aller Gewerke zu sein, der für den gesamten QA-Prozess verantwortlich ist, von der Entwicklung von Qualitätsstandards bis zur Durchführung von Tests. Mit dem Wachstum des Unternehmens verteilen sich die Aufgaben jedoch auf verschiedene Rollen. Nachfolgend finden Sie eine Liste der wichtigsten Positionen für die Bildung eines vollwertigen QA-Teams.

Ein Softwaretestingenieur oder -tester ist ein QA-Spezialist, der hauptsächlich auf manuelle Methoden setzt. Diese Experten entwickeln und führen Testfälle aus, dokumentieren Fehler und Mängel und melden Testergebnisse. Die Rolle befasst sich hauptsächlich mit der Konformität der Software mit funktionalen Anforderungen. Tester müssen nicht unbedingt Programmiersprachen beherrschen. Sie müssen vielmehr fortgeschrittene Benutzer verschiedener Testtools sein.

Testanalyst ist eine Einstiegsposition mit Fokus auf Geschäftsprobleme, nicht auf technische Aspekte des Testens. Analysten interagieren mit Stakeholdern und BAs, um Testanforderungen zu klären und zu priorisieren. Ein weiterer Verantwortungsbereich ist das Entwerfen und Aktualisieren von Verfahren und Dokumenten – Testpläne, Abdeckungsberichte, Zusammenfassungen usw.

Ein QA-Automatisierungsingenieur muss über Programmierkenntnisse verfügen, um Testskripte schreiben zu können. Personen in dieser Position richten außerdem Automatisierungsumgebungen ein und bereiten Daten für wiederholte Tests vor. Zu den weiteren Aufgaben gehören die Entwicklung eines Automatisierungsframeworks und die Integration von Tests in eine CI/CD-Pipeline.

Obwohl sie immer noch manuelle Tests durchführen, haben QA-Ingenieure ein breiteres Aufgabenspektrum als STEs. Sie analysieren beispielsweise bestehende Prozesse und schlagen Verbesserungen für den Entwicklungszyklus vor, sodass Fehler vermieden und nicht erst in späteren Phasen erkannt werden.

Ein Software Development Engineer in Test (SDET) kombiniert Test-, Entwicklungs- und DevOps-Kenntnisse, um automatisierte Testprozesse zu erstellen und zu implementieren. In vielen Unternehmen wird SDET synonym mit einem QA-Automatisierungsingenieur verwendet. Im Gegensatz zu letzterem ist ein SDET jedoch in der Lage, Quellcodeüberprüfungen durchzuführen und die Testbarkeit des Codes zu bewerten, um die Code quality assurance zu verbessern. Dieser Spezialist muss über einen soliden Softwareentwicklungshintergrund verfügen, mehrere Programmiersprachen beherrschen und sich mit dem zu entwickelnden System bestens auskennen.

Ein Testarchitekt  ist ein erfahrener Spezialist, der komplexe Testinfrastrukturen entwirft, den Technologie-Stack für QA-Prozesse identifiziert und Teststrategien auf hoher Ebene ausarbeitet. Diese Position ist typischerweise in großen Unternehmen vertreten.

Weitere Informationen finden Sie in unseren Artikeln zur Rolle und Verantwortung des SDET  sowie zu anderen Rollen im QA-Engineering .

Im Zuge des technologischen Fortschritts werden Tests kontinuierlich weiterentwickelt, um den sich ständig ändernden Geschäftsanforderungen gerecht zu werden. Dabei kommen neue Tools zum Einsatz, die es den Testern ermöglichen, die Grenzen der Qualitätssicherung zu erweitern.

Neue Themen, die das Softwaretesten in naher Zukunft voraussichtlich beeinflussen werden, sind Sicherheit, künstliche Intelligenz und Big Data. 

  • Sicherheit

Die Umfrage des World quality assurance Report  zeigt, dass Sicherheit eines der wichtigsten Elemente einer IT-Strategie ist. Input aus der Sicherheitsabteilung ist für den Schutz des Unternehmens von entscheidender Bedeutung. Sicherheitslücken können den Ruf einer Marke ernsthaft schädigen. Aus diesen Gründen gelten Testumgebungen und Testdaten heute als die größten Herausforderungen bei QA-Tests.

Datenschutz- und Privatsphärengesetze geben auch Anlass zu Bedenken hinsichtlich der Sicherheit von Testumgebungen. Wenn eine Umgebung persönliche Testdaten enthält und es zu einer Sicherheitsverletzung kommt, müssen Unternehmen die Behörden unverzüglich benachrichtigen. Daher ist es so wichtig, dass Testumgebungen Datenschutzverletzungen erkennen können.

Sicherheitstests werden vor allem in Cloud-Umgebungen eingesetzt,  um Schwachstellen im System aufzudecken und zu ermitteln, wie gut sich das System vor unbefugtem Zugriff, Hackerangriffen, Codebeschädigungen usw. schützen kann. Beim Umgang mit dem Anwendungscode beziehen sich Sicherheitstests auf die White-Box-Testmethode.

Die vier Hauptschwerpunkte beim Sicherheitstesten:

  • Netzwerksicherheit
  • Sicherheit der Systemsoftware
  • Clientseitige Anwendungssicherheit
  • Serverseitige Anwendungssicherheit

Es wird dringend empfohlen, Sicherheitstests als Teil des Standardsoftwareentwicklungsprozesses einzubeziehen.

  • Künstliche Intelligenz und der Aufstieg der generativen KI

Obwohl KI-Testautomatisierungslösungen noch nicht etabliert sind, ist der Trend zu mehr Intelligenz beim Testen unvermeidlich. Kognitive Automatisierung, maschinelles Lernen , Selbstkorrektur und prädiktive Analyse sind vielversprechende Techniken für die Zukunft der Testautomatisierung.

Das in Boston ansässige Startup Mabl  vereinfacht Funktionstests bereits, indem es sie mit maschinellem Lernen kombiniert. „ Als wir Hunderte von Softwareteams trafen, kamen wir zu der Idee, dass die Entwicklung mittlerweile sehr schnell geht, es aber einen Engpass bei der Qualitätssicherung gibt “ , sagt  Izzy Azeri, Mitbegründer von Mabl. „ Jedes Mal, wenn Sie eine Änderung an Ihrem Produkt vornehmen, müssen Sie diese Änderung testen oder eine Testautomatisierung einbauen .“  

Mit Mabl müssen Sie keine umfangreichen Tests mehr manuell schreiben. Stattdessen zeigen Sie der Anwendung den Workflow, den Sie testen möchten, und der Dienst führt diese Tests durch. Mabl kann sich sogar automatisch an kleine Änderungen der Benutzeroberfläche anpassen und Entwickler auf visuelle Änderungen, JavaScript-Fehler, defekte Links und längere Ladezeiten aufmerksam machen.

Eine der vielversprechendsten Technologien im Bereich Tests ist die generative KI . Sie kann eingesetzt werden  , um verschiedene Aspekte des STLC zu verbessern, darunter die frühzeitige Fehlererkennung, die Erstellung synthetischer Daten  für Tests, die Automatisierung der Testfallentwicklung und vieles mehr. Experimente haben gezeigt  , dass Tools auf Basis generativer KI dabei helfen, Testfälle 30–40 Prozent schneller zu refaktorisieren und die Anzahl der Fehler im Vergleich zu herkömmlichen Instrumenten um 40 Prozent zu reduzieren.

  • Große Daten

Die Verwaltung riesiger Datenmengen, die ständig auf verschiedene Plattformen hochgeladen werden, erfordert einen einzigartigen Testansatz, da herkömmliche Techniken den bestehenden Herausforderungen nicht mehr gewachsen sind.

Ziel von Big Data-  Tests ist es, die quality assurance von Daten anhand verschiedener Merkmale wie Konformität, Genauigkeit, Duplizierung, Konsistenz, Gültigkeit, Vollständigkeit usw. zu beurteilen. Andere Arten von QA-Aktivitäten im Big Data-Bereich sind Tests zur Datenübertragung, Datenbanktests und die Überprüfung der Datenverarbeitung, bei denen Tools wie Hadoop , Hive, Pig und Oozie zum Einsatz kommen, um zu prüfen, ob die Geschäftslogik korrekt ist .

Fazit​

Im Jahr 2012 kam es bei Knight Capital Americas, einem globalen Finanzunternehmen, zu einem Fehler in seinem automatisierten Routing-System für Aktienaufträge – das Team setzte ungetestete Software in einer Produktionsumgebung ein. Infolgedessen verlor das Unternehmen in nur 45 Minuten über 460 Millionen US-Dollar , was praktisch zu seiner Insolvenz führte. 

Die Geschichte kennt viele weitere Beispiele für Softwarevorfälle, die ähnliche Schäden verursacht haben. Dennoch bleibt das Testen eines der umstrittensten Themen in der Softwareentwicklung. Viele Produktbesitzer bezweifeln den Wert des Tests als separater Prozess und setzen ihr Geschäft und ihre Produkte aufs Spiel, während sie versuchen, einen Cent zusätzlich zu sparen.

Obwohl es weit verbreitet ist, dass die einzige Aufgabe eines Testers darin besteht, Fehler zu finden , haben Tests und Qualitätssicherung einen größeren Einfluss auf den Erfolg des Endprodukts. Da sie das Geschäft des Kunden und das Produkt selbst genau kennen, steigern quality assurance ingenieure den Wert der Software und stellen ihre hervorragende quality assurance sicher. Darüber hinaus können Tester durch die Anwendung ihrer umfassenden Produktkenntnisse dem Kunden durch zusätzliche Dienste wie Tipps, Richtlinien und Produktgebrauchshandbücher einen Mehrwert bieten. Dies führt zu geringeren Betriebskosten und verbesserter Geschäftseffizienz.