Kochrezepte für Testautomatisierung (Teil 2) – Datensalat

Testomaten auf Datensalat an Stressing

Eine besondere Herausforderung für jede manuelle Testdurchführung und ganz besonders für die Testautomatisierung sind die Testdaten. Bei den meisten manuellen Tests stehen in den Testfällen meist nur grobe Hinweise zu den zu verwendenden Testdaten. Das Vorgehen funktioniert in der Testautomatisierung nicht.

Im vorhergehenden Thema „Zutaten und Küchengeräte für Testomaten und wer ist der Koch“ habe ich darüber berichtet, welche Voraussetzungen für die Testautomatisierung gegeben sein müssen, um erfolgreich Automatisierung einzusetzen. Dabei habe ich bereits auf eine weitere Herausforderung hingewiesen: Die Testdaten. Dieses Thema möchte ich in diesem Blogeintrag nun etwas näher beleuchten.

Was passiert, wenn wir uns nicht um die Testdaten bei der Testautomatisierung kümmern und uns auf Testdaten stützen bei denen die Testautomatisierung nicht berücksichtigt wurde?

Testen kann man mit Kochen vergleichen. Das Rezept ist der Testfall und die Testdaten sind die Zutaten. Beim manuellen Testen folgen wir dem Rezept/Testfall und suchen die Zutaten/Testdaten nach Bedarf. Dies funktioniert beim automatisierten Testen nicht. Hier müssen die Testdaten bzw. die Zutaten exakt und vorportioniert vorliegen. Das heißt, es reicht nicht nur die Art und Form der Testdaten zu benennen, sondern es ist notwendig das genau die Instanz des Testdatums im Testskript benannt ist.

Zusätzlich werden beim Testen die Testdaten verbraucht bzw. die Testdaten altern. Also wie im Restaurant, irgendwann sind die Tomaten alle oder der Blattsalat wird welk. Wie bekommen wir also unsere passenden Zutaten und dies auch in einer ausreichenden Menge.

Oft höre ich in Projekten: „Wir machen einfach einen, hoffentlich anonymisierten, Produktionsabzug“. Der liefert jedoch nur einen Teil der benötigten Daten für die Testautomatisierung. Das heißt, für unveränderliche Stammdaten  ist so ein Abzug sehr wohl nützlich. Nun bekommt der Koch in der Küche nicht immer die gleiche Bestellung für seinen Salat. Mal möchte der Gast den Salat mit oder ohne Oliven, mal mit Joghurtdressing, mal mit Essig und Öl. In Abhängigkeit der Zutaten bzw. Änderungen an der Bestellung ändert sich dann auch noch der Preis. Das heißt wir benötigen für unsere Testdaten auch veränderliche Daten so genannte Bewegungsdaten, um die Geschäftsprozesse vollständig abzubilden. Um die benötigten veränderlichen Daten für die Testautomatisierung bereit zu stellen gibt es zwei Ansätze und beide haben ihre Vor- und Nachteile. Beim ersten Ansatz werden die benötigten Daten aus dem anonymisierten Produktionsabzug herausgesucht. Der Aufwand die entsprechenden Filterkriterien zu ermitteln und anschließend in einer Abfrage zu formulieren kann jedoch schnell sehr hoch ausfallen. Der Nachteil ist dabei, dass die herausgefilterten Daten nur in begrenzter Anzahl zur Verfügung stehen und werden bei der Testdurchführung ggf. verbraucht.

Beim zweiten Ansatz werden die benötigten Testdaten in der Datenbank neu erstellt, so dass der Testfall über alle notwendigen Testdaten verfügt. Diese Testdaten werden zwar auch verbraucht, können jedoch durch die automatisierten Skripte immer wieder neu angelegt werden. Auch das Anlegen der so genannten synthetischen Testdaten kann, z. B. bei vielen abhängigen Daten, sehr aufwendig sein. Daher ist immer individuell abzuwägen, welche der beiden Ansätze für welchen Testfall zum Einsatz kommt.

Bei der Testautomatisierung ist es auch oft notwendig die Testdaten zu dynamisieren. Was heißt das? Nehmen wir wieder ein Beispiel aus der Küche. Bekanntlich muss eine gute Pekingente 24h vor dem Verzehr bestellt werden. Da das Verzehrdatum ein veränderliches Datum ist kann hier eine Dynamisierung die Lösung für die Automatisierung bringen. Das Ergebnis sieht dann so aus: Verzehrdatum = Bestelldatum + 24h. Solche oder ähnliche dynamischen Testdaten kommen auch bei der Testautomatisierung zum Einsatz.

