QualitÀt liegt in der Verantwortung des Teams. Unsere QS-Erfahrung

Ich arbeite als QS-Ingenieur bei Miro . Ich erzĂ€hle Ihnen von unserem Experiment, einen Teil der Testaufgaben an Entwickler zu ĂŒbertragen und die Rolle des Testers in die Rolle der QualitĂ€tssicherung (QS) umzuwandeln.

ZunÀchst kurz zu unserem Entwicklungsprozess. Wir haben tÀgliche Client-Releases und 3 bis 5 Server-Releases pro Woche. Das Entwicklungsteam besteht aus mehr als 60 Mitarbeitern, die in 10 funktionale Scrum-Teams unterteilt sind.

Ich arbeite im Integrationsteam, dessen Aufgabe es ist, unseren Service in externe Produkte und externe Produkte in unseren Service zu integrieren. Zum Beispiel haben wir den Jira Task Tracker integriert . Jira-Karten - eine visuelle Anzeige von Aufgaben, die Sie bequem auf dem Brett bearbeiten können, ohne auf Jira einzugehen.



Wie hat das Experiment begonnen?


Alles begann mit einem alltÀglichen Problem. Als einer der Tester auf die Krankenliste ging, wurde die Leistung des Teams stark reduziert. Das Team arbeitete weiter an den Aufgaben, aber der Code erreichte die Testphase und die Aufgabe wurde angehalten. Infolgedessen erreichte die neue FunktionalitÀt die Produktion nicht rechtzeitig.

Die Abreise des Testers in den Urlaub ist eine andere Geschichte. Er muss im Voraus einen der Tester finden, der bereit ist, seine Aufgaben zusĂ€tzlich zu seinen eigenen zu ĂŒbernehmen, zuzustimmen, in Aufgaben einzutauchen. Gleichzeitig machen zwei Tester Urlaub, was ein unzulĂ€ssiger Luxus ist.

Wir begannen darĂŒber nachzudenken, wie wir das Problem lösen könnten, und stellten fest, dass das eigentliche Problem darin bestand, dass der enge Hals der Entwicklungsprozesse getestet wurde. Ich werde Ihnen ein Beispiel fĂŒr mehrere Geschichten zeigen.

Die erste Geschichte: endloses Rollback von Aufgaben


Es gibt auch einen Entwickler. Jeder hat seine eigenen Aufgaben. Der Entwickler hat eine der Aufgaben erledigt und mir zum Testen gegeben. Da diese Aufgabe eine höhere PrioritĂ€t hat als meine aktuellen, wechsle ich zu ihr. Ich finde Fehler, bekomme alles in Jira und gebe es dem Entwickler zur Überarbeitung zurĂŒck.

Ich kehre zu den Aufgaben zurĂŒck, die verschoben werden mussten. Der Entwickler wechselt von neuen Aufgaben zu der Aufgabe, die ich zurĂŒckgegeben habe. Er korrigiert Fehler und gibt mich zum Testen zurĂŒck. Ich finde wieder Fehler und gebe die Aufgabe erneut zurĂŒck. Dieser Prozess kann sehr lange dauern.



Infolgedessen erhöht sich die Gesamtarbeitszeit fĂŒr die Aufgabe um ein Vielfaches, gefolgt von einer VerlĂ€ngerung der MarkteinfĂŒhrungszeit. Dies ist fĂŒr uns als Lebensmittelunternehmen von entscheidender Bedeutung. Es gibt mehrere GrĂŒnde, die fĂŒr die Aufgabe aufgewendete Zeit zu verlĂ€ngern:

  1. Die Aufgabe wechselt stÀndig zwischen Entwicklung und Test.
  2. Die Aufgabe wartet im Leerlauf auf einen Tester oder Entwickler.
  3. Entwickler und Tester mĂŒssen regelmĂ€ĂŸig zwischen Aufgaben wechseln, was zusĂ€tzliche Zeit und Energie erfordert.

Die zweite Geschichte: eine wachsende Reihe von Aufgaben


Unser Scrum-Team hat mehrere Entwickler. Sie reichen mir regelmĂ€ĂŸig ihre Aufgaben zum Testen ein. Eine Reihe von Aufgabenformularen, fĂŒr die ich Aufgaben erledige, basierend auf PrioritĂ€ten.

