Unter Softwaretests versteht man die Überprüfung des Arbeitsablaufs einer Anwendung, um das erwartete Verhalten mit dem tatsächlichen Verhalten zu vergleichen. Es ist ein untrennbarer Teil des Entwicklungsprozesses, der dazu beiträgt, mögliche Fehler zu verhindern, zu überwachen und zu beheben, bevor das Endprodukt freigegeben wird.
Eine moderne Anwendung ist ein komplexes, aus mehreren Komponenten bestehendes System, das nur dann ordnungsgemäß funktioniert, wenn jeder einzelne Teil seiner Architektur wie erwartet funktioniert und wenn das Zusammenspiel der Komponenten stabil und vorhersehbar ist. Die Entwickler, die den Code der Anwendung schreiben, sind jedoch Menschen, und niemand ist vor menschlichen Fehlern sicher. Die Fehler können jedoch in den frühesten Stadien der Entwicklung aufgedeckt werden, und das ist es, was die QA-Ingenieure tun.
In diesem Artikel informieren wir Sie über verschiedene Arten von Softwaretests und ihre Rolle im Entwicklungsprozess. Sie erfahren etwas über die Entwicklungs- und Testlebenszyklen und ihre enge Verzahnung miteinander. Außerdem geben wir Ihnen einen kurzen Überblick über gängige Testwerkzeuge und Frameworks und stellen Ihnen einige nützliche Browsererweiterungen vor, die von unseren QA-Ingenieuren verwendet werden. Es wird interessant werden!
Die Rolle des Testens im Entwicklungslebenszyklus
Obwohl es sich bei der Entwicklung und dem Testen um unterschiedliche Prozesse handelt, die von unterschiedlichen Spezialisten durchgeführt werden, sollten sie nicht getrennt voneinander behandelt werden.

