Quality and Software testing at AT Internet

In einem vorangegangenen Artikel habe ich darüber geschrieben, warum die Automatisierung unverzichtbar ist um regelmäßig und effektiv Tests in einer agilen Entwicklungs-Umgebung durchzuführen. Nehmen Sie sich einen Moment Zeit um über eine der Grundlagen im Software-Testing nachzudenken: den Qualitäts-Begriff.

Software-Qualität

Was bedeutet das für Sie?

  • Handelt es sich um die Zahl der Bugs pro Code-Zeile?
    Falsch. Das als Metrik zu nehmen, wäre gefährlich, da sie zum Beispiel die Fehler, die noch unentdeckt sind, nicht berücksichtigt und auch nicht, wie viel Aufwand man damit hat.
  • Ist es der Betrag, den Sie ins Testen der Anwendungen investieren?
    Wieder falsch. Einige Unternehmen hätten gern einen direkten Zusammenhang zwischen den Investitionen ins (oft manuelle) Testen von Anwendungen und der Produktqualität. Aber das ist nicht immer der Fall. Diese Investition ermöglicht es Ihnen das Qualitätslevel einer Produktversion zu steigern, aber damit wird daraus noch lange kein „Qualitätsprodukt“.

Wir könnten eine ganze Liste von Merkmalen anführen um einen bestimmten Aspekt, der mehr oder weniger eng mit der Softwarequalität in Zusammenhang steht. Aber damit hätten wir immer noch keine Antwort auf die ursprüngliche Frage. Tatsächlich gibt es eine Vielzahl von Definitionen für die Softwarequalität, die gleich valide sind. Wie relevant eine Definition ist, hängt stark vom Kontext ab.

Allerdings gibt es einige Richtlinien um ein standardisiertes Modell von dieser Vorstellung von Qualität zu bekommen:

Ab 1992 definierte die ISO 9126 eine gemeinsame Sprache und gab ein Modell für die verschiedenen Qualitäten eines Softwareprodukts vor. Dabei gibt es 6 Hauptmerkmale mit 27 Unterpunkten:

  • Funktionalität (wie gut die Anforderungen erfüllt werden)
    Eignung, Genauigkeit, Interoperabilität, Compliance, Sicherheit, etc. …
  • Zuverlässigkeit (im Lauf der Zeit und nach bestimmten Nutzungsbedingungen)
    Maturität, Fehlertoleranz, Wiederherstellbarkeit, usw. …
  • Effizienz (Kosten für die technische Infrastruktur)
    Effizienz der eingesetzten Ressourcen und der Bearbeitungszeiten usw. …
  • Benutzerfreundlichkeit (der Aufwand für die Anwendung)
    Bedienbarkeit, Verständlichkeit, Erlernbarkeit, etc. …
  • Wartung (Kosten für die Entwicklung)
    Stabilität, Anpassbarkeit, Analysierbarkeit, Testbarkeit, usw. …
  • Portabilität (Kosten für einen Plattform-Transfer)
    Einfache Installation und Migration, Anpassungsfähigkeit, Compliance, etc. …

Diese Norm wurde im Jahr 2011 durch den ISO 25010-Standard ersetzt, der mehrere Definitionen angepasst und was noch wichtiger ist, ein neues Merkmal zur Qualitätsmessung eingeführt hat: Sicherheit. (Die lange umstrittene Frage „Sollte Sicherheit als Funktion betrachtet werden?“, wurde damit endlich beantwortet.)

Damit bekommen Sie ein ziemlich umfassendes Rahmenwerk um über verschiedene Bestandteile nachzudenken, die manchmal unberechtigterweise zu Gunsten der prominenteren Funktionen in den Hintergrund gerückt werden. Damit wird klar, dass die Funktionen einer Software nur ein Aspekt von vielen ist, um die man sich kümmern muss, wenn man die Qualität einer Software ermitteln will.

Ein Gedanke noch: Könnte es sein, dass die Qualität eines Produkts sich einfach nur daraus ergibt, die Nutzer zufrieden zu stellen, unabhängig davon, was zur Zufriedenheit führt?


Die Prinzipien des Software Testing

Da wir jetzt eine bessere Vorstellung davon haben, wofür Softwarequalität steht, können wir einen Blick auf die Methoden werfen, die wir verwenden können um die Qualität zu steigern und Verbesserungen vorzunehmen. Für die Qualitätsbeurteilung braucht man verschiedene Arten von Tests, die unterschiedliche Formen annehmen und unterschiedlich durchgeführt werden können. Sie erlauben es Ihnen die ganze Bandbreite der Merkmale für Softwarequalität abzudecken.

Trotz der Vielzahl möglicher Tests bleiben manche Prinzipien immer gleich, egal welcher Test-Typ oder -Level. Das International Software Testing Qualifikations Board (ISTQB) hat 7 Grundprinzipien für Softwaretests definiert. Ich gebe ein paar Beispiele aus der Praxis um zu verdeutlichen, was diese Prinzipien mit dem Tagesgeschäft von Software-Entwicklern wie uns zu tun haben:

1. Der Test kann nur etwas zeigen, wenn Mängel vorhanden sind: er kann nicht garantieren, dass es nichts zu zeigen gibt

