Frage

Hier ist also die Situation- ein Zitat von meinem Chef: [...] Wir müssen uns auf das Programmieren konzentrieren. [...] Am Ende des Tages möchte ich gute Software schreiben und mich nicht mit Tests befassen . " Dies wird gesagt, nachdem wir 3 Monate mit einer entmutigenden Liste von Fehlern und kürzlich ein Nichtprogrammier für das Schreiben von Webtests mit Selenrahmen bezeichnet haben.

Mein Chef ist sehr schüchtern ein Einheitstest (er kann den Kostengünstig nicht erkennen, wenn es die Entwickler verlangsamt). Was sind Ihre Meinung zu Webtests und programmatischen Tests im Allgemeinen? Sollten sie vom (oder a) Programmierer geschrieben werden oder ist es wichtig? Mein Gedanke war, dass ein Teil des Schreibens guter Software ist, Tests zu schreiben? Er ist ein Microsoft-Elfenbeinturm-Typ, und so wären alle Ressourcen, die von Microsoft (oder guten Artikeln im Allgemeinen) zugunsten von Tests durch Design veröffentlicht wurden, hilfreich.

War es hilfreich?

Lösung

Hier ist, was ich getan habe.

  1. Ich habe die Tests trotzdem geschrieben.

  2. Ich habe den Code geschrieben, nachdem ich die Tests geschrieben hatte.

  3. Der Code war rockiger und (meistens) fehlerfrei (zu den Grenzen meiner Fähigkeiten).

Ich habe niemandem gesagt, dass ich TDD mache. Es sei denn, sie fragen.

Es stellt sich heraus, dass TDD tatsächlich schneller ist, als zu versuchen, etwas zu entwerfen, es zu codieren und zu hoffen, dass es funktioniert.

Einige Dinge sind ein zusätzlicher Schritt 0: eine "Technologiespitze", um zu sehen, wie die Dinge funktionieren. Darauf folgt eine Testentwicklung, um die noch nicht geschriebene echte Software auszuüben.

Ich bin ein wenig hinter dem Zeitplan, wenn es darum geht, mit dem Design zu beginnen. Da mein Design "Design- und Schreiben von Tests für dieses Design" ist, während einige andere Leute "mit klugen Ideen, aber ohne wirklichen Beweis" herumlaufen. Einige Leute können gut auf Papier entwerfen. Ich kann nicht. Aber ich kann Tests entwerfen.

Ich bin im Allgemeinen ziemlich weit voraus, wenn es um den Abschluss des Code geht. Da - wenn ich fertig bin, codieren - bestehen alle Tests.

Andere Tipps

Code Complete ist ein Buch, das Teil der Microsoft -Sammlung ist. Es enthält Ratschläge, die sich für die Überprüfung und Bürsten von Peer -Überprüfungen bei Unit -Tests als Konzept befürworten. Mit Unit -Tests geht es nicht zu weit ins Detail, aber es kann ihn der Idee erwärmen und Sie können das Thema von dort aus weiter erkunden.

Letztendlich brauchen Sie jemanden, der ein Programmierer ist, der direkt an der Automatisierung von Tests beteiligt ist ... Ich meine, das ist per Definition.

Unit -Tests werden von den Personen, die mit den Subsystemen, für die sie geschrieben werden, am besten vertraut sind Dies könnte zu einer schlechteren Abdeckung führen. Auf der anderen Seite kann der Eigentümer des Subsystems auch für bestimmte Mängel blind sein (aber genau dafür sind Peer -Code -Bewertungen!)


Der Rest davon ist wirklich nur müßige Diskussion über Ethik, aber es ist wichtig zu berücksichtigen.

Einige Leute versuchen gerne, "Scheiße einzuschleichen", wenn das Management alberne Entscheidungen trifft. Das macht mich nicht nur unruhig, sondern auch irgendwie vorsichtig mit diesen Programmierern. Ich verstehe die Motivation, ich denke, wir waren alle dort, aber letztendlich sollten Sie eher erziehen als an SubterFuge teilnehmen.

Das Management spielt eine wichtige Rolle bei der Planung und stützt sich sowohl für genaue Schätzungen als auch für ein allgemeines Verständnis der Arbeit auf Sie. Wenn Sie Ihre Schätzungen, um zusätzliche Arbeiten unter den Teppich zu fegen, padeln, ist das wirklich eine gute Sache? Was eine einfache Lüge war, wird zu diesem aufwändigen Scherz, den Sie an den Menschen spielen, die direkt daran beteiligt sind, Ihrem Karriere -Fortschritt zu helfen.

Was ein Problem mit dem Prozess und der Schätzung für legitime Arbeiten war, ist jetzt zu einem Problem der Ethik.

Ich empfehle dringend, Ihren geplanten Ansatz zu überzeugen, Ihren Manager davon zu überzeugen, Ihren Standpunkt durch Vernunft, Logik und seine Liebe zu Microsoft anzusprechen. ;))

Langfristig, wenn Sie sich ständig gegen das Management gegen Entscheidungen über den Programmierungsprozess (was wirklich nicht ihre Aufgabe ist, Entscheidungen zu treffen), ist es wahrscheinlich am besten, diesen Lebenslauf zu polieren und einen besseren Job zu finden.