Fazit, in den meisten Fällen ist es wie bei einem guten Salat – die Mischung macht‘s. Also hier nochmal das Rezept zusammengefasst. Man nehme als erstes einen anonymisierten Produktionsabzug für die grundlegenden und unveränderlichen Stammdaten (diese können auch bei kleineren Mengen selbst erstellt werden), dazu einige gut ausgewählte veränderliche Daten aus dem Produktionsabzug mittels Abfrage im Testfall. Nun noch eine gut ausgewählte Portion synthetische Testdaten. Das ganze gut abgestimmt mit dem Testfalltemplate. Zum Schluss noch ein Schuss dynamisierte Testdaten im Template oben drauf und fertig ist der perfekte Datensalat für unsere Testautomatisierung. Wichtig nach dem Anrichten der Testdaten in der Datenbank muss die Datenküche auch wieder gut aufgeräumt werden. Also alle statischen, synthetischen und dynamischen Testdaten in den Ausgangszustand bringen, falls sie durch den Testfall verändert wurden. Im Klartext bedeutet dies, dass jeder Testfall in der Nachbedingung ein Aufräumen der Testdaten beinhaltet, denn Sauberkeit ist in einer guten Datenküche oberstes Gebot.

Wie ja bekannt ist, kommen in der Küche auch verschiedene Geräte zur Automatisierung des Kochvorgangs zum Einsatz. Wie viele dieser Testautomaten für ein Projekt gut sind, behandeln wir in meinem nächsten Blogbeitrag aus der Reihe Kochrezepte für Testautomatisierung. Bis dahin happy Testing und immer eine gut aufgeräumte Datenküche.

Kochrezepte für Testautomatisierung (Teil 1) – Suppe

Zutaten, Küchengeräte und wer ist der Koch?

Ein Kollege sprach mich kürzlich an und fragte, ob ich ein Rezept für eine gute Testautomatisierung kenne. Ich sagte, dass man dafür – wie für eine gute Suppe – nicht nur ein Rezept braucht, sondern es kommt auf die Ausstattung der Küche, die Zutaten und den Koch an. Entscheidend für die Testautomatisierung sind also die Projektrahmenbedingungen, die Auswahl der Testwerkzeuge und die Tester die an der Testautomatisierung beteiligt sind.

Wie können wir feststellen, ob die Rahmenbedingungen (nicht verwechseln mit Ramenbedingungen) für die Testautomatisierung gegeben sind? Grundlegend ist hierbei zu unterscheiden, ob sich das Software-Projekt noch in der Vorplanung befindet und die Testautomatisierung von Anfang an eingeplant wird oder ob es sich um ein Projekt handelt, welches bereits läuft und mit Testautomatisierung unterstützt werden soll.

Eines schon vorweg gesagt – je früher mit einer gut geplanten Testautomatisierung begonnen wird, desto wahrscheinlicher wird es eine erfolgreiche Testautomatisierung. Die Gründe liegen oft darin, dass die anfänglichen Aufwände der Testautomatisierung unterschätzt werden und sich der Nutzen rein rechnerisch erst nach Projektende einstellt.

Um dem zu begegnen ist für ein beginnendes Projekt eine gute Planung und für ein laufendes Projekt erst einmal eine Vorstudie der laufenden Prozesse, Testfälle und Rahmenbedingungen notwendig. In so einer Vorstudie sind unter anderem das bereits vorhandene Testfallportfolio, das Testobjekt und die Kenntnisse der Tester zu analysieren und zu bewerten. Auf diese Weise können wir erkennen, wo die eigentlichen Schwachpunkte des Projektes im Testbereich liegen.

Oft wird versucht mit Testautomatisierung Probleme zu lösen, die nichts mit der Testautomatisierung zu tun haben bzw. gegebenenfalls dadurch noch verschlimmert werden. Das ist wie beim Kochen, wenn die Suppe nicht schmeckt wird diese nicht zwingend besser, wenn wir einfach den Koch durch einen Automaten austauschen. Oft wird das Ergebnis sogar schlechter, wenn ich den Kaffeeautomaten im Flur betrachte. Wichtig ist, dass die Voraussetzungen für die Testautomatisierung eine Mindestqualität erreicht haben, bevor mit der Toolauswahl oder gar der Automatisierung begonnen werden kann. Die Testautomatisierung ist der Sahneklecks auf der Suppe, d. h. Testautomatisierung ist nur in einem gut funktionierenden Testprozess erfolgreich. Auch die Testfälle müssen eine ausreichende Detailtiefe zur Automatisierung haben. Die benötigte Detailtiefe ist davon abhängig in wie weit der Tester die nötigen fachlichen Kenntnisse zum Testobjekt mitbringt. Hier könnte der eine oder andere auf die Idee kommen gleich die Fachseite – also die die das Fachwissen haben – die Testautomatisierung machen zu lassen. Das ist meist keine gute Idee, da den Mitarbeitern die Zeit fehlt. Zum einen steht ihre tägliche Arbeit in der Priorität immer höher als die Testautomatisierung und zum anderen müssen die Toolkenntnisse und Testerfahrungen erst aufgebaut werden. Daher empfiehlt es sich, dass die Fachseite die manuellen Testfälle in einer ausreichenden Detailtiefe liefert, welche der Tester auch ohne Domainwissen versteht. Anschließend nimmt der Tester mit seiner Testerfahrung und der nötigen Toolkenntnis die Automatisierung vor.