Wir haben ungefĂ€hr ein Jahr lang gearbeitet, aber in dieser Zeit ist das Unternehmen erheblich gewachsen: Die Anzahl der Projekte und Entwickler und damit die Anzahl der Testaufgaben hat zugenommen. Gleichzeitig war ich immer noch der einzige Tester in unserem Team und konnte meine Geschwindigkeit nicht vervielfachen. Infolgedessen sammelten sich immer mehr Aufgaben in der Testwarteschlange an, und der Prozess der Übertragung von Aufgaben zwischen dem Entwickler und dem Tester verlĂ€ngerte die Wartezeit.

Plötzlich wurde ich krank. Die Lieferung neuer Funktionen von unserem Produktionsteam wurde vollstÀndig eingestellt. Was sollte ein Team in einer solchen Situation tun? Sie können den Tester um Hilfe von einem anderen Team bitten. Mit hoher Wahrscheinlichkeit wird er jedoch nicht in unsere Besonderheiten eintauchen, was sich negativ auf die QualitÀt und das Timing beider Teams auswirkt.

Die Schlussfolgerung aus beiden Geschichten ist dieselbe - die Teams hÀngen zu sehr vom Tester ab:

  • Die Leistung des gesamten Teams wird durch die Leistung des Testers begrenzt.
  • Die Anzahl der Entwickler kann nicht erhöht werden, ohne das Personal der Tester zu erhöhen.
  • Eine Erhöhung der Entwicklungsgeschwindigkeit ist nicht sinnvoll, wenn alle Aufgaben zum Testen in die Warteschlange gestellt werden.
  • WĂ€hrend die Arbeit des Entwicklers vom Tester ĂŒberprĂŒft wird, verringert sich das Verantwortungsbewusstsein des Entwicklers fĂŒr die QualitĂ€t.
  • Wenn es keinen Tester gibt, leidet der Prozess der Ausgabe neuer Funktionen.

Lassen Sie uns das Personal der Tester erhöhen?


Der naheliegendste Gedanke ist, das Personal der Tester zu erhöhen. Dies wird funktionieren, aber nur bis zu einem bestimmten Punkt: Die Anzahl der Aufgaben wird stĂ€ndig zunehmen, und es ist unmöglich, die Anzahl der Tester unendlich zu erhöhen - irgendwann wird es teuer und ineffizient. Fedor Ovchinnikov , CEO von Dodo Pizza, hat gut ĂŒber das Thema "Ressourcendenken" geschrieben (können Sie das Problem nicht lösen? Stellen Sie einen anderen Mitarbeiter ein).

Es ist viel effizienter, die Geschwindigkeit und QualitĂ€t der Entwicklung innerhalb der aktuellen Ressourcen aufrechtzuerhalten. Aus diesem Grund haben wir beschlossen, ein Experiment zu starten, mit dem Teams sofort Funktionen erstellen können, wobei alle Risiken und Grenzsituationen berĂŒcksichtigt werden. Sie nannten es Transform-Tester in QA, weil es um die Umwandlung einer der Rollen im Team geht: von einem Affentester, der Fehler durch den Entwickler identifiziert, bis zu einem QA-Ingenieur, der die QualitĂ€t in allen Phasen des Entwicklungsprozesses bewusst sicherstellt.

Lassen Sie uns die Entwicklungsprozesse verbessern


Ziele des Experiments:

  • Beseitigung der AbhĂ€ngigkeit des Teams von Testern, jedoch ohne QualitĂ€ts- und Zeitverlust.
  • Verbessern Sie die QualitĂ€tssicherung durch QS-Ingenieure in Teams.

Der erste Schritt bestand darin, das Denken des Teams zu Ă€ndern. Jeder ist daran gewöhnt, dass der Tester fĂŒr die QualitĂ€t des Teams verantwortlich ist.

Unsere Hypothese war, dass eine VerlĂ€ngerung der Zeit zum Vorbereiten und Testen von Aufgaben dazu beitragen wĂŒrde, die Anzahl der Iterationen bei der Arbeit an einer Aufgabe zu verringern. Dies wiederum ermöglicht es, neue Funktionen in die Produktion zu bringen, ohne an Geschwindigkeit und QualitĂ€t zu verlieren, und möglicherweise schneller und mit besserer QualitĂ€t.

Gemeinsam mit dem Team und mit Testern anderer Teams haben wir ein neues Arbeitsschema entwickelt. WĂ€hrend das Team ein halbes Jahr daran arbeitet, haben wir die Schwierigkeiten und Probleme berĂŒcksichtigt, die auf dem Weg entstanden sind, und heute sieht es so aus:

  1. PrÀsentation der Produktion.
  2. Technische Lösung und Testszenario.
  3. Entwicklung und Verifikation.
  4. Lassen Sie los

ErklÀrung des Problems


