In meiner jetzigen Position ist die Qualitätssicherung zu einem Engpass geworden. Wir hatten das unglückliche Auftreten von Features, die aus dem aktuellen Build herausgehalten wurden, damit die Qualitätssicherung die Tests beenden konnte. Dies bedeutet, dass Features, die in der Entwicklung sind, möglicherweise 2-3 Wochen lang nicht getestet werden, nachdem der Entwickler bereits weitergezogen ist. Wenn sich der Entwickler schneller als die Qualitätssicherung bewegt, wird diese Zeitlücke nur noch größer.
Ich blättere meine Kopie von Code Complete durch und suche nach einem "Hard Data" -Snippet, aus dem hervorgeht, dass die Kosten für die Behebung von Fehlern exponentiell steigen, je länger sie bestehen. Kann mich jemand auf einige Studien hinweisen, die dieses Konzept stützen? Ich versuche, die Mächte davon zu überzeugen, dass der QS-Engpass viel teurer ist, als sie denken.
quelle
Antworten:
Sie brauchen keine Referenzen, IMHO. Folgendes können Sie tun (und sollten es lieber tun):
Quantifizieren Sie die Kosten der Verzögerung! Nehmen wir an, dass das Testen der Funktion (en) 1 Woche dauert. Eine Verzögerung von 2-3 Wochen bedeutet, dass die Funktion erst in der 4. Woche verfügbar ist. Und das bei 100% Erfolg. Fügen Sie eine Fixierungszeit von einer weiteren Woche hinzu, sodass sich die Verzögerung um etwa 5 Wochen beläuft.
Wenn möglich, greifen Sie jetzt auf den erwarteten Termin des Projekts / der Funktion zu. Bis wann erwartet der Kunde das? Wird es ausrutschen? Wenn nicht, werden andere als Konsequenz ausrutschen? Um wie viel wird sich die 'Veröffentlichung' infolgedessen verzögern?
Was kostet das Unternehmen für diese Version, dh wie viel erwartet der Kunde, von dieser Version zu profitieren? Wenn sie mit einem Gewinn von 5200 US-Dollar pro Jahr rechnen, kostet der wöchentliche Umsatzverlust 100 US-Dollar. Das ist die Sicht des Kunden. Möglicherweise haben Sie keinen Zugriff auf diese Daten, aber es lohnt sich, zu berücksichtigen und anzugeben, wie sich die Verzögerung auf die Beziehung auswirken kann.
Was ist nun der Verlust für die Entwickler? Sobald der Entwickler zu anderen Funktionen übergeht, bitten Sie ihn, den Zyklus zu unterbrechen und die vorherige Funktion zu "reparieren". Was ist der Zeit- / Aufwandverlust? Wandeln Sie es in Unternehmenskosten um, indem Sie das Gehalt für jede dadurch verschwendete Stunde als Vielfaches verwenden. Sie können das verwenden, um den Betrag von "Gewinn / Einnahmen" zu sagen, in den der Abfall "frisst".
Über was Sie gestolpert sind, lässt sich bequem mit "Cost of Delay" (Verzögerungskosten) quantifizieren. Dies wird von Don Reinerstein in Principles of Product Development Flow und von Dean Leffingwell in Agile Software Requirements empfohlen. Sie sollten in der Lage sein, jede solche Behauptung durch wirtschaftliche Faktoren zu untermauern, um die 'höheren Mächte' zu überzeugen, deren Hauptsprache $$ ist - Sie müssen ihre Sprache sprechen, um sie zu überzeugen :)
Glückstier! (Wortspiel beabsichtigt :)
quelle
Ich denke nicht wirklich, dass Code Complete die richtige Ressource für Sie ist. Dies ist kein Codeproblem, sondern ein Prozessproblem und möglicherweise ein Verwaltungsproblem.
Wenn ein Teil Ihres Prozesses besonders schwach ist, dann ist es Zeit, die Theorie der Zwänge zu durchbrechen :
Identifizieren Sie die Einschränkung.
Dies bedeutet, den langsamsten oder ineffizientesten Teil des Gesamtprozesses zu finden. In deinem Fall ist es ein Test. Aber welcher Teil der Prüfung? Ist es:
Dies sind alles sehr unterschiedliche Probleme und erfordern unterschiedliche Lösungen. Sie müssen sich entscheiden, welches das teuerste / wichtigste ist. Es sollte nicht schwierig sein, dies gegenüber dem Management zu rechtfertigen, da alle oben genannten Aktivitäten Zeit kosten (AKA-Geld) und nur einige davon Wertschöpfungszeit bedeuten.
Die Einschränkung ausnutzen.
Mit anderen Worten, optimize um den Einschränkungs Prozess. Lassen Sie die Tester niemals untätig sein. Dies beläuft sich im Wesentlichen auf:
In dieser Phase geht es (noch) nicht darum, den Testprozess selbst zu optimieren, sondern vielmehr darum, den Overhead zu reduzieren. Verschwenden Sie keine Zeit für Tester. Das Vermeiden von Zeit, die wirklich verschwendet wird, sollte auch ein einfacher Verkauf an das Management sein.
Ordnen Sie andere Aktivitäten der Einschränkung unter.
Zu diesem Zeitpunkt sind die Tester so produktiv wie nur möglich. Daher müssen wir die Produktivität aus anderen Bereichen leihen:
Erhöhen Sie die Einschränkung.
Wenn die Tester mit voller Kapazität arbeiten - sowohl in Bezug auf Produktivität als auch auf minimalen Overhead - und es immer noch nicht schnell genug ist, müssen Sie anfangen, mehr in Tests zu investieren.
Gehen Sie zurück zu Schritt 1.
Ich möchte sagen, dass dies alles gesunder Menschenverstand ist, aber leider nicht, zumindest nicht in den meisten Organisationen. Wenn das Management Ihnen viel Widerstand entgegensetzt, ist Value Stream Mapping (eine Technik aus Lean Manufacturing) von unschätzbarem Wert , mit der Sie zeigen können, wie viel Zeit und damit Geld tatsächlich jeden Tag verschwendet wird, wenn ein Release-Kandidat nicht in der Lage ist auf die nächste Stufe zu bewegen. Opportunity-Kosten sind schwer zu verstehen, aber dies ist eine der besten Möglichkeiten, die ich gefunden habe, um sie zu visualisieren und zu demonstrieren.
Und wenn nichts davon funktioniert ... dann bist du vielleicht in einer dysfunktionalen Firma, verschwinde, bevor es zu spät ist!
Sie können dieses Problem jedoch nicht einfach lösen, indem Sie ein paar Papiere auf den Schreibtisch des Managers werfen und ihn bitten, das Problem mit Geld zu bewerfen, da er (korrekt) annimmt, dass das Werfen von Geld das Problem möglicherweise nicht wirklich löst und es möglicherweise sogar verdient es ist schlimmer. Sie müssen Lösungen bereitstellen , und darum geht es in dieser Antwort. Wenn Sie das Problem wie folgt einführen: "Hier finden Sie eine Liste der Möglichkeiten, wie wir dieses Problem in absteigender Reihenfolge von Kosten und Nutzen lösen können", anstatt "wir brauchen mehr Tester", werden Sie viel mehr Erfolg haben.
quelle
Die Seiten 29 und 30 enthalten möglicherweise die von Ihnen gesuchten Daten, obwohl möglicherweise eine Nachverfolgung erforderlich ist.
Ich würde die in diesem Satz auf Seite 30 erwähnte Forschung untersuchen:
Übrigens war es deine Frage, die mich veranlasste, das Buch noch einmal in die Hand zu nehmen, um es aufzufrischen :-)
quelle
Was Sie beschreiben, ist ein Engpass in einem Prozess. Die Lean-Theorie besagt, dass es in einem Prozess immer einen Engpass geben wird, dessen Schweregrad jedoch stark variieren kann. Wenn die Qualitätssicherung einen zusätzlichen Mitarbeiter einstellt, kann die Entwicklung zum Engpass werden.
Stellen Sie sich die folgende Situation vor, um die Kosten zu verstehen. Sie haben einen der Entwickler ausgewählt. Seine Arbeit würde niemals qualitätsgesichert sein, sondern immer auf unbestimmte Zeit in der Warteschlange stehen. Stellen Sie sich vor, dies würde bedeuten, dass die Qualitätssicherung die Arbeit der übrigen Entwickler rechtzeitig sicherstellen könnte und es keine Verzögerungskosten geben würde.
In diesem Szenario sind die Kosten der Verzögerung die Kosten des Gehalts des Entwicklers, da seine Arbeit verschwendet würde.
Der Grund, warum ich in Bezug auf die Kosten und nicht den durch den Prozess geschaffenen Wert argumentiere, liegt einfach darin, dass es schwieriger ist, den Wert eines Prozesses zu dokumentieren, obwohl er weitaus besser ist.
quelle
Die exponentiellen Kosten für das Auffinden eines Fehlers scheinen auf einer NIST-Studie zu beruhen . Die Studie war eine Umfrage unter der Annahme unterschiedlicher Wasserfallstadien:
( Tisch hier ab hier )
Eines der Ziele der agilen Softwareentwicklungsmethoden besteht darin, diese unterschiedlichen Phasen zu beseitigen und diese Kosten zu senken. Die Zahlen gelten nicht, wenn andere Methoden für den Wasserfall angewendet werden.
quelle
Ihr Problem liegt nicht in der Qualitätssicherung. Wenn Ihre Qualitätssicherung Tests durchführt, sind die Verzögerungen so gut wie die geringsten Ihrer Sorgen. Bitte lassen Sie mich dies erläutern (erneut, da dies in der Programmierbranche ein weit verbreitetes Missverständnis ist) ... Qualitätssicherung Gewährleistet die Qualität des Produkts, indem die gesamte SDLC von den Anforderungen (möglicherweise früher) über die Entwicklung, Überprüfung, Veröffentlichung und Unterstützung überwacht wird. Das Testen stellt sicher, dass keine offensichtlichen Mängel im Code vorhanden sind. Es gibt einen sehr großen und wichtigen Unterschied. Wenn Sie eine echte Qualitätssicherung hatten, waren sie in der gesamten Test- / V & V-Abteilung und fragten, warum sie das Geschäft Zeit (und damit Geld) gekostet haben, Releases zu verzögern, oder während des gesamten Projektmanagements Sicher, es gab genug Tester für den Code, der erstellt wurde usw.
Wenn Sie also von einer Qualitätssicherung ausgehen, meinen Sie wirklich Test, zurück zur ursprünglichen Frage. Code Complete hat es richtig gemacht - die Kosten für einen Defekt sind die Zeit, die von der Einfügung bis zur Korrektur vergangen ist. Früherkennung ist nur nützlich, wenn Sie sie auch früh korrigieren, aber die Interpretation der meisten Menschen ist falsch.
(Hinweis: Ich spiele Devils Advocate hier, nimm nichts davon wörtlich, da ich nichts von deiner Situation weiß.) Die Verzögerungsursache durch deine Testabteilung ist kostenpflichtig, aber ich muss dich unbedingt fragen, ob du es bist Warten Sie darauf, dass sie Ihre Fehler finden. Was tun Sie? Sollten Sie keine eigenen Fehler finden? Wenn sie weniger Arbeit hätten (durch qualitativ hochwertigere Eingaben mit weniger Fehlern von Ihnen), wäre die Verzögerung möglicherweise nicht so bedeutend und die Kosten geringer - als Manager würde ich Sie fragen, wie Sie die Fehler in dem Code, an den Sie liefern, reduzieren möchten testen, da (basierend auf Ihrem Argument) diese Mängel mehr kosten, wenn sie durch einen Test festgestellt werden, als Sie selbst.
Auch als Manager kann ich sagen, dass es sich bei der Aufgabe nicht um einen Test handelt. Finden Sie Ihre Mängel. Sie müssen feststellen, dass keine Mängel vorliegen. Wenn Sie damit rechnen, dass sie Mängel aufweisen, haben Sie Ihre Arbeit möglicherweise nicht gut genug ausgeführt.
Seien Sie vorsichtig, wie Sie dies angehen. Wenn Sie keine Lösung für das Problem haben, werden Sie wahrscheinlich als Zweitbester abschneiden.
quelle