Was du über Software Qualitätssicherung wissen musst

Software bestimmt unser aller Leben. Und so, wie kein Computer, kein modernes Auto und keine Verkehrsampel ohne einwandfreie Software laufen kann, so wichtig ist dementsprechend die Rolle der Software Qualitätssicherung.

In diesem Artikel erfährst du alle wichtigen Infos zu diesem Thema. Damit du in Zukunft genau weißt, was Software Qualitäts- sicherung ist, warum sie wichtig ist und wie man sie gewährleisten kann.

Was ist Software Qualitätssicherung genau?

Bei der Qualitätssicherung von Software (gerne auch “Software QS”, “software quality assurance” oder “software qa” genannt) geht es darum, dass bestimmte Qualitätsmerkmale eines Softwareprodukts gewährleistet werden.

    1. Funktionale Qualität:

      Die funktionale Qualität bestimmt, wie gut die Software für die Endverbraucher zu benutzen ist. Das fertige Softwareprodukt sollte einwandfrei in der Anwendung laufen und das bestmögliche Nutzererlebnis bieten.
    2. Strukturelle Qualität:

      Bei der strukturellen Qualität der Software dreht sich alles um den geschriebenen Code selbst. Lässt sich der Programmcode ohne Probleme nachbearbeiten und testen, so ist die strukturelle Qualität hoch. Die Qualitätssicherung verläuft hier ein wenig anders, da sie stark von den Fähigkeiten der Softwareentwickler abhängt.
    3. Prozessqualität:

      Die Prozessqualität wird in der Qualitätssicherung gerne vernachlässigt, ist aber ein elementarer Bestandteil. Sie bestimmt, wie pünktlich die Deadlines vom Team eingehalten werden und wie gut mit dem vorgegebenen Budget gewirtschaftet wird. Bei der Prozessqualität geht es folglich weniger um den Code selbst, als vielmehr um die Menschen dahinter und den Weg zum gesetzten Ziel.

Gute Software sieht so aus

Theorie ist schön und gut, um die Definition von Software und Qualitätssicherung zu verstehen. Aber hauchen wir der ganzen Sache mal etwas Leben ein.

Angenommen, du willst ein Programm schreiben (und anschließend verkaufen), mit dem man Videonachrichten verschicken kann. Also wie Whatsapp, nur mit dem Unterschied, dass es ausschließlich auf Videonachrichten basiert.

Damit dein fertiges Produkt oft gekauft wird, muss es einfach zu bedienen sein. Denn Nutzer hassen heutzutage nichts mehr, als Software, die nicht auf den ersten Blick verständlich zu bedienen ist.

    • Wie schnell können Videos aufgenommen und verschickt werden?
    • Wie gut soll das finale Interface funktionieren?
    • Auf welchen Geräten soll die Software laufen?
    • Wie wird sichergestellt, dass der Login immer funktioniert?
    • Was ist der schnellste Weg, ein Update ohne neue Bugs zu veröffentlichen?

All das sind Fragen, die du dir stellen solltest, um ein erfolgreiches Produkt mithilfe von funktionaler Qualitätssicherung an den Markt zu bringen und dich zu behaupten.

Du kannst dir vorstellen, dass dieses Projekt kein leichtes Unterfangen ist. Um auf allen Geräten das bestmögliche Nutzererlebnis zu bieten braucht es zig Tausend Zeilen an Programmcode.

Wer will da noch den Überblick behalten und wer stellt sicher, dass kein überflüssiger Code verwendet wird?

An dieser Stelle kommt die strukturelle Qualitätssicherung ins Spiel. Sie ist zu einem großen Teil von den Fähigkeiten des Entwicklungsteams abhängig. Denn alle Teammitglieder sind für die gesamte Qualität des Produkts verantwortlich.

Die Product Owner müssen gute Stories schreiben. Die Entwickler sind für den Code verantwortlich, welcher zusätzlich Edge Cases (Sonderfälle) auffängt. Und die Tester stellen anschließend sicher, dass das Produkt so entwickelt wurde, wie es untereinander oder mit dem Kunden abgestimmt wurde.