Der Product Owner legt dem Team die ErklĂ€rung des Problems vor. Das Team analysiert die Formulierung, um Grenzsituationen auf technischer und Produktseite zu identifizieren. Wenn es Fragen gibt, die weiter untersucht werden mĂŒssen, wird eine separate Aufgabe festgelegt, fĂŒr die im Sprint Zeit zugewiesen wird.



Technische Lösung


Das Ergebnis der Analyse der Formulierung des Problems ist eine technische Lösung, bei der es sich um einen oder mehrere Entwickler handelt. Alle relevanten Mitarbeiter des Unternehmens, einschließlich der QualitĂ€tssicherung, mĂŒssen mit der technischen Lösung vertraut sein und dieser zustimmen. Die technische Lösung beschreibt das Problem, das wir lösen, die Funktionsblöcke des betroffenen Produkts und den vorgeschlagenen Plan fĂŒr Änderungen am Code.

Mit dieser Lösung können Sie eine einfachere und bessere Lösung identifizieren, die auf den Erfahrungen der relevanten Teilnehmer am Entwicklungsprozess basiert. Mit einer detaillierten technischen Beschreibung ist es einfacher, Blockierungsprobleme zu erkennen und zu vermeiden. Es ist einfacher, eine CodeĂŒberprĂŒfung durchzufĂŒhren.

Hier ist ein Beispiel fĂŒr einige Blöcke einer technischen Lösung:
Aufgabenbeschreibung

Werden dem System neue EntitĂ€ten oder AnsĂ€tze hinzugefĂŒgt?
In diesem Fall werden sie beschrieben und erklÀrt, warum es unmöglich ist, das Problem im Rahmen bestehender AnsÀtze zu lösen.
Ändert sich die Serverinteraktion innerhalb des Clusters? Werden neue Clusterrollen hinzugefĂŒgt?

Ändert sich das Datenmodell?

FĂŒr den Server sprechen wir ĂŒber Objekte und Modelle.
Wenn das Datenmodell komplex ist, können Sie es in Form eines UML-Diagramms oder als Textbeschreibung darstellen.

Ändert sich die Interaktion zwischen Client und Server?

Beschreibung der Änderungen. Wenn dies eine API ist, kann sie an externe Benutzer weitergegeben werden? Vergessen Sie nicht die Fehlerbehandlung - d. H. Geben Sie den richtigen Grund an.

Testszenario


Parallel dazu erstellt der Entwickler oder die QualitĂ€tssicherung ein Testszenario, das alle möglichen Stellen berĂŒcksichtigt, an denen Probleme aufgetreten sind. Wenn der Entwickler dies tut, gibt er das Skript unbedingt an die QualitĂ€tssicherung weiter, die es auf VollstĂ€ndigkeit und VollstĂ€ndigkeit ĂŒberprĂŒft. Wenn es sich bei dem Skript um eine QualitĂ€tssicherung handelt, muss der Entwickler bestĂ€tigen, dass er versteht, wie die einzelnen Elemente ausgefĂŒhrt werden können. Das Team bewertet das Skript auch auf Richtigkeit.

Zum Zusammenstellen und Speichern von Skripten verwenden wir HipTest.





Entwicklung und Validierung


Der Entwickler beginnt mit dem Schreiben von Code basierend auf einer technischen Lösung und berĂŒcksichtigt alle möglichen Situationen, die in der Testdokumentation beschrieben sind. Besteht eine CodeĂŒberprĂŒfung und vergleicht den Code mit Testszenarien. Erzeugt die ZusammenfĂŒhrung im Master.

Zu diesem Zeitpunkt bietet die QualitĂ€tssicherung dem Entwickler die erforderliche UnterstĂŒtzung. Es hilft beispielsweise beim Abspielen komplexer FĂ€lle, beim Einrichten einer Testumgebung, beim DurchfĂŒhren von Lasttests und informiert Sie ĂŒber die möglichen Nuancen bei der Ausgabe großer Funktionen an die Produktion.

Freigabe der fertigen FunktionalitÀt


Dies ist die letzte Phase. Hier muss das Team möglicherweise Aktionen vor und nach der Veröffentlichung ausfĂŒhren, z. B. die Aufnahme neuer Funktionen fĂŒr Beta-Benutzer.

Dokumentation und Tools


Das neue Arbeitsschema erforderte ein stĂ€rkeres Eintauchen der Entwickler in den Testprozess. Als QualitĂ€tssicherung war es mir daher wichtig, ihnen alle notwendigen Werkzeuge zur VerfĂŒgung zu stellen und die Grundlagen des Funktionstests zu vermitteln. Zusammen mit der QualitĂ€tssicherung anderer Teams haben wir eine Liste der erforderlichen Dokumentationen erstellt, die fehlenden Testanweisungen erstellt und die vorhandenen unter BerĂŒcksichtigung von Dingen fertiggestellt, die fĂŒr Entwickler nicht offensichtlich waren.