Es ist illusorisch alles automatisieren zu können, darum wird in der Vorstudie ein Priorisierung der Testfälle vorgenommen. Dabei ist auch das Testobjekt bzw. die zu testende Software auf Automatisierbarkeit zu prüfen. Besonders problematisch für die Testautomatisierung sind z. B. dynamische Objekt-IDs, die sich bei jedem erneuten Aufruf ändern.

Wie wir auch aus der Küche bereits kennen, ist dann auch noch der Koch wichtig, d. h. der Tester, der die Testautomatisierung durchführt. Zum einen benötigt dieser das nötige Toolwissen und zum anderen muss er auch entscheiden können, wo sich die Testautomatisierung im Einzelnen lohnt. Zum Beispiel macht es keinen Sinn eine Funktion in der Software zu automatisieren, die nur extrem selten benötigt wird und im Automatisierungsaufwand sehr hoch ist.

Darum sollte man sich immer an das Rezept halten:

  • mit gutem Augenmaß und einem Gespür für den Aufwand eine ausgewogene Komposition – Kosten und Nutzen im Auge behalten
  • nicht nur auf die Technik verlassen – auch das eigene Handwerk ist wichtig
  • Testautomatisierung funktioniert nur, wenn vorher die grundlegenden Testaufgaben und Prozesse funktionieren – erst Zwiebeln schneiden lernen und dann mit der Bouillabaisse anfangen

Eine weitere Herausforderung für die Testautomatisierung sind die Testdaten. Hierzu aber mehr in meinem nächsten Blogbeitrag. Bis dahin wünsch ich schon mal ein Frohes Fest und überlasst die Weihnachtsgans nicht achtlos einem Automaten.

Unabhängigkeit der Tester im agilen Team

Sobald ich über Testen in agilen Teams spreche und betone, dass Tester und Entwickler sehr eng zusammenarbeiten, bekomme ich immer die Frage gestellt: Was ist mit der Unabhängigkeit der Tester?

Die Unabhängigkeit ist besonders im Wasserfall- und V-Modell-basierenden Projekten ein wichtiger Baustein und eine Sicherheit für die Qualität des Produktes. Die Tester stellen die unvoreingenommenen Prüfer der Anforderungen und der Ergebnisse der Entwicklung dar. Sie validieren beides aus der Sicht der Nutzer und durch die Trennung von den Entwicklern erwartet man eine unbeeinflusste Arbeitsweise.

In einem agilen Entwicklungsteam arbeiten alle Beteiligten im Entwicklungsprozess eng zusammen. Das Team ist interdisziplinär aufgebaut und besteht aus Testern, Entwicklern, Designer. Quasi alles was für die Umsetzung der Lösung benötigt wird. Und das Team arbeitet Hand in Hand mit dem Kunden und dem Product Owner. Die vom klassischen Vorgehen geforderte Unabhängigkeit ist natürlich in einem agilen Entwicklungsteam nicht gegeben. Aber sie wird auch nicht mehr benötigt.

Das wurde mir wieder bewusst als ich vor ein paar Tagen im Planning eines Scrum-Teams saß und die Akzeptanzkriterien für eine Story definiert wurden: Es ging um das Löschen eines Artefaktes und speziell um die Sicherheitsabfrage vor dem Löschen. Als alter Testhase schlug ich dem Team vor, ein Akzeptanzkriterium bzw. eine Testidee für den Fall aufzunehmen, indem der Nutzer auf Abbrechen klickt und dann das Artefakt nicht gelöscht werden sollte. Prompt bekam ich die Antwort zurück: „Wieso? Das ist selbst verständlich und jeder Entwickler, der dies vergisst, kommt an den Pranger“. Die Antwort kam nicht von einem Tester, sondern einem Entwickler. Und das Team war genau derselben Meinung. Und wie versprochen, sahen die erstellten Testfälle den Sachverhalt vor und gingen natürlich auf grün, weil die Entwickler es korrekt umgesetzt hatten.