Wenn es an der Zeit ist, eine Funktion zu überprüfen, sagt ein PO (Product Owner) oft: „Alle Tests stehen auf Grün, also sind alle Fehler behoben, richtig?“ Ähm … Nein, nicht wirklich … 😊

2. Decken Sie Mängel so schnell wie möglich auf: die Bedeutung von Tests in frühen Phasen

Im Jahr 2016 haben wir die Mehrkosten untersucht, die durch spät entdeckte Fehler verursacht wurden. Danach dachten wir, dass wir die ultimative Lösung gefunden hätten: Wir haben während jedem neuen Release für einen oder zwei Tage eine Taskforce mit einem Mitglied von jedem Team zusammengestellt um die Auswirkungen auf unsere Kunden zu minimieren. Wir waren der Meinung, dass das effektiver ist als uns um unzufriedene Kunden zu kümmern und Schaden für unser Image in Kauf zu nehmen. Inzwischen sind wir zu dem Schluss gekommen, dass wir das vorhersehen können, indem wir in unseren eigenen Entwicklungsumgebungen in ein gutes vorbeugendes Testing investieren. Jeder, von unseren Kunden angefangen bis zu unseren Entwicklern, kann sich deshalb während einem Release zurücklehnen. Außerdem können wir jetzt öfter etwas veröffentlichen.

3. Es ist unmöglich, einen allumfassenden Test zu machen: es ist notwendig Tests zu priorisieren und genau auszurichten

Für unser Produkt Navigation, das im März 2018 als Beta veröffentlicht wurde, mussten bestimmte Tests entsprechend der Risikobewertung verschiedener Anwendungsszenarien priorisiert werden. Wir haben uns dafür entschieden nur eine Auswahl von Tests anzuwenden um die Erwartungen unserer Kunden bestmöglich zu erfüllen, die ein Qualitätsprodukt wollten, aber auch begierig waren ihre Daten sehr schnell mit diesem neuen Interface zu untersuchen.

4. Anhäufung von Fehlern: es ist notwendig die Verteilung der beobachteten Mängel zu untersuchen um die Testaktivitäten richtig zu koordinieren

Aggregation of defects AT Internet 2016-2018
Anhäufung von Fehlern (2016) / Anhäufung von Fehlern (2018)

Im Jahr 2016 fanden sich 18 % der Produktionsfehler in einer Komponente der Data Query Engine. Wir haben deshalb in Tests in diesem Segment investiert und bis 2018 entstanden in der gleichen Komponente viermal weniger Fehler. Dies hat erhebliche Auswirkungen auf unsere Arbeit insgesamt. Durch gezielte Maßnahmen sind wir effizienter geworden und haben die Qualität unserer Lösung verbessert.

5. Pestizid-Paradox: Test-Sets müssen aktualisiert / gepflegt werden

Die Funktionen und die Anwendungsfälle der Kunden entwickeln sich immer weiter. Non-Regression-Tests müssen sich deshalb im gleichen Maße weiterentwickeln.


6. Der Test hängt vom Kontext ab: die Notwendigkeit, Methoden und Ziele je nach Kontext anzupassen


7. Die Abwesenheit von Mängeln ist eine Illusion: Bugs zu finden und zu beheben ist kein Garant für Kundenzufriedenheit. Das Produkt muss auch ihre Erwartungen erfüllen


Bei der Pflege und Weiterentwicklung unserer Test-Strategien haben wir die oben genannten Grundlagen im Kopf und schauen auf den speziellen Kontext jeder Situation, jedes Projekts und jedes Teams.


Unsere Herangehensweise an die Qualität unserer Produkte

„Für Qualität sind alle verantwortlich“, sagt W. Edwards Deming (Pionier des Qualitätsmanagements). Das trifft auch auf AT Internet zu, wo jeder auf allen Ebenen daran arbeitet die Produktqualität, die Verlässlichkeit gemessener Daten und als Resultat daraus die Zufriedenheit unserer Nutzer zu verbessern.

Entwickler und Tester optimieren ihre Vorgehensweisen beim Unit-Testing und der Code-Analyse. Sie verbessern die automatisierten Non-Regression-Tests, die neue Funktionen bewerten.  Product Owner steigern kontinuierlich ihre Anforderungen was Qualität und Testautomatisierung betrifft. Unterdessen investiert die Firmenleitung in diese Bemühungen und unterstützt sie aktiv. Ich fungiere als Vermittler, der jedem Team dabei hilft auf die Art weiterzukommen, die am besten passt.


Jetzt, da wir unsere Bemühungen gebündelt haben, können wir Fortschritte für unsere Kunden erzielen. Die Qualität ist dabei eine unserer Prioritäten. Sie gehört zu unserer DNA – ein integraler Bestandteil, wie unsere Firma funktioniert.

Author

Mit über 10 Jahren Erfahrung mit Software-Testing-Strategie und Implementierungen in einem agilen Umfeld ist Alexandre dafür verantwortlich die Entwicklungen bei AT Internet voranzutreiben. Seine tägliche Herausforderung: Unsere Entwicklungsteams bei der Implementierung von Tools und Methoden anzuleiten. Das Ziel ist es regelmäßige Veröffentlichungen mit hoher Qualität für unsere Kunden zu garantieren.

Comments are closed.