Wie aus dem oben dargestellten Schema ersichtlich ist, wird das Testen als eine separate Entwicklungsphase behandelt. Die meisten von QA-Ingenieuren aufgedeckten Fehler können jedoch durch Tests, die alle oben genannten Phasen abdecken, aufgespürt, dokumentiert und priorisiert werden und von den Entwicklern behoben werden. Je früher der Fehler entdeckt wird, desto einfacher und kostengünstiger ist seine Behebung.
Lassen Sie uns die Vorteile einer Testabdeckung für alle Entwicklungszyklen betrachten.
Stufe 1. Analyse der Anforderungen
Die Anforderungen werden vom Kunden oder Projektleiter festgelegt und können sowohl funktionale als auch nicht-funktionale Aspekte umfassen. Stellen wir uns eine Situation vor, in der die Anforderungen nicht getestet wurden und als Grundlage für die Erstellung der Architektur und die Entwicklung verwendet wurden. Nach Erhalt des fertigen Produkts zum Testen finden die QA-Ingenieure kritische Fehler in der Dokumentation, die sich auf die Arbeit des gesamten Produkts auswirken werden. In diesem Fall ist es notwendig, die ursprüngliche Dokumentation, die Systemarchitektur und den Code der gesamten Anwendung zu ändern. Um eine solche Situation zu vermeiden, sind unsere QA-Ingenieure von Anfang an in den Entwicklungsprozess eingebunden.
Stufe 2. Erstellung der Architektur
Dies ist die Zeit, in der die Entwickler und Systemarchitekten den grundlegenden Entwurf des Systems erstellen, alle Anforderungen spezifizieren, den technologischen Stack auswählen, über die Methode der Datenspeicherung, die Funktionalität usw. entscheiden. Die Architektur muss mit der Projektdokumentation und dem technischen Auftrag übereinstimmen und den Entwicklern die Möglichkeit geben, alle erforderlichen Funktionen zu implementieren. Das Testen und Überprüfen der Grundlagen des zukünftigen Projekts ist eine Aufgabe für die Mitarbeiter der QS-Abteilung. Wenn in dieser Testphase kritische Fehler aufgedeckt werden, ist es leicht, sie zu diesem Zeitpunkt zu beheben, aber es wird schwierig und teuer, die Folgen falscher Architekturentscheidungen später zu bewältigen.
Stufe 3. Entwicklung
Während der Entwicklung der Anwendung ist es sehr wichtig, die Arbeit der einzelnen Module des Programms und ihre Interaktion miteinander zu testen. Dies ist der Zeitpunkt, an dem die QS-Spezialisten an den folgenden Testebenen arbeiten sollten:
- Integrationstests – werden angewendet, wenn mehrere Module als separater Teil der Anwendung zusammengeführt werden und zielen darauf ab, den Arbeitsablauf der Module als Teil des Systems zu überprüfen.
- Systemtests – nach Abschluss der Arbeiten an der Anwendung und der Zusammenstellung aller Teile zu einer integrierten Anwendung wird der Arbeitsablauf des gesamten Systems getestet.
- Abnahmetests – die letzte Testphase, die vom Kunden durchgeführt wird, um die Übereinstimmung der Anwendung mit den Geschäftsanforderungen zu überprüfen und die Entscheidung zu treffen, ob sie für die weitere Bereitstellung akzeptiert werden kann.
Schritt 4. Testen und Fehlersuche
Dies ist eine obligatorische Phase, in der die Tests unabhängig von der Testabdeckung des Entwicklungsprozesses in den vorangegangenen Phasen durchgeführt werden sollten. Ziel ist es, die Leistung der Anwendung in verschiedenen Situationen und Umgebungen vollständig zu testen. Alle von den QA-Ingenieuren entdeckten Fehler werden in einem Bug-Tracking-System (wie Redmine oder Trello) dokumentiert und später von den Entwicklern behoben. Nach Abschluss der Fehlerbehebung wird der Regressionstest durchgeführt. Damit soll geprüft werden, ob die Fehler wirksam behoben wurden (сonfirmationtesting) und ob die jüngsten Codeänderungen nicht zu einer Reproduktion alter Fehler geführt oder die Leistung anderer Teile der Anwendung beeinträchtigt haben.
Schritt 5. Verwertung und Pflege
Auch nach der Freigabe des Produkts bleibt die Notwendigkeit des Testens bestehen. Verschiedene Benutzer arbeiten mit der Anwendung in unterschiedlichen Umgebungen und es besteht immer die Möglichkeit, neue Fehler zu entdecken, die beim Testen übersehen wurden. Außerdem kann die Öffentlichkeit das Programm auf unvorhersehbare Weise nutzen, was zu neuen Problemen führen kann. In diesem Fall ist die Hilfe von QA-Spezialisten erforderlich.
Es liegt auf der Hand, dass der Testprozess jede Phase des Entwicklungslebenszyklus beeinflusst. Qualitätssicherungskomponenten vergleichen den tatsächlichen Zustand des Produkts mit dem geplanten und dokumentierten Zustand und helfen dabei, die Aufgaben des Entwicklungsteams effektiver zu planen und zu überwachen.
Die wichtigsten Arten von Softwaretests
Wir haben uns bereits mit der Rolle des Testens im Prozess der Softwareentwicklung befasst und über einige verschiedene Testarten gesprochen. Da das Testen als eine separate Phase der Entwicklung betrachtet wird, wollen wir sehen, welche Arten von Tests im Allgemeinen bei der Überprüfung der Arbeit der fertigen Anwendung verwendet werden.