Die Unabhängigkeit der Tester in der alten Welt weicht einer „neuen“ Idee: Jeder bzw. alle Projektbeteiligten sind für die Qualität verantwortlich! Außerdem sorgt die Arbeit des Product Owners für die notwendige Einbeziehung der Kundensicht. Die Tester bringen geschultes Testvorgehen in das Team ein und die Entwickler teilen ihr Wissen über Programmierung. Die agilen Prinzipien sorgen dafür, dass die – der Entwicklung nachgelagerte – Prüfinstanz nicht notwendig ist und ich habe speziell für mein Scrumteam das Vertrauen, dass sie auch die weiteren Stories korrekt umsetzen werden.

Aus dem Leben eines Testers

Während des Projektalltags stellt man sich manchmal die Frage, was mache ich eigentlich hier bzw. wissen die anderen im Team was ich tatsächlich tue? Als Tester habe ich mir diese Frage auch schon gestellt und einige Gedanken zusammengefasst. Daher findet man im Weiteren ein paar Ausschnitte aus meinem Alltag als Tester.

Daily

Wieder ist Daily und ich frage mich als Tester wie ich denn heute die Spezifikation von Testfällen attraktiv als getane, jetzige sowie zukünftige Arbeit verkaufen kann. Im Grunde vollzieht sich das ganze meist mit den Worten “Habe Testfälle für User Story xyz spezifiziert und mache damit weiter.”  Etwas eintönig und meist etwas belächelt, aber nun mal die Hauptaufgabe in den ersten Tagen eines Sprints. Schließlich setze ich als Tester doch den Grundstein aktuelle User Stories ordentlich zu testen.

Spannender wird es dann schon, wenn ich mitteile, dass ich nun auch Testfälle durchführe und voller Stolz den ein oder anderen Fehler verifiziert habe. Wobei von Stolz nicht die Rede sein kann. Kommt halt auf die Entwickler, die aktuelle Stimmung im Team, die Priorität des Fehlers oder der Selbstbewusstseinswahrnehmung des Testers (mir) an. Also kann es auch vorkommen, dass vor mich gemurmelt das Wort “Bug” fällt und schnell das Wort an andere übergeben wird. Warum eigentlich diese Zurückhaltung?

Ich als Tester habe die Verantwortung darauf aufmerksam zu machen, wenn etwas in der Software nicht so funktioniert wie definiert. Und das ist auch gut so. Denn wie will man qualitative Software liefern, wenn Fehler nicht akzeptiert sind und zu Stresssituationen oder Konflikten führen. Also nur Mut – der Fehler verschwindet nicht, wenn man ihn nicht anspricht (ganz im Gegenteil, er wächst, umso später er gefixt wird) und schnell ist er auch einmal im Wust der täglichen Entwicklungsarbeit in Vergessenheit geraten, wenn er nur in schriftlicher Form am Taskboard zwischen den großen User Storys hängt.

Regressionstests/Testautomatisierung

Apropos Taskboard – dies ist ein gutes Hilfsmittel die User Storys mit darin enthaltenen Aufgaben und deren Fortschritt im aktuellen Sprint im Auge zu behalten. Wenn man sich die Zeit nimmt, um innezuhalten und die Arbeit im Team mit Hilfe des Taskboards über Wochen oder auch Monate hinweg zu betrachten, könnte man zu folgender Behauptung gelangen: Die Entwickler arbeiten mit glänzenden, neuen Sachen und die Tester wühlen im Dreck der Vergangenheit mit Sicht auf den Glanz des Neuen. Dies bedeutet nicht, dass mir als Tester nicht bewusst wäre, dass Entwickler auch an bestehendem Code Anpassungen vornehmen müssen, und auch mal Bugs fixen. Aber ich als Tester habe eine ganz andere Sicht. Trotz all der automatisierten Tests, die unsere Entwickler schreiben, muss ich den Überblick darüber behalten was alles von Änderungen betroffen ist – ein kontinuierliches Zurückblicken auf Altlasten, während der Programmierer voranstürmt.

Damit sind wir dann auch bei der größten Herausforderung meines Alltags – Regressionstest. Den kann man zwar auch automatisieren, leider sind die Tools dafür aber nicht immer sehr freundlich zu mir. Werden sie nicht von Beginn an eingesetzt, bin ich kontinuierlich damit beschäftigt hinter den Änderungen der Entwickler her zu rennen. Aber selbst wenn ich sie gleich von Anfang an einsetze muss ich sie, um meine eigenen Aufgaben zu erfüllen, auf UI Ebene einsetzen und das ist langwierig und dummerweise eben selbst auch fehleranfällig. Dazu folgende Gedanken:

