Der Kern der meisten agilen Methoden besteht darin, dass eine Funktion erst dann "ausgeführt" wird, wenn sie entwickelt, getestet und in vielen Fällen veröffentlicht wurde. Dies soll in kurzen Zeitabschnitten wie "Sprints" im Scrum-Prozess geschehen.
Ein gemeinsamer Teil von Agile ist auch TDD, das besagt, dass Tests zuerst durchgeführt werden.
Mein Team arbeitet an einem GUI-Programm, das viele spezifische Zeichnungen und dergleichen ausführt. Um Tests durchführen zu können, muss das Testteam in der Lage sein, mit etwas zu arbeiten, das zumindest versucht, die Dinge auszuführen, die es zu testen versucht. Wir haben keinen Weg gefunden, um dieses Problem zu umgehen.
Ich kann sehr gut sehen, woher sie kommen, denn wenn ich versuchen würde, Software zu schreiben, die auf eine im Grunde mysteriöse Oberfläche abzielt, würde ich es sehr schwer haben. Obwohl das Verhalten ziemlich genau spezifiziert ist, scheint der genaue Prozess der Interaktion mit verschiedenen UI-Elementen in Bezug auf die Automatisierung für eine Funktion zu einzigartig zu sein, als dass Tester automatisierte Skripte schreiben könnten, um etwas zu steuern, das nicht existiert. Selbst wenn wir könnten, tauchen viele Dinge später als in der Spezifikation fehlend auf.
Eine Sache, die wir in Betracht gezogen haben, war, dass die Tester Testskripte schreiben, die eher einer Reihe von Schritten ähneln, die ausgeführt werden müssen, wie aus Sicht des Anwendungsfalls beschrieben, damit sie von einem Menschen "automatisiert" werden können. Dies kann dann von den Entwicklern durchgeführt werden, die die Funktion schreiben, und / oder von einer anderen Person überprüft werden. Wenn die Tester später die Gelegenheit bekommen, automatisieren sie das "Skript" hauptsächlich zu Regressionszwecken. Dies hat sich jedoch nicht im Team durchgesetzt.
Der Testteil des Teams fällt tatsächlich um einiges hinter uns zurück. Dies ist ein Grund, warum die anscheinend zusätzliche Zeit für die Entwicklung eines "Skripts" für einen Menschen einfach nicht vergangen ist ... sie stehen unter einer Krise, um mit uns Entwicklern Schritt zu halten. Wenn wir auf sie warten würden, würden wir nichts erledigen. Es ist nicht wirklich ihre Schuld, sie sind ein Flaschenhals, aber sie tun, was sie sein sollten und arbeiten so schnell wie möglich. Der Prozess selbst scheint gegen sie gerichtet zu sein.
Sehr oft müssen wir einen Monat oder länger zurückgehen, um Fehler zu beheben, die die Tester endlich überprüft haben. Es ist eine hässliche Wahrheit, gegen die ich etwas unternehmen möchte.
Was tun andere Teams, um diese Fehlerkaskade zu lösen? Wie können wir Tester vor uns bringen und wie können wir es schaffen, dass sie tatsächlich Zeit haben, Tests für die Funktionen zu schreiben, die wir in einem Sprint ausführen, ohne dass wir in der Zwischenzeit sitzen und mit den Daumen drehen müssen? Um eine Funktion mit agilen Definitionen "fertig" zu machen, müssen die Entwickler 1 Woche lang arbeiten, dann die Tester die zweite Woche und die Entwickler hoffentlich in der Lage sein, alle Fehler zu beheben, die sie sich einfallen lassen in den letzten paar Tagen. Das wird einfach nicht passieren, auch wenn ich zustimmte, dass es eine vernünftige Lösung war. Ich brauche bessere Ideen ...