Die Idee eines QA-Enforcers wurde erstmals aus der Notwendigkeit heraus etabliert, mehrere Themen rund um QA zu zentralisieren. Derzeit sind die meisten Softwareanwendungen bereits entwickelt, etabliert und in den meisten Phasen im Einsatz. Es wurde festgestellt, dass die Anzahl der erhaltenen Fehler eine erhebliche Menge Arbeit und Anstrengungen darstellt, insbesondere nach der Übernahme bereits entwickelter Micro-Services. Wir müssen hier verstehen, dass ein Fehler nicht nur ein Problem ist, sondern manchmal auch eine fehlende Anforderung, an die niemand gedacht hat, eine fehlende Architektur, ein Mangel an Architekturqualität, externe Systeme, fehlende Entscheidungen usw. Ein Fehler muss daher als eine Reise betrachtet werden, die eine Weile dauern kann, um gelöst zu werden, da die Services des Teams nur ein Teil des Puzzles sind, aber ein wichtiger, der auch systemkritische Services umfasst.
Wir haben auch im Laufe der Zeit festgestellt, dass eine enorme Menge Arbeit darauf verwendet werden kann, das gesamte System zu optimieren, was zu dem Schluss führt, dass die Arbeit auf einer Scrum-Basis mit bereits zugesagten Funktionen nicht wirklich dazu beiträgt, die Qualität zu verbessern. Der Prozess des „Dinge besser machen“ ist langsam.
Es gibt viele Beispiele, die zeigen, dass die investierte Zeit aus Neugier, in diese komplexen verbundenen Systeme einzutauchen, sich bezahlt gemacht hat.
Der QA-Enforcer ist eine Mischung aus einer Einheit mit Wissen in den Bereichen Testing, Validierung, Entwicklung und Kommunikation. Derzeit ist nicht bekannt, dass eine solche Rolle existiert, weil entweder die Architektur perfekt ist, es einen Function-Owner neben dem Product-Owner gibt, oder die Einheit, die sich um QA in Train kümmert, auch Entwicklungskenntnisse hat und Probleme mit Code und Protokollverständnis analysieren kann, oder alles perfekt ist und nichts fehlt, was utopisch ist.
Rolle und Aufgaben
Es gibt verschiedene Bereiche, in denen der QA-Enforcer tätig ist, und um dies zu verstehen, müssen wir aus der Scrum-Entwicklungsumgebung herausgehen, die wir kennen, und die geringe Qualität als etwas betrachten, das eine starke Agilität, eine Portion Neugierde und den Willen zur Verbesserung der Systeme erfordert. Hier sind einige Punkte, in denen der QA-Enforcer tätig ist:
- Erkennung fehlender Anforderungen
- Schnelle Analyse von Fehlern und Problemen im Allgemeinen und diese klassifizieren
- Lösungsvorschläge für allgemeine Schwachstellen, auch außerhalb der gewarteten Systeme (aber verbunden)
- Verbesserung und Überwachung der Ressourcennutzung
- Verbesserung der Rückverfolgbarkeit, um Analysen schneller und einfacher zu gestalten
- Durchsetzung von QA-Prozessen und deren Verbesserung
- Beantwortung von Fragen im Zusammenhang mit QA auf Anfrage und spontan
Aufgabendetails und Beispiele
Fehlende Anforderungen
Es wurde mehrmals festgestellt, dass die gesamte Systemarchitektur Anforderungen vermisst und der Grund dafür unklar ist. Wir können annehmen, dass aufgrund von Mitarbeiterwechseln (in myAudi) oder der Hinzufügung neuer Funktionen, die auf Annahmen beruhen, die nie geklärt wurden, oder fehlender Kommunikation usw., Anforderungen fehlen.
Schnelle Analyse von Bugs und Problemen im Allgemeinen
Im besten Fall sollte jedes Teammitglied in der Lage sein, jedes Bug-Ticket oder Problem schnell zu analysieren. Allerdings ist es für eine Person, die sich mehr mit Fehlern, allgemeinen Problemen, Anforderungen, der Analyse von Code, Protokollen sowie dem Einsatz von Trace- und Überwachungstools befasst, viel einfacher zu wissen, wo und was zu suchen ist.
Lösungsvorschläge für allgemeine Schwachstellen
Es gibt mehrere Schwachstellen in den Systemen, die von unserem Team gewartet werden, aber die meisten dieser Schwachstellen können nur in Zusammenarbeit mit anderen Stakeholdern verbessert oder behoben werden. Daher sind Kommunikation und Durchhaltevermögen in diesem Bereich sehr wichtig. Der QA-Enforcer muss die richtigen Personen suchen, um Kontakt aufzunehmen, sie ansprechen und versuchen, sie zu motivieren, über die Schwachstellen zu sprechen und sie möglicherweise dazu zu überreden, einige Änderungen vorzunehmen. Der QA-Enforcer gibt die Initiative nicht beim ersten Widerstand oder der Tatsache auf, dass dies ignoriert wurde, sondern hat die Pflicht, dem Thema weiter zu folgen und es im schlimmsten Fall zu eskalieren.
Ressourcennutzung verbessern und Monitoring
Ein Teil der Aufgaben besteht darin, die Ressourcennutzung ständig im Auge zu behalten und bei Bedarf auf Änderungen in der Konfiguration zu reagieren. Zum Beispiel, wenn neue Märkte erschlossen werden, was zu einer erhöhten Speicherauslastung führen kann, oder aus irgendeinem Grund die Requests zunehmen und eine Reaktion erforderlich ist usw.
Die Rückverfolgbarkeit verbessern, um Analysen schneller und einfacher zu gestalten
Logs und Traces sind eines der wichtigsten Werkzeuge zur Analyse von Problemen. Logs sind nicht perfekt, und Trace-IDs können fehlen. Die Aufgabe des QA-Enforcers besteht auch darin, Logs hinzuzufügen oder dynamisch deren Ebene zu ändern, wenn und wo es notwendig ist. Er muss auch alle Stakeholder motivieren, die Rückverfolgbarkeit vom Frontend bis zum Ende der Kette sicherzustellen, bis zurück zu den Backends. Dies ist auch ein Punkt, der in der Aufgabe zu „allgemeinen Schwachstellen“ erwähnt werden kann.
Auf Fragen im Zusammenhang mit QA reagieren, sowohl auf Anfrage als auch spontan
Eine der Hauptaufgaben des QA-Enforcers ist es, für spontane Anfragen oder die Analyse von Problemen verfügbar zu sein, die täglich auftreten. Es ist entscheidend zu verstehen, dass der Entwickler sehr von einer komfortablen Situation profitieren kann, in der er sich auf eine Entwicklungsarbeit konzentrieren kann, ohne bei jedem Bedarf an Informationen oder Analysen gestört zu werden. Der QA-Enforcer (kann eine Einzelperson oder ein Team sein) spielt die Rolle eines Filters, der die Anfragen entgegennimmt und nur bei Bedarf an die Entwickler weiterleitet. Die Weiterleitung an die Entwickler sollte nur in extremen Fällen oder wenn die Kapazität des QA-Enforcers unzureichend ist, erfolgen.