Testautomatisierungs-Tools suggerieren mir, dass ich durch einfaches Aufzeichnen von Testschritten Testautomatisierung machen kann. Leider wird mir nach anfänglichem Enthusiasmus klar, dass es damit nicht getan ist, da meine Testaufzeichnungen meist keinen Tag überlebt haben. Also auf zu neuen Ufern – diesmal programmieren und Aufzeichnungs-Tools verbannen. Da tauchen auch schon die nächsten Hindernisse auf. Denn ich bin kein guter Programmierer und muss mich nun mit kryptischen Sachen beschäftigen. Doch schon wird die nächste Idee geboren: Die Erfahrung der Entwickler zu Nutze machen. Auch da werden Grenzen gesetzt, denn das geht meist nur so lange gut, wie der Entwickler Zeit dafür hat bzw. gewillt ist, dies zu machen. Verständlich, denn der Entwickler will ja neue Sachen schaffen.

Ich stecke also in einem Zwiespalt: Schreibe ich automatisierte Tests oder mache ich alles manuell. Regressionstest sollte ich auf alle Fälle einplanen. Wie diese nun aussehen – automatisiert, manuell oder explorativ – kommt auf die verschiedensten Rahmenbedingungen an. Für mich ist Testfallautomatisierung jedenfalls kein Allheilmittel. Ich sehe den Mehrwert automatisierter Testfälle, die zu jedem Sprint ausgeführt werden können – größerer Testabdeckung, weniger manuelles Testen von vorgegebenen Workflows. Aber eine reine Testfallautomatisierung ist kein Allheilmittel, denn dies wird meine Testererfahrung und das damit verbundene Verfahren “Über-den-Tellerrand-Hinausblicken” nicht ersetzen.

Fazit

Auf alle Fälle sollte das Testen an sich – egal ob manuelles Testen, Regressionstests oder Testautomatisierung – im Team anerkannt sein und zusammen an der Qualitätssicherung gearbeitet werden. Denn schnell fühlt sich der Tester nicht mehr als Teil des Teams sondern Fremdkörper, wenn seine Arbeit nicht ernst genommen wird.

Der Agile Testmanager – ein Oxymoron? (Teil 3)

Im ersten Teil und zweiten Teil wurden die Aufgaben des Testmanagers erfolgreich einer agilen Transition unterzogen und für kleine Scrum-Teams nachgewiesen, dass kein Testmanager mehr benötigt wird. Eine andere Herausforderung ergibt sich bei mehreren Scrum-Teams, die gemeinsam an einem Produkt arbeiten. Lassen sich die beschriebenen Überlegungen, welche sich alle auf ein kleines Scrum-Projekt mit einem Team beziehen, auch auf die großen Projekte übertragen?

Benötigen wir für große Scrumprojekte wieder einen Testmanager?

In vielen Unternehmen, die Scrum einsetzten, arbeiten mehrere Teams gemeinsam an der Entwicklung eines Produkts. Es gibt bereits Überlegungen zu skalierten Scrum auf Unternehmensebene und wie die agilen Prinzipien trotz wachsender Komplexität eingehalten werden können. Boris Gloger sieht dabei zwei Problemfelder: “Einhaltung des skalierten Scrum Frameworks” und “Skalierung des Anforderungsprozesses”. Als Lösung führt er weitere Rollen ein: den Company Scrum Master und den Company Product Owner, die übergreifend die Scrum Master bzw. Product Owner des Projektes begleiten. Beide Rollen stimmen sich mit ihren Gegenstücken in den einzelnen Scrum-Teams ab und verwalten die Scrum-Werkzeuge auf Unternehmensebene wie Company Product Backlog und Company Scrumboard.

Lässt sich dieses Konzept auch auf den Test übertragen: Benötigen wir quasi einen Company Test Owner oder Company QA Master? Aufgabe dieses neuen Werkzeuges wäre die Abstimmung und Verantwortung für den übergreifenden und integrativen Testprozess, das Aufsetzen der notwendigen gemeinsamen Test-Strukturen sowie die Befüllung des Backlogs mit Stories, Tasks und Incidents rum um das Thema QA.

Abbildung 1: Abstimmungsmeeting zu QA-Fragen

Für Projekte mit einer übersichtlichen Anzahl (2 bis 8) von Scrum-Teams lassen sich diese Koordinationsaufgaben innerhalb des übergreifenden Abstimmungsmeeting, dem Scrum of Scrums, bewerkstelligen. Sollten die Abstimmungen testspezifischer und langwieriger werden, dann sollte bei Bedarf ein eigenes Test Meeting aufgesetzt werden. Dazu wird von jedem Team ein Teammitglied mit dem notwendigen Testwissen entsandt. Ist die Anzahl der Teams größer oder müssen Abstimmungen zwischen mehreren Projekten zu QA-Themen durchgeführt werden, dann können auch hier die Gilden zum Einsatz kommen. Die Gilden sammeln Best Practice Beispiele, die Sie allen Projekten zur Verfügung stellen oder benennen Coaches, die neuen Projekten agiles Testvorgehen näherbringen. Die Gildenmeister koordinieren wichtige Entscheidungen und moderieren die Scrum Teams, sofern die Definition von gemeinsamen Regeln und Lösungen notwendig ist.

