geschrieben von Lauma Fey Qualitätssicherung
10 Software Testing Tips for Quality Assurance in Software Development
10 Software Testing Tips for Quality Assurance in Software Development
11.01.2016
Über den Autor Lauma Fey Lauma Fey Qualitätssicherung

Warum Software einer Qualitätssicherung bedarf

Software-Testing ist die Überprüfung und Bewertung von Software auf deren Qualität sowie auf Erfüllung der vorher spezifizierten Anforderungen. Ziel ist es, Mängel frühzeitig zu erkennen und rechtzeitig zu beheben. Software-Testing ist damit nicht nur ein wichtiger Teil der Qualitätssicherung, sondern auch fester Bestandteil des Software-Entwicklungsprozesses.

Tipps für Software-Testing und Software-Qualitätssicherung

1. Philosophie – Qualität entsteht bei der Unternehmenseinstellung

Die Qualität von Softwareentwicklungen wird durch die Unternehmensphilosophie mitbestimmt. Die Qualität der entwickelten Software muss dem entwickelnden Dienstleister wichtig sein, sodass überhaupt der Raum für gute Softwarequalität entstehen kann. Guter Code und Bugfixes brauchen Zeit – Testing ist aber mehr als ein Kostenfaktor und ein notwendiges Übel. Es ist eine äußerst sinnvolle Investition, da fehlerhafte, nicht-funktionierende Software deutlich teurer ist und User verärgert.

2. Bewusstsein – Qualität fängt bei den Entwicklern an

Neben der Unternehmensphilosophie ist das Qualitätsbewusstsein bei den Softwareentwicklern eine wichtige Grundvoraussetzung. Den Entwicklern muss klar sein, wie wichtig qualitativ hochwertige Software ist und welche Auswirkungen Fehler auf das Unternehmen haben können – insbesondere bei geschäftskritischen Anwendungen. Der erste Schritt der Qualitätssicherung beginnt bereits bei der Programmierung, inklusive einer guten Konzeption und Planung der Software. Hier können durch saubere Vorarbeit spätere Fehler und Probleme vermieden werden. Auch beim Bugfixing sollten saubere Problemlösungen gegenüber einfachen Workarounds bevorzugt werden. Auch wenn es mal länger dauert – Quick-Fixes brechen sonst schnell an anderen Stellen wieder auf.

3. Qualitätssicherung nicht auf eine Phase reduzieren

Qualitätssicherung ist nicht das letzte Glied der Entwicklungskette, es ist ein Schritt im fortlaufenden Prozess der agilen Softwareentwicklung. Testing findet in jeder Iteration statt, bevor die Entwicklungskomponenten implementiert werden. Entsprechend muss Software-Testing als ein regelmäßiger und fortlaufender Entwicklungsschritt in den alltäglichen Entwicklungsprozess integriert werden.

4. Identifikation von Anforderungen und Qualitätskriterien

Vor der Entwicklung müssen die Anforderungen und Qualitätskriterien an die zu entwickelnde Software definiert werden. Der Sinn dessen ist, dass sowohl die Entwickler als auch alle anderen Projektbeteiligten wissen, was entwickelt werden soll sowie die Vereinheitlichung der verschiedenen Vorstellungen an Anforderungen und Qualität. Laut ISO 9126 unterteilt man die Qualitätsmerkmale von Software in sechs Kriterien: Funktionalität, Zuverlässigkeit, Benutzbarkeit, Effizienz, Änderbarkeit und Übertragbarkeit. Alle diese Anforderungen und Qualitätskriterien müssen vom Tester bestmöglich überprüft und die Ergebnisse durch gute Dokumentation frühzeitig kommuniziert werden. Dadurch können, wenn nötig, Fehler rechtzeitig behoben werden.

5. Dediziertes Fachpersonal

Das Testing muss einem Teammitglied fest zugeordnet werden. Zum einen gibt es dadurch eine klare Zuteilung dieser Aufgabe und zum anderen läuft man nicht Gefahr, dass Testing „so nebenbei“ gemacht wird. Testen ist mehr als nur das Klicken durch eine Software und kann nicht durch günstige Arbeitskräfte ersetzt werden. Strategien, Normen und Richtlinien müssen eingehalten werden. Testautomatisierung ist absolut bindend. Alle relevanten Testverfahren müssen von Anfang an in den Prozess integriert und fortlaufend durchgeführt werden. Nur durch dediziertes Fachpersonal kann dem Projektteam ausreichend Testerfahrung und methodische Testexpertise beigefügt werden.