Hast du für dein Video-Messaging Programm ein ganzes Team an Software Engineers eingestellt, dann bedarf es zusätzlich einer strengen Qualitätskontrolle des Prozesses. Schließlich hast du nicht unendlich viel Budget zur Verfügung und jeder muss sich an ein paar vorgegebene Regeln halten.

Wie du siehst, gehen die verschiedenen Formen der Qualitätssicherung Hand in Hand. Es wäre verkehrt, die eine Qualität über die andere zu stellen, weil die gesamte Kette darunter leiden würde.

Software Qualitätsmerkmale nach ISO-Standard

Seit 2005 gilt die ISO/IEC 25000 als international anerkannte Norm nach der sich Software Qualitätsmerkmale richten sollen.

Ziel des ISO-Standards ist es, Qualitätsmerkmale vorzugeben an denen sich die Software orientieren sollte.

Qualitätsmerkmale von Software nach ISO-Standard

Schnell wird deutlich, dass es bei der Qualitätssicherung von Programmen nicht nur um Fehlerfindung im Programmcode geht. Eine vernünftige Quality Assurance muss das Erlebnis mit der Software für alle Beteiligten – also Kunden, Entwickler und mögliche Investoren – angenehmer machen.

Die vorgegebenen Normen stellen dabei sicher, dass die Software bei großen und risikoreichen Projekten – in der Medizintechnik oder Luftfahrt – zum Einsatz kommen darf. Überall dort, wo Menschen in Gefahr geraten können, sollte die Software korrekt funktionieren.

Stell dir zum Beispiel vor, es geht um Software, welche die Systeme in einem Atomkraftwerk steuert. Wenn da falsche Daten bei den Messungen ausgewertet werden oder die Software bestimmte Fehlermeldungen gar nicht erst anzeigt, kann es hoch kritische Probleme mit sich führen.

Damit es nicht so weit kommt, müssen die Softwareanbieter eine Vielzahl an Normen einhalten können. Je kritischer das Projekt, desto strenger die Vorgaben.

Die Methoden, mit denen Software getestet wird

Es gibt wohl keine Software, die nicht mindestens einen Bug (= Fehler) beinhaltet. Je komplexer das Produkt, desto mehr Fehler schleichen sich ein – das ist nur allzu menschlich und ist auch der Grund, warum die Qualitätssicherung so wichtig ist.

Aber wie findet man bloß diese Fehler?

Das ist die Aufgabe von Software Testern, welche die Qualitätssicherung durchführen. Mithilfe einer ganzen Werkzeugkiste der verschiedensten Testautomatisierungstools (mehr dazu in Kürze) macht der Tester die Fehler ausfindig.

Softwaretests hängen zu einem großen Teil davon ab, um welche Art von Software es sich eigentlich handelt. So benötigt man für Gaming-Software ganz andere Testing Tools, als es bei Software für Betriebssysteme der Fall wäre.

Ein weiterer elementarer Bestandteil ist die Sprache, auf der ein Programm basiert. So macht es einen markanten Unterschied, ob die Software mit C++, Java, PHP, Python, Kotlin oder sonst einer Sprache geschrieben wurde.

Grundsätzlich unterscheidet man zwischen zwei verschiedenen Arten von Tests:

    1.  Manuelle Software Tests:

      Manuell (also per Hand) eine Software auf Mängel zu testen ist sehr zeitaufwendig und daher kostenintensiv. Bei komplexeren Programmen, mit Millionen Zeilen Code, würde es sich wirtschaftlich nie rechnen, wenn jeder Test manuell durchgeführt werden würde. Für diese Fälle gibt es automatisierte Tests.
    2. Automatisierte Software Tests:

      Automatisierte Software Tests Bei automatisierten Tests für die Software werden sozusagen eigene kleine Programme geschrieben, die dann das eigentliche Softwareprodukt prüfen sollen. In der Regel werden kleinste Einheiten im Code automatisiert getestet (Unit Test), sodass mögliche Fehler später schneller gefunden werden können.