Es lässt sich festhalten, dass ein Testmanager in agilen Unternehmen auch für große Projekte nicht mehr benötigt wird. Erreicht wird dies aber nur durch die vollständige Agile Transition der Aufgaben eines Testmanagers. Denn es ist notwendig jeder Aufgabe des Testmanagers speziell auch in der Kommunikation und Abstimmung ein agiles Werkzeug gegenüberzustellen.

Der Agile Testmanager – ein Oxymoron? (Teil 2)

Im ersten Teil wurden die operativen Aufgaben des Testmamagers erfolgreich einer agilen Transition unterzogen und für kleine Scrum Teams nachgewiesen, dass kein Testmanager mehr benötigt wird. Doch funktioniert das auch mit den strategischen Aufgaben eines Testmanagers bzw. Wer übernimmt die strategischen Aufgaben des Testmanagers?

Wer übernimmt die strategischen Aufgaben des Testmanagers in agilen Unternehmen?

Das strategische Aufgabenfeld eines Testmanagers ist das Qualitätsmanagement (QM), welches laut DIN ISO 8402 „alle Tätigkeiten der Gesamtführungsaufgabe, welche die Qualitätspolitik, Ziele und Verantwortungen festlegen sowie diese durch Mittel wie Qualitätsplanung, Qualitätslenkung, Qualitätssicherung und Qualitätsverbesserung im Rahmen des Qualitätsmanagements verwirklichen“ umfasst.

Aufgaben des Testmanagers (nach ISTQB)
Abbildung 1: Aufgaben des Testmanagers (nach ISTQB)

Ob eine Firma nach klassischen oder agilen Methoden entwickelt, das Qualitätsmanagement bleibt in der Verantwortung der Geschäftsführung des Unternehmens. Dieser Aufgabenbereich kann, sollte und darf nicht vom Scrum Team übernommen werden. Auf den ersten Blick ändert sich grundsätzlich nichts in Organisation und Aufgabenteilung. Auf dem zweiten Blick ergibt sich eine Problemstelle für agile Firmen. In der klassischen Welt diente der Testmanager als Schnittstelle zwischen operativer und strategischer Ebene. Er verteilte die Informationen zwischen dem Management und der operativen Ebene, übermittelte strategische Vorgaben und Methoden in die Testteams oder spielte Entwicklungen und Verbesserungen in Richtung Management.

Aber wie kommen Informationen im agilen Umfeld von der strategischen Ebene in die operative und zurück? Die Antwort ist: Die agile Transition ist nicht mit der Zuordnung der operativen Tasks des Testmanagers an das Scrum Team abgeschlossen. Die Lösung für die agile Transition der „Schnittstelle“ zwischen den Ebenen ist gleich der agilen Transition der operativen Aufgaben des Testmanagers. Für die vorhandenen Aufgaben der Unternehmenskommunikation stehen neue Konzepte und Werkzeuge bereit.

Eines der neuen Konzepte ist die sogenannten Gilde. Gilden (oder in unserem Unternehmen Kompetenzteams genannt) sind ein Werkzeug, welches das Wissens- und Informationsmanagement in geordnete Bahnen lenkt. Sie sind als Matrixorganisation aufgebaut und stehen neben der normalen Unternehmensstruktur. Die Gilden haben die Aufgabe die Knowhow-Träger des Unternehmens zu bündeln und bieten den Mitarbeitern einen Platz zum Austausch von Wissen oder der Umsetzung von Weiterbildungsmaßnahmen oder stimmen übergreifende Projektentscheidungen wie Testumgebungsaufbau oder Codequalitätsregeln ab. Je nach Zielsetzung des Unternehmens können der Aufbau und die Gliederung der Gilden unterschiedlich sein: So können die Gilden sich nach Kompetenzfeldern aufteilen wie Java-Entwicklung, .NET-Entwicklung, Test oder Prozessanalyse. Es können aber auch komplette Scrum Teams in Gilden zusammengefasst werden, die sich im Projekt gemeinsam einem bestimmten Thema widmen wie QA, Datenbankanbindung, GUI oder Schnittstellen (siehe Abbildung 1).

Beispiel für die Einordnung und Aufbau der Gilden nach Kompetenzfeldern
Abbildung 2: Beispiel für die Einordnung und Aufbau der Gilden nach Kompetenzfeldern