Ein Teil der Aufgabe eines Programmierers besteht darin, die beteiligten Personen zu erziehen, die weniger Fachwissen haben. Wenn Sie dies Ihrem Manager erklären, kann dies dazu beitragen, einige der intellektuellen Hindernisse in diesem Thema zu zerstören und ihn zu erweichen, um Ihren Rat in dieser Angelegenheit zu akzeptieren.

Ich gehe für die Welt, dass etwas, das es von mindestens zwei Personen "getan" zu haben, überprüft worden sein muss. Sie benötigen nicht immer einen Softwaretester im Team, wenn alle im Team glauben, dass die Qualität der Software jedermanns Aufgabe ist.

Wenn Sie möchten, dass es hocheffizient ist, sollte der Entwickler, der den Code schreibt, die Tests schreiben und jemand überprüft sie mit dem Produktionscode. Wenn Sie sehr effektiv sein möchten, kombinieren Sie sich mit jemandem und er schreibt die Tests, während Sie den Code in einem "gepaarten TDD" schreiben.

Erinnern Sie den Manager daran, dass die Kosten für Fehler expontentiell zunehmen, je später er gefunden wird.

Ich verstehe, woher dein Chef kommt. Schließlich sollten Programmierer in der Lage sein, Code auszubauen, der nur "funktioniert". Testen jedoch Wille Passen Sie, egal was passiert, sei es Unit -Test, Integrationstests in Ihrem Unternehmen oder nachdem Sie beim Kunden installiert sind. Fehler in jeder dieser Phasen haben jedoch unterschiedliche Kosten und Konsequenzen ...

Sie werden oft hören, dass es eine gute Idee ist, andere Personen Ihren Code zu testen, da sie die Spezifikation anders interpretieren können. Der Vorteil des Schreibens der Tests für Ihren eigenen Code besteht jedoch darin, dass Sie wissen, wo er defekt sein kann.

Ein effizienter Ansatz könnte eine Mischung aus beiden sein: Der Programmierer schreibt seine eigenen Unit-Tests, konzentriert sich auf Eckfälle und jemand anderes, der einige funktionale Tests durchführt und sich auf die höhere Spezifikation konzentriert.

Nicht alle Tests werden gleich erzeugt, gehen wir einige durch:

  • Unit -Tests / TDD. Es ist schwer, dagegen zu argumentieren, insbesondere als das Gegenteil zu "Er kann den Kostengünstig nicht erkennen, wenn es die Entwickler verlangsamt", ist es schneller. S. Lott geht die Details durch.
  • Fokussierte Integrationstests. Wie oben ist es schneller. Keine Reihe von Schritten durch Ihre vollständig integrierte App durchlaufen, um herauszufinden, ob diese sehr dünne Integrationscode, die Sie gerade geschrieben haben, funktioniert. Das ist am schlimmsten, wenn man bedenkt, dass dies so oft wiederholt wird, dass Sie dort hineingehen müssen, und noch mehr, wenn es fälschlicherweise an verschiedene Prozesse gekoppelt wird.
  • Vollständige Systemtests. Mit dem oben genannten Platz möchten Sie nur wissen, ob alle Teile richtig begangen wurden und ob die Benutzeroberfläche wie erwartet funktioniert. Im früheren Zeitpunkt benötigen Sie eine kleine Menge von Tests, die sehr schnell geschrieben sind. Vergleichen Sie das mit, wie oft Menschen manuell darüber gehen (einschließlich Sie selbst) und Sie haben einen Gewinner :). Für die späteren Dinge gibt es einige Dinge, die mit automatisierten Tests schwer zu erfassen sind, sodass Sie die Automatisierung nicht auf diese konzentrieren.
  • Erkundungstests. Diese sollten immer noch erledigt werden, hoffentlich wird überlegt, dass es vor dem Bau des Features ausreichend ist, um zu vermeiden, dass an diesem Punkt zusätzliche Änderungen vorgenommen werden müssen.

Jetzt kommt die QA normalerweise zusätzliche Szenarien. Dies ist gut, aber das Beste, wenn es in den automatisierten Tests kollaborativ aufgenommen wird.

Ein echtes Problem kann aktuelle Teamfähigkeiten sein. Unit -Tests sind schwieriger, je mehr der Code ist, ist dies normalerweise bei vorhandenem Code ohne Unit -Tests am schlimmsten, aber es macht es zunächst auch schwieriger, für einen Entwickler voranzukommen, der nicht gut weiß, wie Code locker gekoppelt/hoch gestaltet wird Kohäsionscode. Es muss getan werden, aber seien Sie sich dessen bewusst, da die Kosten irgendwohin (für die Teammitglieder oder das Unternehmen) gehen.

Um eine gute Testsuite zu schaffen, braucht es einiges an Mühe; Dies wird länger als erwartet dauern.

In dieser Hinsicht hat Ihr Chef Recht.

Wenn Sie jedoch vorhaben, Ihr Produkt (Funktionen) oder die Website hinzuzufügen (Seiten und JavaScript -Code hinzuzufügen), müssen Sie jedoch die Suite trotzdem zu einem späteren Zeitpunkt erstellen.

Sie könnten darauf hinweisen Unit -Tests ist seit VS2005 in das .NET -Framework eingebaut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top