Der Prozess des Software Testings kann bzw. sollte in allen Stadien der Entwicklung stattfinden – beginnend mit dem Konzept. Nur so kann durchgehend gewährleistet werden, dass das Produkt nicht nur gut bei den Endbenutzern ankommt, sondern auch für das Team leichter zu bearbeiten ist.

Bei größeren Unternehmen, deren Software global an wichtigen Stellen eingesetzt wird, muss die Software sogar täglich vollständig getestet werden. Das ist auch notwendig, wenn man bedenkt, dass eben jene Programme täglich weiterentwickelt und verändert werden. Fehler darf man sich hier nicht erlauben.

Die Tools für die Software Testautomatisierung

Je nachdem, was man testen möchte – also nur eine kleine Einheit (Unit Test) oder den Source Code (statische Analyse) – kommen unterschiedliche Tools zum Einsatz.

Es gibt inzwischen unzählige Beispiele für die verschiedensten Anwendungsbereiche der verschiedensten Anbieter. Manche sind kostenlos und leisten nur einen minimalen Beitrag im Test, andere sind sehr hochpreisig aber dafür universal einsetzbar.

Hier eine kurze Übersicht bekannter Tools zur Software Testautomatisierung:

Testing ToolAnwendungsbereichTest Level
AppiumiOS und AndroidUI Tests
SeleniumWebbrowser, Desktop und MobilUI Tests / Integrations Tests
JunitJava ProgrammeUnit Tests / Integrations Tests
PHPUnitPHP-SkripteUnits Tests
JMeterAnwendungen mit oder zwischen ServernLasttests
SonarQubeAnwendungen mit ServeranbindungeSicherheitstest / Statische Analysen

Diese Frameworks helfen Software Testern dabei, einen Test aufzusetzen und die Qualität der Software zu kontrollieren. Die ganze Arbeit abnehmen können sie dir aber leider nicht. Das Finden der Bugs im Code, sowie das Verbessern muss immer noch von menschlicher Hand erledigt werden.

Es wird zwar schon an AI (Artificial Intelligence) basierten Lösungen für Whitebox Testing Tools gearbeitet, aber von einem breiten und profitablen Einsatz sind wir noch weit entfernt.

Was kommt nach der Qualitätssicherung?

Nach dem Test, ist vor dem Test. Die Qualitätssicherung der Software ist ein ständiger Prozess, der niemals abgeschlossen ist – zumindest nicht, solange die Software noch aktiv vertrieben wird.

Bei jedem Test können neue Mängel ans Tageslicht befördert werden, die es dann zu beheben gilt. So wird das Endprodukt mit mal zu mal besser und die Programmierer können sich wieder dem Entwickeln neuer Features widmen.

Außerdem bleibt die Welt nach dem Release einer Software nicht stehen, denn es kommen immer wieder neue OS (Operating Systems) hinzu, für welche eine Software zuerst optimiert werden muss.

Fazit: Software QS ist für alle wichtig

Die moderne Qualitätssicherung findet ihre Wurzeln in den 1970er Jahren und ist bereits tiefgehender Bestandteil unserer heutigen Zeit. Ohne hochkarätige Qualitätssicherung von Software würde unsere zivilisierte Gesellschaft schnell nicht mehr funktionieren.

Verständlich also, dass viele Unternehmen auf diesen Aspekt – nicht zuletzt wegen der vorgegebenen ISO-Standards – ein besonderes Augenmerk legen. Bei umfangreichen Programmen, welche intensiv genutzt werden, müssen große Teams von eigens dafür ausgebildeten Mitarbeitern und Beratern, die Softwarequalität sichern.

Genauso, wie die Produkte für den Endkunden kontinuierlich getestet werden, müssen auch Software Test Tools ständig verbessert und auf mögliche Fehler kontrolliert werden.

Zum Glück sind die meisten Testing Tools Open Source!