Die Gilden arbeiten nach folgenden Muster: Für jeden Mitarbeiter wird seine primäre Rolle (zum Beispiel Entwickler, Tester (QAlas), Product Owner und Scrum Master), die er im täglichen Arbeitsleben wahrnimmt, ermittelt. Mit dieser Rolle wird er einer passenden Gilde zugeordnet. Hier tauschen sich die Mitglieder nach Aufgabenfeldern aus, führen interne Schulungen durch, sammeln das vorhandene Wissen in Portalen oder tauschen sich über Best Practice in einzelnen Projekten aus. Die Moderation und Koordination innerhalb der Gilde übernimmt ein Gildenmeister. Er besitzt nach dem Motto „primus inter pares“ keine höheren Rechte als seine Gildenkollegen und wird aus dem Kreis der Gildenmitglieder gewählt. Der Gildenmeister ist zentraler Ansprechpartner für seine Gildenmitglieder, die anderen Gildenmeister und das Management. Dies ist notwendig, da die Gilden sich aktiv interdisziplinär austauschen, aber auch Feedback aus der operativen Ebene wie neue Entwicklungen oder Technologien an den Vertrieb weitergeben oder Hinweise für Schulungen an das Personal geben sollen.

Im letzten Teil gehen wir der Frage nach, was passiert, wenn mehrere Scrum Teams an einem Projekt gemeinsam arbeiten und der Abstimmungsaufwand auch für den Bereich QA zunimmt.

Der Agile Testmanager – ein Oxymoron? (Teil 1)

Ein Kollege stellte mir vor einiger Zeit die Frage, ob wir im agilen Entwicklungsprozess wie Scrum noch einen Testmanager benötigen. Meine erste Antwort war nein, da das Agile Manifest und das Scrum Framework nur drei Rollen kennt: Product Owner, Entwicklungsteam und Scrum Master. Im Scrum Team – der Gesamtheit der drei genannten Scrum-Rollen – ist also kein Testmanager vorgesehen. Aber auf den zweiten Blick ergab sich die Frage, wer aus dem Scrum Team übernimmt die Aufgaben des Testmanagers in und um den Sprint herum?

Studien wie der ASQF Branchenreport 2014[1] und Standish Chaos Report 2011 zeigen, dass agile Methoden bereits in den Unternehmen ein fester Bestandteil sind. Außerdem zeigt der Standish Chaos Report auf, dass Projekte in denen agile Verfahren zum Einsatz kommen, höhere Erfolgschancen haben als „klassische Projekte“.  Grundlage dieser Entwicklung war das Agile Manifest von Ken Schwaber und Jeff Sutherland. In ihm wurden Grundregeln und Vorgaben definiert, die „bessere Wege auf[zeigen], Software zu entwickeln, indem [die Prozessbeteiligten] es selbst tun und anderen dabei helfen, es zu tun“[²].

Scrum Prozess und Beteiligte
Abbildung 1: Scrum Prozess und Beteiligte

Die wichtigsten Grundsätze aus dem Agilen Manifest sind:

  • Menschen und Interaktionen sind wichtiger als Prozesse und Werkzeuge.
  • Funktionierende Software ist wichtiger als umfassende Dokumentation.
  • Zusammenarbeit mit dem Kunden ist wichtiger als die ursprünglich formulierten Leistungsbeschreibungen.
  • Eingehen auf Veränderungen ist wichtiger als Festhalten an einem Plan.

Unternehmen, die ihre Entwicklung auf die agile Arbeitsweise umstellen, haben einen Wettbewerbsvorteil gegenüber Firmen, die nach klassischen Vorgehen arbeiten. Aber die Umstellung der Prozesse auf Entwicklungsmethoden, wie Scrum – auch agile Transition genannt – stellt eine große Herausforderung dar. Agilität erreicht man nicht mit der Aufteilung der Entwicklungsmeilensteine in Sprints und der Benennung eines Product Owners (siehe Abbildung 1). Es müssen umfangreiche Änderungen der Organisation, hin zu einer agilen Arbeits- und Lebensweise, stattfinden.

Am Beispiel des Testmanagers lässt sich die Herausforderung der agilen Transition sehr schön nachvollziehen. Die Frage lautet: Wenn wir in Scrum keinen Testmanager benötigen, wer übernimmt seine Aufgaben? Der Product Owner? Der Scrum Master? Das Team?

Nach der Scrum Alliance ist der Product Owner die Person, die für die punktgenaue und pünktliche Erstellung des Produktes verantwortlich ist. Der Product Owner füllt und verfeinert das Product Backlog und stellt sicher, dass jeder weiß was darin enthalten und mit welcher Priorität es versehen ist. Damit ist er in der Regel am nächsten an der “Business-Seite” des Projekts. Scrum erfordert, dass das Entwicklungsteam eine nach Funktionen gemischte Gruppe ist – die alle notwendigen Fähigkeiten vereint – die für die Entwicklung des Produktes notwendig sind. Das Team organisiert sich selbst: das heißt es wählt selbständig den umzusetzenden Inhalt des Sprints und kümmert sich um die Planung, Steuerung und Umsetzung. Der Scrum Master ist der “Lotse” durch die Untiefen des Scrum Frameworks. Er hilft dem Rest des Scrum Teams bei der Einhaltung der Scrum-Regeln. Eine weitere Aufgabe des Scrum Masters ist es, Hindernisse für den Fortschritt des Teams aus den Weg zu räumen.

