Wie haben Sie Ihren Manager davon überzeugt, dass er Sie zum Unit-Test einlädt?
Unter "Verwendung" verstehe ich, dass es mir gestattet ist, die Komponententests im Laufe der Zeit zu entwickeln, in die Quellcodeverwaltung einzuchecken und aufrechtzuerhalten usw.
Typische Management-Einwände sind:
- Der Kunde hat für Unit-Tests nicht bezahlt
- Das Projekt lässt keine Zeit für Unit-Tests
- Technische Schulden? Welche technischen Schulden?
Kennen Sie andere Einwände? Was waren deine Antworten?
Danke im Voraus!
project-management
management
unit-testing
tdd
louisgab
quelle
quelle
Antworten:
Ich bin kürzlich auf dieses Problem gestoßen, als ein Kunde an Bord unserer Methodik war, aber das höhere Management erfuhr, dass die Entwickler ihre Zeit mit Testen und nicht mit Entwickeln verbrachten, und war besorgt darüber - schließlich hatten sie QA-Mitarbeiter, die die Tests durchführten! Ich habe hier darüber gebloggt, wie ich damit umgegangen bin:
http://practicalagility.com/show-them-the-numbers-its-results-that-matter/
Zusammenfassend habe ich unsere geschätzten Stunden mit den tatsächlichen Stunden für das Projekt verglichen und dann unsere Fehlerquote mit der Fehlerquote anderer Teams verglichen. In unserem Fall waren diese Zahlen günstig und es gab keine Bedenken mehr.
Mein Fazit aus dieser Erfahrung lautet:
Bei anderen Projekten haben wir mit Kundenentwicklern zusammengearbeitet, die keine Komponententests erstellt oder TDD durchgeführt haben, und wir mussten Tests aufrechterhalten, die sie brechen. Es wird jedoch sehr einfach, den TDD-Ansatz an diese Kundenentwickler zu verkaufen, wenn Sie ihnen sagen können, was sie im Code gebrochen haben, bevor sie es wissen!
In Ihrem Fall würde ich es also bei Bedarf heimlich tun (vielleicht gibt es einen kleinen Bereich des Codes, in dem Sie beginnen können, diese Änderungen häufig zu testen oder für den Sie verantwortlich sind), aber behalten Sie Ihre Zahlen im Auge - was ist das? Aufwand für die Erstellung Ihrer Tests? Was ist die Fehlerrate? Wie ist der Vergleich mit anderen Projekten / Teammitgliedern?
Meiner Meinung nach sollte niemand um Erlaubnis bitten oder sich dafür entschuldigen müssen, dass er seine Arbeit ordnungsgemäß ausführen möchte, und jeder professionelle Entwickler sollte versuchen, seinen Code mit automatisierten Tests zu testen, wo immer dies möglich und praktisch ist. Hoffentlich ist es in Ihrem Fall beides. Viel Glück!
quelle
Return on Investment (ROI) anzeigen
Das Schreiben automatisierter Tests braucht Zeit. Einmal. Das Ausführen automatisierter Tests nimmt keine Zeit in Anspruch, da Sie während der Ausführung etwas anderes tun können.
Beispiel: Das manuelle Testen von Feature X dauert 30 Minuten. Das Schreiben eines automatisierten Tests würde 1 Stunde dauern. Selbst wenn wir keine Fehler haben, müssen wir Feature X im Verlauf des Projekts zehn Mal testen, da die abhängigen Ebenen und Komponenten geändert werden. Durch die Automatisierung des Tests von Feature X sparen wir 4 Stunden über die gesamte Laufzeit des Projekts.
In der Realität zahlen sich automatisierte Tests bei einem Fehler wirklich aus - Erstens finden sie Fehler frühzeitig und kostengünstig, was Zeit und Peinlichkeit spart. Zweitens summiert sich die Zeitersparnis im Vergleich zum manuellen Testen außerordentlich schnell, wenn Sie einen schwierigen Fehler haben und viele Zyklen des Code-Build-Tests durchlaufen, um dies herauszufinden.
Unternehmen verstehen es, Zeit und Geld zu sparen. So verkaufen Sie es.
quelle
Wenn Sie bereits mit ihnen konfrontiert wurden und sie damit nicht einverstanden sind, sich aber nicht wohl fühlen, Code ohne sie zu schreiben, dann fragen Sie nicht noch einmal. Schreiben Sie sie einfach und checken Sie sie nicht ein.
Das Management wird keine Codezeilen zählen, aber sie werden feststellen, dass alle Ihre Eincheckvorgänge höhere Erfolgsquoten von der Qualitätssicherung (oder von Kunden) haben, und sie werden schließlich fragen, warum ... dann können Sie alle wie "BAM! TDD" sein ! "
Sie spielen nicht mit dem Projekt, dem Prozess oder der Quelle. Ich sehe also keinen negativen Grund. Ehrlich gesagt sehe ich keinen Grund, warum es zeitlich anders ist, als alle Ihre manuellen Tests mit Ausführen + Eingabe + Prüfergebnissen durchzuführen.
quelle
1) Der Kunde hat für Unit-Tests nicht bezahlt
Der Kunde (dachte er) hat für eine funktionierende Lösung bezahlt. In Abhängigkeit von den Verträgen kann die Behebung von Mängeln für Ihr Unternehmen tatsächlich rentabel sein. Wenn ausreichend gesperrt ist. Bezahlen Sie also wieder für eine funktionierende Lösung. TDD sollte dieses Ziel unterstützen.
2) Das Projekt lässt keine Zeit für TDD
TDD dauert nicht länger. Es sollte die Menge an fremdem oder überflüssigem Code reduzieren und die Codebasis auf das fokussieren, was die Tests bestehen lässt. Alle bestandenen Tests bedeuten, dass der Code fertig ist, vorbehaltlich der Qualität und Angemessenheit der Tests.
3) Technische Schulden? Welche technischen Schulden?
Ich habe den Eindruck, dass Sie sich für das nachträgliche Hinzufügen von Tests zu vorhandenem Code aussprechen. Dies ist zu den besten Zeiten ein Albtraum und bringt nicht die Vorteile, die Sie erwarten könnten. Das Hinzufügen von Tests zur Behebung von Fehlern sollte jedoch akzeptabel sein und langfristig helfen.
Ich empfehle sowieso nicht, die Tests zu schreiben, wie es Snorfus vorgeschlagen hat. Theoretisch hört sich das gut an, aber Unit-Tests können und werden sich mit der Zeit ändern. Wenn sich die Anforderungen ändern, werden neue Funktionen hinzugefügt, und die Komponententests müssen aktualisiert werden. Wenn Sie als Teil eines Teams arbeiten, sind Ihre Komponententests veraltet, da andere Funktionen / Fehlerbehebungen hinzufügen.
Ich spreche die spezifischen Punkte an, die Sie angesprochen haben, anstatt neue anzusprechen, weil es dort Spielraum gibt, um Fortschritte zu erzielen oder zu verstehen, warum es blockiert wird.
quelle
Für jeden Kunden, der mit Produktionsproblemen konfrontiert ist,
Schreiben Sie einen Unit-Test und senden Sie eine E-Mail an den Manager, in der Sie darauf hinweisen, dass Sie einen Unit-Test hinzugefügt haben, um das Szenario abzudecken.
Und sagen Sie ihm, dass dieses Problem in der Produktion nicht noch einmal auftreten wird, da unser Komponententest jede Nacht ausgeführt wird. Bevor der Code in die Produktion geht, werden wir anhand dieses Komponententestfehlers feststellen, ob er fehlerhaft ist.
Sagen Sie ihm, dass dieses Produktionsproblem niemals aufgetreten wäre, wenn wir diesen Komponententest bereits durchgeführt hätten, bevor der Code in Produktion gegangen ist.
Tun Sie dies konsequent und beharrlich und bald wird er überzeugt sein. Die Manager mögen es nicht, wenn der Kunde mit Produktionsproblemen konfrontiert wird, und er wird sich der Idee des Unit-Tests anschließen. Viel Glück.
quelle