Die erfolgreiche Softwareentwicklung lässt sich nicht nur dadurch garantieren, dass das Projekt rechtzeitig und im Budget abgeschlossen wurde. Es gibt noch einen weiteren Faktor, der sicherstellt, dass das veröffentlichte Produkt sicher und ordnungsgemäß funktioniert: die Qualität der Software.
Ab 2021 begann die in New Jersey ansässige Virtua Health mit der Impfung gegen COVID-19. Nachdem jedoch Patienten begonnen hatten, sich über das automatisierte Reservierungssystem für Termine zu registrieren, stellte das Krankenhaus fest, dass Zwischen 10.000 und 11.000 Besuche wurden doppelt erfasst. Das Systemproblem hat bei Virtua Health zu einer Verlangsamung der Krankenhausbetriebe geführt.
Natürlich behoben das Unternehmen die Fehler nach der Feststellung des Problems. Aber dieser Vorfall kann als Erinnerung an die Bedeutung der Qualitätssicherung für jede Art von Software dienen. In diesem Artikel werden Ansätze zur Testung als wesentlicher Bestandteil von Geschäftsprozessen diskutiert und mehrere effektive Arten der Qualitätsprüfung vorgestellt.
Schritte des Qualitätssicherungsprozesses
Das Testverfahren lässt sich in folgende Phasen unterteilen:
Lassen Sie uns untersuchen, welche Aktivitäten und Ergebnisse jede Phase umfasst.
Anforderungen überprüfen
Bevor der Entwicklungsprozess beginnt, können Sie QA-Spezialisten einsetzen. Sie helfen dabei, Probleme in der Geschäftslogik eines Produkts zu identifizieren und beseitigen einige potenzielle Probleme, noch bevor das Entwicklungsteam die Projektdokumentation erstellt. Dies reduziert auch die Entwicklungskosten, da Fehler bei einer frühzeitigen Erkennung leichter behoben werden können.
Darüber hinaus helfen QA-Spezialisten dabei, die Softwarefunktionen zu definieren und zu analysieren; oft arbeiten sie in Zusammenarbeit mit einem erfahrenen IoT-Softwareentwicklungsunternehmen zusammen, um optimale Ergebnisse zu gewährleisten. Und bereits in der Phase der Anforderungenüberprüfung denken die QA-Spezialisten darüber nach, wie jede Funktion getestet werden soll. Und bereits in der Phase der Anforderungenüberprüfung denken die QA-Spezialisten darüber nach, wie jede Funktion getestet werden soll.
Anschließend erstellt das Entwicklungsteam eine Produktanforderungsbeschreibung, die den Status einer in Entwicklung befindlichen Softwarelösung beschreibt. Nachdem die Beschreibung fertiggestellt ist, erstellen die Designer Wireframes. In dieser Phase stellen QA-Spezialisten sicher, dass die Wireframes alle in der Beschreibung beschriebenen Geschäftslogiken anzeigen. Sie prüfen außerdem, ob alles den Richtlinien von Google und/oder Apple für mobile Apps entspricht.
Planungsprüfungen
Traditionell werden alle Qualitätssicherungs- und Testaktivitäten vor Beginn eines Projekts in einem Testplan dokumentiert. QA-Spezialisten erstellen ein Teststrategie-Dokument, das beschreibt:
- Testumgebungen (Testgeräte, Betriebssystemversionen usw.)
- die Arten der zu durchführenden Tests unter Berücksichtigung der Besonderheiten des Projekts
- Kriterien für den Beginn und das Ende der Tests.
Vor Beginn eines jeden Sprintes nimmt der zuständige QA-Spezialist an einem Sprintplanungsmeeting teil. Bei diesem Meeting diskutiert das Team den Umfang des Sprintes und die Details der Implementierung. Dies hilft dem QA-Spezialisten, die Liste der Funktionen zu ermitteln, die für die Erstellung einer Checkliste für die Testplanung benötigt werden. Während des Meetings verhandelt der QA-Spezialist außerdem über die Liefertermine für Builds, die zur Durchführung in der Mitte des Sprintes geplant sind, sowie für Regressionstests am Ende jedes Sprintes.
In der Regel erstellen Entwickler und QA-Spezialisten nicht auf einmal eine Checkliste für das gesamte Projekt. Während der Entwicklung können sich die Anforderungen ändern, was Teile einer umfassenden Checkliste überflüssig macht. Stattdessen können Sie Checklisten pro Sprint erstellen. Dies hilft, unnötige Arbeit zu eliminieren und Geld zu sparen. Erstellen Sie Dokumentation nur dann, wenn sie notwendig ist.
Entwurf von Tests
Nachdem ein Sprint geplant wurde und die Aufgaben im Sprint-Rahmen definiert wurden, können QA-Spezialisten beginnen, entweder eine Checkliste oder Testfälle zu erstellen.
Die Definition von Testfällen, die einem bestimmten Testszenario gewidmet sind, ist eine gängige Praxis, um zu überprüfen, dass eine App wie erwartet funktioniert. Testfälle bestehen aus einem Titel, Voraussetzungen, zu treffenden Schritten und erwarteten Ergebnissen.
Hier ein Beispiel für einen Testfall:
Testfälle eignen sich gut für komplexe Testszenarien, andererseits ist die Erstellung von Testfällen extrem zeitaufwändig. Um den Entwicklungsprozess zu beschleunigen und die Kosten zu senken, verwendet das Team Testchecklisten anstelle von Testfällen, um Benutzerflüsse zu testen.
Eine Checkliste erfüllt dieselbe Funktion wie ein Testfall, ist jedoch weniger detailliert und erfordert weniger Zeit zur Erstellung. Sie kann für grundlegende Benutzerflüsse verwendet werden. Zum Beispiel ist es unpraktisch, Testfälle für die Standardregistrierung von Benutzern zu erstellen, die normalerweise mehrere Schritte umfasst. In unserer Erfahrung beim Testen von Apps haben wir jedoch gelernt, Testchecklisten auch für komplexe Testszenarien anzuwenden. Dies macht Softwaretests übersichtlich und effektiv.
Beispiel einer Checkliste:
Diese Checkliste wurde mithilfe eines Tools erstellt, das den Namen „ TestRail, das alle Informationen zu allen Tests während des gesamten Entwicklungsprozesses speichert. Alle Teststatistiken für die gesamte Produktentwicklung werden in TestRail gespeichert. Die Statistiken sind in einer einfachen Form verfügbar:
Das QA-Team hält die Checklisten während der gesamten Produktentwicklung stets aktuell.
Einrichten der Testumgebung
Wenn die Checkliste oder der Testfall fertig ist und die Entwickler ihre letzten Änderungen an einer Funktion abgeschlossen haben, müssen QA-Spezialisten sicherstellen, dass die Testumgebung bereit ist. Die Bereitstellung einer Testumgebung umfasst:
- Die Erstellung einer Testvorrichtung mit einer bestimmten Version eines Betriebssystems
- Die Installation aller notwendigen Anwendungen wie Fake GPS, iTools und Charles Proxy
- Login in Facebook und anderen Konten.
Testen durchführen
Am häufigsten wenden QA-Experten sowohl manuellen als auch automatisierten Testen an, um die höchste Codequalität bei allen von ihnen entwickelten Softwareprodukten zu gewährleisten. QA-Experten testen die Front- und Back-End-Komponenten sowie die API-Tests jeder Anwendung.
Lesen Sie auch: Einheitstests für Web-Software: Warum sie notwendig sind und welche Frameworks verwendet werden können
Berichterstattung über Testergebnisse
Es ist wichtig, schnell Feedback zu der Qualität eines Produkts und zu etwaigen Fehlern zu geben, die während des Softwaretests festgestellt werden. Sobald ein Fehler entdeckt wird, kann das QA-Team ihn in Jira registrieren, das auch als Bug-Tracking-System dient.
Alle Teammitglieder haben Zugriff auf Jira, sodass alle Fehler und deren Status für alle Teilnehmer des Entwicklungsprozesses sichtbar sind. Am Ende der Tests können Statistiken zu der abgeschlossenen Software-Testung und die Testergebnisse in TestRail eingesehen werden. Wenn wir automatisierte Tests durchführen, wird automatisch ein Bericht erstellt und an unsere QA-Spezialisten gesendet.
Nach jedem Sprint stellen wir unseren Kunden ein Build-Dokument vor, damit sie unseren Fortschritt sehen können, die Qualität und die Funktionalität der Funktionen bewerten können und gegebenenfalls Änderungen an den Anforderungen vornehmen können. Außerdem stellen wir eine Release-Note bereit, in der wir aufgeführt haben, welche Funktionen bereits fertiggestellt sind und welche noch in Arbeit sind, sowie eine Liste der identifizierten Probleme, die in Kürze behoben werden.
Typen von Tests
Nun wollen wir alle Arten von Tests besprechen, die häufig eingesetzt werden, und wie deren Einsatz die Entwicklungsresultate beeinflusst.
Testung neuer Funktionen
Bei der Testung neuer Funktionen wird überprüft, ob eine Funktion wie erwartet aussieht und funktioniert, und sichergestellt, dass Fehler schnell entdeckt werden. In dieser Phase wird eine Funktion gründlich getestet. QA-Spezialisten testen:
- die Funktionalität des Produkts und wie es funktioniert
- Das Erscheinungsbild des Produkts
- Einhaltung der UI/UX-Design-Richtlinien.
Diese Testphase wird als abgeschlossen betrachtet, wenn alle Testfälle, die mit einer neuen Funktion zusammenhängen, erfolgreich abgeschlossen wurden. In dieser Phase wird die Funktion unabhängig getestet; das bedeutet, dass Interaktionen mit anderen Funktionen nicht getestet werden. Sie sollten außerdem sicherstellen, dass die Funktion auch auf verschiedenen Geräten korrekt funktioniert.
Wenn ein Projekt an Funktionsfähigkeit gewinnt, müssen QA-Spezialisten sicherstellen, dass alle Funktionen zusammen ordnungsgemäß funktionieren und dass neue Funktionen die bestehende Funktionalität nicht beeinträchtigen. Um dies zu erreichen, führen sie Regressionstests durch.
Regressionstests
Bei der Regressionstests wird der aktuelle Zustand des Produkts überprüft. Diese Art der Prüfung stellt sicher, dass Änderungen an Code (neue Funktionen, Fehlerbehebungen) keine bereits implementierte Funktionalität beeinträchtigen. QA-Spezialisten sollten jede Funktion sowie die Interaktionen zwischen den Funktionen gründlich testen. Der Code muss alle Testfälle bestehen, um akzeptiert zu werden.
Da Regressionstests recht zeitaufwändig und kostspielig sind, empfehlen wir, sie alle drei oder vier Sprints (je nach Größe des Projekts) und vor der Veröffentlichung durchzuführen. Regressionstests werden normalerweise vor der Veröffentlichung eines Produktes durchgeführt, da sie dazu beitragen, die Auswirkungen aller Änderungen auf das bestehende Produkt zu definieren und eventuelle fehlerhafte Funktionen oder Mängel zu identifizieren.
Die Regressionstests können auf einem oder mehreren Geräten durchgeführt werden und können mit dem Smoke-Testing auf mehreren Geräten kombiniert werden, wobei ein Gerät für alle Testszenarien verwendet wird.
Rauchprüfung
Der Smoke-Test ist eine schnelle und oberflächliche Art des Tests, die überprüft, ob eine Build stabil ist und ob die Kernfunktionen funktionieren. Szenarien mit der höchsten Priorität werden nach Funktionsmerkmalen geprüft, jedoch nicht in detailierter Weise.
Der Smoke-Test findet nach Abschluss eines Teils der Arbeit statt (Bugsfixen, Featureänderungen, Refactoring, Servermigration). Dieser Testtyp kann nicht den vollständigen Test ersetzen, da Probleme bei alternativen Szenarien übersehen werden können.
Aktualisierung der Tests
Aktualisierungstests werden nur für aktualisierte Software angeboten. Diese Art von Tests stellt sicher, dass bestehende Benutzer von einer neuen Version des Produkts nicht beeinträchtigt werden – dass ihre Daten nicht verloren gehen und dass sowohl die alten als auch die neuen Funktionen wie erwartet funktionieren.
Nicht-funktionaler Test
QA-Tester führen auch sogenannte nicht-funktionalen Tests durch, die nicht auf die spezifischen Funktionen einer App anspielen. Sie führen die folgenden Arten nicht-funktionaler Tests durch:
Leistungsprüfung Ziel ist es, die Systemleistung unter Berücksichtigung von Empfindlichkeit, Zugänglichkeit, Reaktionsfähigkeit und Stabilität bei einer bestimmten Arbeitsbelastung zu überprüfen.
Lastenprüfung Er prüft die Leistung eines Systems, wenn mehrere Benutzer gleichzeitig darauf zugreifen.
Kompatibilitätsprüfung Er untersucht, wie ein Produkt in verschiedenen Betriebssystemversionen und auf verschiedenen Geräten funktioniert.
Verfahrensprüfung Überprüft die Leistung eines Produkts unter Bedingungen mit geringer Batteriekapazität oder bei fehlender Internetverbindung.
Compliance-Kontrolle Sichert, dass eine App den Richtlinien von Google und/oder Apple entspricht.
Installationsprüfung Überprüft, ob eine App erfolgreich installiert und deinstalliert wird.
Unterbrechungstests zeigt, wie sich ein Produkt auf Unterbrechungen (Verlust der Netzwerkverbindung, Benachrichtigungen usw.) reagiert und überprüft, ob es seine Arbeit korrekt wieder aufnehmen kann.
Lokalisierungstests Überprüft, ob nach der Übersetzung des Inhalts eines Produkts in eine andere Sprache keine neuen Fehler aufgetreten sind.
Migrationstests Sorgt dafür, dass alles reibungslos funktioniert, wenn neue Funktionen hinzugefügt oder der Technologie-Stack einer bereits implementierten Softwarelösung geändert wird.
Anwenderfreundlichkeitstests Überprüft die Leistung des Produkts und die Benutzerfreundlichkeit der Benutzeroberfläche/des User Experience Designs.
Alle diese Arten von Tests können mit oder ohne Checkliste durchgeführt werden. Eine Checkliste ist einfach ein Rahmenwerk, das uns hilft, an den Plan zu bleiben und sicherzustellen, dass wir nichts vergessen. Es ist jedoch unmöglich, alle durchgeführten Kontrollen zu dokumentieren; und ganz einfach ist es auch nicht notwendig. Tester verwenden eine Checkliste zusammen mit explorativen Tests, wodurch die Tests schnell und flexibel ablaufen. Dies ermöglicht es den QA-Spezialisten, sich auf echte Probleme zu konzentrieren.
Lesen Sie auch: Sichere Anwendungsentwicklung: Von der Planung bis zur Produktion
Testen vor der Veröffentlichung
Das QA-Team überprüft Ihre Produkte sorgfältig, bevor sie veröffentlicht werden. In der Regel führen wir Regressionstests und explorative Tests durch. Nicht zuletzt stellen wir einen weiteren QA-Spezialisten ein, der das Projekt noch nicht bearbeitet hat, um die Arbeit von einer neuen Perspektive zu betrachten, kurz vor der endgültigen Veröffentlichung.
Testautomatisierung
Wir automatisieren auch die wichtigsten Benutzerflüsse bei langfristigen Projekten, die oft regelmäßig Änderungen und neue Funktionen erfahren. Beispielsweise ist bei manueller Testung erforderlich, dass Tester ständig dieselben Schritte durchführen, um sicherzustellen, dass neue Funktionen oder Codeänderungen keine Auswirkungen auf andere Teile des Produkts haben.
Anstatt jede neue Funktion oder Codeänderung wiederholt manuell zu testen, erstellen wir Tests, die alles automatisch prüfen. Dadurch sparen wir Zeit und lassen die QA-Spezialisten die manuelle Prüfung auf komplexe, individuelle Fälle konzentrieren.
Wenn Sie eine Testautomatisierung sicherstellen möchten, bedeutet das nicht, dass Sie absolut alles automatisieren müssen. Sehen Sie, wie wir entscheiden, welche Tests wir automatisieren.
Wann ist automatisierte Testung eine gute Idee?
Generell gilt: Je häufiger ein Test durchgeführt wird, desto besser ist es, ihn zu automatisieren. Tests, die lange dauern oder nachts durchgeführt werden, sollten ebenfalls automatisiert werden. Die Methoden zur Testautomatisierung variieren auch je nach Art der Prüfung.
Regressionstests. Es ist angebracht, die wichtigsten Funktionen und Anwendungsfälle mithilfe automatisierter Regressionstests abzubilden, um sicherzustellen, dass es vor der Lieferung des Endprodukts keine kritischen Probleme gibt.
Rauchprüfung. Automatischer Test hilft dabei, schnell Feedback über den Status der Projektentwicklung zu erhalten und Entscheidungen über die weiteren Schritte des tiefgreifenden Tests zu treffen.
Datengetriebene Tests. Automatisierte Tests sind sehr nützlich, wenn man einen Test mit unterschiedlichen Eingaben oder mit einer großen Menge an Daten durchführen muss.
Leistungs- und Lasttests. Es gibt einfach keine manuellen Alternativen zu automatisierten Leistungs- und Lasttests.
Tests, die nicht automatisiert werden müssen
Benutzererfahrungs- und Usability-Tests, die eine Antwort des Benutzers erfordern und Tests, die nicht vollständig automatisiert werden können, sollten nicht automatisiert werden. Es ist ebenfalls wirkungslos, Tests zu automatisieren, die nur einmal oder so schnell wie möglich durchgeführt werden sollen.
Tests, die nicht automatisiert werden müssen
Benutzererfahrungs- und Usability-Tests, die eine Antwort des Benutzers erfordern und Tests, die nicht vollständig automatisiert werden können, sollten nicht automatisiert werden. Es ist ebenfalls wirkungslos, Tests zu automatisieren, die nur einmal oder so schnell wie möglich durchgeführt werden sollen.
Welche Arten automatischer Tests verwenden wir?
Wir verwenden zwei Arten automatisierter Tests.
Backend-Tests. In der Regel verwenden QA-Teams Backend-Tests für REST-APIs und Integrationstests sowie für die Arbeit mit Datenbanken. Mit Backend-Tests können wir Fehler bereits in der frühen Entwicklungsphase erkennen, bevor die implementierten Funktionen an das Frontend-Team weitergeleitet werden. Diese Tests sind stabil und schneller als GUI-Tests, sodass wir schnell Feedback zum Build-Status erhalten können. Die Integrationstests sorgen dafür, dass integrierte Module wie erwartet funktionieren.
GUI- und E2E-Tests für Web- und Mobile-Plattformen (Android und iOS). GUI-Automatisierung hilft bei der Testung von mobilen und Web-Apps über eine grafische Benutzeroberfläche (GUI). Der Hauptvorteil von GUI-Tests besteht darin, dass die App genau so getestet wird, wie sie von einem Endbenutzer verwendet wird. Mit Hilfe von End-to-End-Tests können wir Geschäftsszenarien von Anfang bis Ende nachvollziehen und die Funktionsweise des gesamten Systems überprüfen.
Typischerweise führen manuelle QA-Spezialisten Tests durch und erstellen detaillierte Testfälle. Anschließend implementiert ein Spezialist für die Qualitätssicherung der Automatisierungstests (ATQC) die für die Automatisierung ausgewählten Skripts und legt fest, wann und wie oft Tests ausgeführt werden. Wir empfehlen die Verwendung von CI/CD-Prozessen und die manuelle Durchführung von automatisierten Tests.
Leider sind automatisierte Tests nicht immer kosteneffektiv, insbesondere für kleine Projekte. Automatische Tests sollten während des gesamten Entwicklungsprozesses erstellt und verwaltet werden, genau wie jeder andere Code. Dies kann automatisierte Tests ziemlich teuer machen.
Darüber hinaus sind erfahrene QA-Automatisierungstechniker, die QA-Beratung anbieten, sich sicher, dass nicht alle Arten von Tests automatisiert werden können und dass für andere diese Art von Tests einfach keinen Sinn ergeben. Daher bewerten wir vor der Erstellung automatisierter Tests die Vor- und Nachteile sorgfältig, um zu entscheiden, ob wir sie für Ihr Projekt benötigen.
Wenn Sie Fragen zu unseren Dienstleistungen im Bereich der QA-Outsourcing und Softwaretests oder der gesamten Testabwicklung haben, schreiben Sie uns einfach eine E-Mail.
Hilfe bei der Testautomatisierung?
Wir können helfen!