6. Testautomatisierung

Software-Testing ist heutzutage Standard. Ca. 80 Prozent aller Tests sollten automatisiert sein. Automatisierte Tests sind vor allem sinnvoll für regelmäßige Tests mit vielen Wiederholungen oder bei manuell nur schwer durchführbaren Tests wie beispielsweise Lasttests. Bei automatisierten Tests unterscheidet man in:

  • Unit Tests
  • Komponententests
  • Integrationstests
  • Akzeptanztests
  • Graphical User Interface (GUI) Tests

Es lässt sich jedoch nicht alles automatisiert testen. Es ist beispielsweise nicht möglich, Software hinsichtlich ihrer Bedienbarkeit (unter anderem auch bei Tests barrierefreier Software) automatisiert zu überprüfen. Daher sollte das manuelle Testing immer fester Bestandteil der Qualitätssicherung sein.

7. Kommunikation mit Team und Stakeholdern

Kommunikation ist ein sehr wichtiger Bestandteil des Qualitätsmanagements. Fehler in der Software können nur durch gute Dokumentation adressiert, rekonstruiert und behoben werden. Neben einer guten Kommunikation im Team ist aber auch eine gute Kommunikation mit dem Kunden wichtig. Zum Beispiel im Fall von neuen Anforderungen: Werden diese nicht rechtzeitig kommuniziert, kann es zu großen Verzögerungen des Projektverlaufs und damit verbundenen Unkosten führen. Feedback sollte ein regelmäßiger Bestandteil der Qualitätssicherung sein, damit sowohl dem Entwicklerteam als auch dem Kunden der aktuelle Status stets bekannt ist.

8. Mehrwert für alle

Der Mehrwert von Testing und hohen Qualitätsanforderungen sollte allen Projektteilnehmern bewusst sein. Was wäre zum Beispiel, wenn Kunden eine Anwendung (wie einen Onlineshop) aufgrund von schlechter Usability verlassen – und was wären die Folgen und Kosten? Hier kann es schnell zu großen Umsatzverlusten kommen. Ein guter Grund, um in hochwertige Software zu investieren. Das Aufdecken von „Mäkeln“ eines Produktes gibt also nicht nur dem Entwickler, sondern auch dem Kunden die Chance, rechtzeitig Problematiken zu erkennen und zu beheben. So können zum Beispiel Konzepte des Kunden, wie beispielsweise vorab erstellte Designs, verbessert werden. Fallen diese bei Usability-Tests (vor allem auf mobilen Endgeräten) durch schlechte Bedienbarkeit auf, kann der Tester dies frühzeitig adressieren. Designs können angepasst und damit Umsatzverluste vermieden werden. Fehlt das Bewusstsein für Testing und hohe Qualitätsanforderungen, fehlen damit meist auch die notwendigen Ressourcen. Im schlimmsten Fall wird Fachpersonal durch Praktikanten ersetzt oder es wird komplett auf das Testing verzichtet.

9. Kontinuierlich besser werden und auf Veränderungen reagieren

Kontinuierliche Verbesserung ist ein Kernthema in der agilen Softwareentwicklung. Das gilt logischerweise auch für Software-Testing. Es erscheinen laufend neue Test-Tools und -Methoden, die der Qualitätssicherung von Software dienen. Ändern sich zum Beispiel die Anforderungen des Projektes, können oftmals bewährte Prozesse auf einmal nicht mehr angewendet werden. Daher sollten sich Tester fortlaufend über neue Tools und Methoden informieren und bestehende Prozesse regelmäßig hinterfragen. Dafür bietet sich unter anderem der Austausch unter Teams und Testern, auf Konferenzen oder in Test User Groups an, um Trends, Strategien, Probleme und deren Lösungen zu diskutieren. Das trägt nicht nur dazu bei, Tests und Prozesse anzupassen, sondern auch bestmöglich zu optimieren.

10. Die richtigen Testing-Tools verwenden

Testing-Tools sind ein elementarer Teil des Software-Testings, insbesondere bei automatisierten Tests. Neben einer strukturierten Arbeitsweise sind es die richtigen Testing-Tools, die die Arbeit eines Testers erst effizient machen.

Wir haben euch eine Liste mit guten Testing Tools erstellt, die wir bei unserer täglichen Arbeit verwenden. Es handelt sich um eine Auswahl an Testing Tools, es gibt darüber hinaus noch eine Vielzahl an weiteren Tools. Happy Testing!