Dann gaben wir Entwicklern Zugriff auf alle Testtools und Testumgebungen und begannen, gemeinsame Tests durchzufĂŒhren. Anfangs wollten die Entwickler keine Verantwortung fĂŒr die Testergebnisse ĂŒbernehmen, da sonst niemand etwas fĂŒr sie ĂŒberprĂŒfte, was fĂŒr sie ungewöhnlich war. Jeder Entwickler hatte nur ein Testskript, die von ihm entwickelte FunktionalitĂ€t und die SchaltflĂ€che ZusammenfĂŒhren. Aber nach und nach gewöhnten sie sich daran.

Versuchsergebnisse


Seit Beginn des Experiments sind sechs Monate vergangen. Die Grafik zeigt die Statistik der Anzahl der Fehler pro Woche in unserem Team. Die rote Farbe zeigt die Anzahl aller vom Team gefundenen Fehler an, die grĂŒne die Anzahl der behobenen Fehler.



Es ist ersichtlich, dass der Pegel der roten Linie bis auf den Burst zu Beginn des Experiments auf dem gleichen Pegel blieb. Es gibt keine Fehler mehr, was bedeutet, dass wir das aktuelle QualitÀtsniveau beibehalten haben.

Gleichzeitig verringerte sich die durchschnittliche Arbeitszeit fĂŒr Aufgaben nur um 2%: Vor Beginn des Experiments waren es 12 Stunden 40 Minuten, nach - 12 Stunden 25 Minuten. So konnten wir die aktuelle Arbeitsgeschwindigkeit bei Aufgaben beibehalten.

Infolgedessen ist unser Team nicht mehr stark von der QualitÀtssicherung abhÀngig. Wenn ich krank werde oder in den Urlaub fahre, wird das Team ohne Geschwindigkeits- und QualitÀtsverlust weiterarbeiten.

Betrachten wir das Experiment als erfolgreich, obwohl die Indikatoren fĂŒr Zeit und QualitĂ€t gleich geblieben sind? Ja, wir glauben, weil wir die Geschwindigkeit und QualitĂ€t der Arbeit beibehalten und QS-Zeit fĂŒr bewussteres Arbeiten an ProduktqualitĂ€t und Entwicklungsprozessen frei gemacht haben. Um beispielsweise Forschungstests durchzufĂŒhren, die Abdeckung von Funktionstests zu erhöhen und die Prinzipien und Regeln fĂŒr die Entwicklung der Testdokumentation in allen Teams zu beschreiben.

In anderen Teams haben wir den Samen des Experiments ausgesĂ€t. Beispielsweise testet QA in einem der Befehle jetzt nicht, was der Entwickler in der Pull-Anforderung beschrieben hat, da der Entwickler dies selbst sehen kann. In einem anderen Team analysiert die QualitĂ€tssicherung die AnforderungsĂ€nderungen und ĂŒberprĂŒft nur komplexe und nicht offensichtliche FĂ€lle.

Dinge, die Sie vor Beginn eines Experiments beachten sollten


Dies ist ein komplexes und langwieriges Experiment. Es wird nicht per Fingerklick implementiert, Sie mĂŒssen sich sorgfĂ€ltig darauf vorbereiten und nicht auf schnelle Ergebnisse warten.

Seien Sie auf die NegativitĂ€t des Teams vorbereitet. Sie können nicht einfach sagen, dass die Entwickler jetzt die FunktionalitĂ€t testen. Es ist notwendig, sie darauf vorzubereiten, AnsĂ€tze zu entwickeln und den Wert des Experiments fĂŒr das Team und das Produkt zu erklĂ€ren.

Der Geschwindigkeitsverlust beim Start ist unvermeidlich. Die Zeit, um Entwickler zu schulen, die fehlende Dokumentation zu schreiben und Prozesse neu zu erstellen, braucht Zeit, die fĂŒr das Experiment gespendet werden muss.

Es gibt keine fertige Lösung. Ähnliche Prozesse werden beispielsweise in Atlassian implementiert, dies bedeutet jedoch nicht, dass Sie sie auch unverĂ€ndert in Ihren eigenen implementieren können. Die Anpassung an die Unternehmenskultur und die Besonderheiten der Teams ist wichtig.

Source: https://habr.com/ru/post/de449082/


All Articles