Funktionsprüfung
Es handelt sich um eine der wichtigsten Testarten, die darauf abzielt, die Geschäftslogik der Anwendung und ihre wichtigsten Funktionen zu überprüfen und sie mit den ursprünglichen Anforderungen des Kunden zu vergleichen. Er ahmt die tatsächliche Nutzung des Systems vollständig nach und zeigt, ob das fertige Produkt die ursprünglichen Anforderungen des Kunden erfüllt und ob es genau so funktioniert, wie es in der Dokumentation beschrieben wurde.
Kompatibilitätstests
Die Nutzer des Endprodukts arbeiten in der Regel auf verschiedenen Rechnern mit unterschiedlichen Betriebssystemen und Browsern mit der Anwendung. Auf ihren Computern sind unterschiedliche Software und Treiber installiert und ihre Bildschirme haben unterschiedliche Auflösungen. Um ein positives Benutzererlebnis zu schaffen, sollten wir eine perfekte Leistung des Programms in allen verschiedenen Umgebungen sicherstellen, und dafür sind Kompatibilitätstests gedacht.
Leistungsprüfung
Die wichtigsten Anforderungen an das Programm sind seine Arbeitseffizienz, Stabilität, Skalierbarkeit und Belastung. Leistungstests ermöglichen es Ihnen, mögliche Schwachstellen im System zu erkennen und deren Auswirkungen auf die Leistung des Produkts zu verhindern. Je nach Zielsetzung lassen sich die Leistungstests in die folgenden Arten unterteilen:
- Lasttests – Überprüfung der Antwortzeiten für verschiedene Arten von Abfragen, um die Leistung unter regelmäßiger Last zu testen.
- Stresstest – Überprüfung der Effizienz der Anwendung bei einer übermäßigen Erhöhung der normalen Belastung. Es ermöglicht Ihnen, die tatsächlichen Grenzen der Kapazität des Programms zu bestimmen, seine Widerstandsfähigkeit zu testen und den Prozess der Systemwiederherstellung nach der Rückkehr zum Normalzustand zu überwachen, während Sie den Zeitaufwand reduzieren.
Was ist Testdesign und wie wird es durchgeführt?
Dies ist die Phase des Testens, in der die Testfälle entsprechend den vereinbarten Kriterien und Zielen des Testens entwickelt werden. Das Hauptziel dieser Phase besteht darin, einen effizienten Testprozess für alle wichtigen Teile der Anwendung zu schaffen und dabei so wenige Tests wie möglich durchzuführen. Der Prozess der Entwicklung des Testdesigns umfasst die folgenden Arten von Testtechniken:
- Bei der Äquivalenzpartitionierung werden die Testdaten in verschiedene Klassen zulässiger Werte aufgeteilt. Es wird erwartet, dass die Prüfung jeder Klasse das gleiche Ergebnis liefert. Nach der Definition der Klassen sollte jede von ihnen mindestens einmal getestet werden.
- Die Grenzwertanalyse ist eine Technik, die auf einer der am meisten gefährdeten Stellen jeder Software basiert – den Grenzwerten. Um dies zu testen, wird der Wertebereich ausgewählt und die Grenzen werden festgelegt. Dann werden sie getestet, indem sowohl gültige als auch ungültige Werte eingegeben werden, die die Grenze überschreiten oder aufgeben. Diese Technik ist eng mit der Äquivalenzpartitionierung verbunden.
- Das Testen von Entscheidungstabellen ist eine Testtechnik zur Beschreibung des Zustands der Anwendung und zur Strukturierung der komplizierten Geschäftsanforderungen, die durch das Produkt realisiert werden sollen. Sie enthalten die Bedingungen, die erfüllt sein müssen, um das erforderliche Ergebnis zu liefern.
- Zustandsübergangstests helfen dabei, die Art und Weise zu beschreiben, wie sich die Zustände der Anwendung ändern. Im Gegensatz zum Entscheidungstabellentest, der den tatsächlichen Zustand beschreibt, spiegelt er wider, wie sich die Zustände ändern, und hilft, die Reaktion des Systems auf die Eingabe ungültiger Daten oder die Rückgängigmachung einer kürzlich durchgeführten Aktion zu verfolgen. Der Einfachheit halber werden die Ausgabedaten in einem Diagramm dargestellt.
- Use Case Testing ist eine Methode zur Beschreibung der Interaktion zwischen Benutzer und System. Für die Tester ist es eine bequeme Methode zur Entwicklung von Testfällen, da der Anwendungsfall den Kontext der Durchführung jeder Aktion des Benutzers unter Berücksichtigung der Testziele und der Anforderungen beschreibt.
Prüfwerkzeuge und Frameworks
Die Welt der Computertechnologien entwickelt sich rasant, und jeden Tag erscheinen neue Methoden und Werkzeuge für die Softwareentwicklung. Sie sollen den Arbeitsablauf vereinfachen und automatisieren, um Zeit und Kosten zu sparen. Da das Testen ein untrennbarer Bestandteil der Entwicklung ist, gibt es zahlreiche Tools und Frameworks, die von QA-Ingenieuren bei ihrer Arbeit verwendet werden. Schauen wir uns an, welche Instrumente unserem Testteam helfen, die Qualität unserer Anwendungen zu überwachen:

- Postman – mit diesem Tool können Sie HTTP-Abfragen entwickeln und bearbeiten. Die Abfragen und die Serverantworten können auf der Festplatte gespeichert werden, um sie erneut zu prüfen und wiederzuverwenden.
- Apache Jmeter – das beliebteste Tool für Lasttests. Es ist weit verbreitet aufgrund seiner komfortablen Benutzeroberfläche, Plattformunabhängigkeit, Multi-Threading, Erweiterbarkeit und umfangreichen Möglichkeiten zur Erstellung von Berichten. Dank seiner Modularchitektur ist es möglich, JMeter zu erweitern und die exotischsten Testszenarien zu realisieren. Das Tool unterstützt auch verteilte Tests, bei denen die Last von mehreren Maschinen erzeugt wird.
- Capybara – eine in Ruby geschriebene Bibliothek, die eine Simulation der Interaktion des Benutzers mit der Anwendung ermöglicht.
- Selenium WebDriver – eine Reihe von Bibliotheken für verschiedene Programmiersprachen, die die Tests mit ziemlich komplizierter Logik enthalten. Es ermöglicht Ihnen, einen zuverlässigen Automatisierungsrahmen zu schaffen, der in jedem Browser arbeiten kann und einen Test für jedes Programm, das in einer beliebigen Sprache geschrieben wurde, erstellen kann.
- BrowserStack – gibt Ihnen die Möglichkeit, die Kompatibilität der Anwendung mit verschiedenen Browsern aus der Ferne zu testen. Es ermöglicht Ihnen, den erforderlichen Browser für jedes Gerät und die Bildschirmauflösung zu wählen. Der Tester kann die Screenshots direkt im Tool erstellen, bearbeiten und versenden. Es ist auch möglich, eine der Standardauflösungen zu wählen oder die erforderlichen Parameter manuell festzulegen.
Die für die Tests verwendeten Browser-Erweiterungen
Obwohl Testprogramme den Prozess stark vereinfachen, sind sie nicht die einzigen Werkzeuge, die von QA-Spezialisten bei ihrer Arbeit verwendet werden können. Die folgenden Browser-Erweiterungen automatisieren und vereinfachen die verschiedenen Aktionen, die während des Testens durchgeführt werden, und beschleunigen den Prozess erheblich:
- Web Developer ist eine Reihe von Werkzeugen für die Verwaltung verschiedener Elemente der Web-Ressource – wie Mockup-Analyse, Code-Tests und Größenänderung der Seite. Es hilft, die Testzeit zu verkürzen, indem es die Möglichkeit bietet, die Aktionen mit mehreren Klicks auszuführen. So müssen Sie zum Beispiel nicht mehr die Browsereinstellungen öffnen, um die Cookies zu löschen – mit Web Developer können Sie dies mit zwei Klicks erledigen.
- Performance Analyser ist eine Erweiterung, die die Daten der Ladegeschwindigkeit Ihrer Seite als Diagramm ausgibt. Sie zeigt, wie viel Zeit jeder Prozess benötigt, und die von einem Plugin präsentierten Daten können für die Analyse der Optimierung verwendet werden.
- Exploratory Testing Chrome hilft dabei, die Bugs schnell in der Tabelle zu dokumentieren. Durch das Anfertigen eines Screenshots, das Hinzufügen der Fehlerzusammenfassung und das Hinzufügen zur Tabelle wird der QA-Ingenieur nicht vom Testen des aktuellen Moduls abgelenkt. Das Dokument kann heruntergeladen und später in einen ausführlichen Fehlerbericht umgewandelt werden.
- WhatFont ist ein Plugin, das die notwendigen Informationen über die Schriftart liefert: Name, Größe, Farbe, etc. Die Ausgabebeschreibung kann den Fehlerberichten beigefügt werden.
- Postman Interceptor ermöglicht es Ihnen, Anfragen zu verfolgen und abzufangen, die während der Benutzerinteraktion mit der Benutzeroberfläche der Webanwendungen gesendet werden. Er hilft dabei, die Anfragen zu ändern, die Back-End-Funktionen zu überprüfen und zu validieren. Die Installation der Desktop-Version von Postman ist erforderlich.
Schlussfolgerung
Der Entwicklungszyklus ist ein langer und komplizierter Prozess, bei dem jede Phase wichtig für die Qualität des Endprodukts ist. Deshalb ist es sehr empfehlenswert, dass das QS-Team von Anfang an an der Anwendungsentwicklung beteiligt ist und das Produkt auch nach seiner Veröffentlichung unterstützt. Nachdem Sie diesen Artikel gelesen haben, wissen Sie, welche Arten von Softwaretests es gibt und welche Bedeutung sie für den Entwicklungsprozess haben. Bei der Arbeit an unseren Projekten legen wir großen Wert auf die Testabdeckung in jeder Phase des Entwicklungsprozesses – dies hilft uns, die Qualität unseres Produkts zu gewährleisten.