Auch nach Studium der Rollen von Scrum ist nicht ersichtlich: Wer die Aufgaben des Testmanagers übernimmt? bzw. Wie sie verteilt werden? Um die Fragen zu beantworten, ist es notwendig erst einmal festzustellen, welche Aufgaben ein Testmanager im klassischen Test- und Qualitätssicherungsprozess wahrnimmt. Laut dem International Software Testing Qualifications Board (ISTQB), der Zertifizierungsstelle für Tester, gehen die Aufgaben und Einsatzgebiete des Testmanagers über die Steuerung des Testprojektes hinaus. Er leitet die Testabteilung oder das Testteam und damit die Ressourcen für die Tests. Er erstellt Berichte, eskaliert in Richtung Entwicklung, Fachabteilung und Projektleitung, schätzt Testprojekte, setzt die Einhaltung der Qualitätsprozesse und -verfahren des Unternehmens durch, beschafft die Testing-Tools für die Organisation und überprüft die Testpläne, sowie die Testfälle.

Die Aufgabenebenen lassen sich in zwei Felder aufteilen: strategisch und operativ (siehe Abbildung 2). Die operative Ebene beschäftigt sich mit der Planung und Konzeption der Testfälle und Tests, der Steuerung der Testdurchführung, sowie der Kommunikation innerhalb des Projektes. Die strategische Ebene beinhaltet die Aufgaben des Qualitätsmanagements.

Aufgaben des Testmanagers (nach ISTQB)
Abbildung 2: Aufgaben des Testmanagers (nach ISTQB)

Die operativen Aufgaben können nicht vom Scrum Master oder Product Owner übernommen werden. Der Product Owner mischt sich nicht in die Umsetzung ein und der Scrum Master nicht in die Entwicklung. Die Testaufgaben werden in der agilen Entwicklung durch das Team übernommen. Und nach der Definition und Aufteilung der Aufgaben des Testmanagers ist es nun möglich zu untersuchen wie diese in den agilen Prozess eingebracht werden können. Es ergibt sich aber ein Problem: Eine klare Zuordnung zu einer Person ist nicht möglich, da in Scrum alle Aufgaben auf das agile Team verteilt werden.

Die Lösung des Problems liegt im Framework Scrum selbst. Es stellt ein umfangreiches Paket an Werkzeugen und Artefakten bereit. Und diese lassen sich den Aufgaben des Testmanagers gegenüberstellen. Wir haben in unseren Scrum Teams eine vollständige agile Transition der Aufgaben durchgeführt und festgestellt, dass Scrum jeder Aufgabe des Testmanagers ein Werkzeug oder Artefakt gegenüberstellen lässt.

Agile Transition des Testmanagers – Testkoordination
Abbildung 3: Agile Transition des Testmanagers – Testkoordination

So erfolgen die Überlegungen zur Teststrategie und die im Vordergrund stehenden Qualitätsmerkmale im Planning des Sprints und Backlog Grooming. Die Pass-Fail-Kriterien, also die Kriterien ob ein Sprint erfolgreich bzw. der Test abgeschlossen ist, werden in der Definition of Done definiert (siehe Abbildung 3).

Agile Transition des Testmanagers – Testumsetzung
Abbildung 4: Agile Transition des Testmanagers – Testumsetzung

Im Sprint Review wird die Umsetzung der Anforderungen verifiziert und validiert (siehe Abbildung 4).

Agile Transition des Testmanagers – Testkoordination
Abbildung 5: Agile Transition des Testmanagers – Testkoordination

Zusätzlich ermöglichen die Stories bzw. ihre Repräsentation am Scrum Board und in den Backlogs eine Dokumentation des Fortschritts sowie der Qualitätsgradbemessung (siehe Abbildung 3).

Jeder Aufgabe des Testmanagers lässt sich also ein agiles Werkzeug oder Artefakt gegenüberstellen. Damit ist die vollständige agile Transition der Aufgaben eines Testmanagers erreicht. Unter der Voraussetzung, dass das Scrum Team das notwendige Testwissen für die Umsetzung der anstehenden Entwicklungs- und Testaufgaben besitzt, wird für kleine Projekte kein Testmanager benötigt. Steht das Wissen noch nicht zur Verfügung muss das Team ausreichend gecoacht werden.

Im nächsten Teil wird beleuchtet wer die Aufgaben der strategischen Ebene übernehmen kann und was in Projekten mit mehreren Scrum Teams passiert, die gemeinsam an einem Produkt arbeiten.