Frage

Dies setzt voraus, sicher, dass Unit-Tests eine gute Sache ist. Unsere Projekte haben ein gewisses Maß an Unit-Tests, aber es ist bestenfalls inkonsistent.

Was sind die überzeugendsten Möglichkeiten, die Sie verwendet haben oder mit Ihnen verwendet haben, hatten alle zu überzeugen, dass Unit-Tests formalisiert eine gute Sache ist, und dass macht es erforderlich ist wirklich im besten Interesse der ‚largeish‘ Projekte, die wir auf Arbeit . Ich bin kein Entwickler, aber ich bin in der Qualitätssicherung und möchte die Qualität der Arbeit zu verbessern, geliefert, um sicherzustellen, sie bereit ist, zu testen.

Durch formalisierte Unit-Tests, ich spreche nur über

  • die Unit-Tests identifizieren geschrieben werden
  • Die Ermittlung der Prüfdaten (oder beschreiben)
  • Beim Schreiben dieser Tests
  • Tracking diese Tests (und das Wiederverwenden nach Bedarf)
  • machen die Ergebnisse verfügbar
War es hilfreich?

Lösung 13

So, zwei Jahre, nachdem ich diese Frage gestellt, finde ich, dass eine unerwartete Antwort war, dass auf eine neue SDLC, indem das war, was erforderlich war. Vor fünf Jahren, wir haben unsere erste formelle SDLC. Es verbessert unsere Situation, ließ aber einige wichtige Dinge, wie Automatisierung aus. Wir sind jetzt dabei, eine neue SDLC der Gründung (unter dem neuen Managment), wo einer des Mieters Automatisierung ist. Nicht nur Unit-Tests automatisiert, sondern automatisierte Funktionstests.

Ich denke, die Lektion ist, dass ich zu klein dachte. Wenn Sie ändern wollen, wie Sie Software erstellen, geht ‚Nägel mit Köpfen‘ und eine drastische Veränderung machen, anstatt schrittweise Änderung vorschlagen, wenn Sie nicht zu, dass verwendet werden.

Andere Tipps

Eine sehr überzeugende Art und Weise ist die Einheit zu tun formalisiert selbst testen, unabhängig davon, was Ihr Team / Unternehmen tut. Dies könnte einigen zusätzlichen Aufwand auf Ihrer Seite nehmen, vor allem, wenn Sie nicht mit dieser Art von Praxis erfahren.

Wenn Sie dann zeigen können Ihren Code besser ist und Sie sind produktiver als Ihre anderen Entwicklern, wollen sie gehen, um zu wissen, warum. sie Ihre Lieblings-Einheit Testmethoden Dann füttern.

Wenn Sie Ihre Kollegen Entwickler überzeugt haben, überzeugen zusammen Management.

Ich benutze Maven mit der todsichere und Cobertura Plugins für alle meine Builds. Die tatsächlichen Testfälle werden erstellt mit JUnit , DbUnit und EasyMock .

Identifizierung von Unit-Tests Ich versuche, Test Driven Development zu folgen, aber um ehrlich zu sein, ich in der Regel genau das zu tun für die Handvoll der Testfälle und kommen dann zurück und erstellen Tests für den Rand und Ausnahmefällen später.

Ermittlung von Testdaten DbUnit ist groß für das Laden von Testdaten für die Komponententests.

Schreibtestfälle Ich benutze JUnit die Testfälle zu erstellen. Ich versuche, selbstdokumentierenden Testfälle zu schreiben aber Javadocs verwenden, um etwas zu kommentieren, die nicht offensichtlich ist.

Tracking & Herstellung Die vorliegenden Ergebnisse Ich integriere, um die Unit-Tests in meinen Maven Build-Zyklus des todsichere Plugin und ich verwende das Corbertura Plugin die Abdeckung in diesen Tests erreicht zu messen. Ich habe immer generieren und eine Web-Site, einschließlich der todsicheren und Cobertura berichten als Teil meiner täglichen Build veröffentlichen, so kann ich sehen, was Tests nicht bestanden / bestanden.

Das Ereignis, das hat mich überzeugt war, wenn wir einen Fehler dreimal, in drei aufeinander folgenden Versionen regredieren verwaltet. Einmal habe ich realisiert, wie viel produktiver ich als Programmierer war, als ich nicht ständig triviale Fehler wurde Fixierung, nachdem sie an den Kunden gegangen war, und ich konnte ein warmes wohliges Gefühl haben, die Code Kollegen tun würde, was sie behauptet, es würde, wurde ich ein Konvertit.

Zurück in den Tag ich auf Mainframes Cobol Entwicklung haben wir diese religiös in den verschiedenen Unternehmen habe ich gearbeitet und es war, als die Art und Weise Sie die Dinge tat akzeptiert, weil die Umwelt es erzwungen. Ich denke, es ist ein sehr typisches Schema für die Ära war und vielleicht einige der Gründe könnte sein, dass Sie anwendbar sein: -

Wie die meisten Mainframe-Umgebungen hatten wir drei Bereiche, Entwicklung, Qualitätssicherung und Produktion. Programmierer bei der Entwicklung entwickelt und Einheit dort getestet, und sobald sie unterzeichnet und war das Gerät glücklich wurde die QA-Umgebung (mit dem Test- und Ergebnissen docs) migriert, wo es System von engagierten QS-Mitarbeitern getestet. Die Entwicklung zu QA Migration war ein formeller Schritt, die über Nacht geschehen. Sobald QA'ed wurde der Code in der Produktion gewandert - und wir hatten nur sehr wenige Fehler

.

Die Motivation der Unit-Tests getan und richtig war, dass, wenn Sie nicht und ein Fehler tun wurde von QA Personal findet es war offensichtlich, dass Sie die Arbeit nicht getan hatten. Folglich Ihr Ruf hing davon ab, wie streng Sie waren. Natürlich sind die meisten Menschen würden sich mit dem gelegentlichen Fehler beenden, aber Programmierer, die die Zeit erhalten solide getesteten Code alle produzierten bald einen Stern Ruf und diejenigen, die fehlerhaftem Code erzeugt auch habe bemerkt. Der Push wäre immer auf Ihr Spiel und damit die Kultur produzierte war eine, die zu fehlerfreiem Code geschoben erstes Mal ausgeliefert.

Extrahieren von relevanten Punkten -

  1. Coder Ruf gebunden frei mit der Lieferung von Bug getesteten Code
  2. erheblicher Aufwand im Zusammenhang mit Einheit getesteten Code auf die nächsten Ebene zu bewegen, so die Motivation, dies nicht zu wiederholen und es beim ersten Mal richtig bekommen.
  3. Systemtests von verschiedenen Personen zu Unit-Tests durchgeführt -. Idealerweise ein anderes Team

Ich bin sicher, dass Ihre Umgebung unterscheiden, aber die Prinzipien sein könnten übersetzbar.

Manchmal durch Beispiel ist der beste Weg. Ich finde auch, dass Menschen daran erinnern, dass bestimmte Dinge einfach passieren nicht, wenn die Dinge im Test sind. Nächstes Mal, wenn jemand bittet, etwas zu schreiben, tun Sie es mit Tests unabhängig. Schließlich Ihre Kollegen neidisch auf die Leichtigkeit sein wird, mit dem Sie Ihren Code ändern können und wissen, dass es funktioniert immer noch.

Wie für die Verwaltung müssen Sie betonen, wie viel Zeit aufgrund der nuklearen Explosion verschwendet wird, das auftritt, wenn Sie eine Änderung an Codebasis X vornehmen müssen, die im Test ist nicht.

Viele Entwickler nicht nur erkennen, wie viel sie Refactoring ohne sicherzustellen, dass sie das Verhalten über das gesamte System zu erhalten. Für mich ist dies der größte Vorteil für Unit-Tests und TDD meiner Meinung nach.

  1. Software-Anforderungen ändern
  2. Software ändert die Anforderungen anpassen

Die einzige Gewissheit ist die Veränderung. Ändern von Code, der nicht im Test erfordert der Entwickler ist sich bewusst sein, jede Verhaltensnebenwirkung möglich. Die Realität ist, dass die Programmierer, die denken, dass sie in jede Permutation lesen können, tun dies durch einen Schmerz Abstecken Prozess von Versuch und Irrtum, bis nichts mehr offensichtlich bricht. An dieser Stelle sie einchecken.

Der pragmatische Programmierer erkennt an, dass er / sie nicht perfekt ist und alles zu wissen, und dass die Tests sind wie ein Sicherheitsnetz, das sich zu Fuß der Refactoring Drahtseilakt schnell und sicher erlaubt.

Was, wenn Test auf der grünen Wiese, Code zu schreiben, würde ich so viel wie möglich befürworten. Verbringen Sie die Zeit definiert, die Verhalten , dass Sie aus Ihrem System wollen und Schreibtests zunächst jene höhere Ebene Konstrukte zum Ausdruck bringen. Unit-Tests können kommen, wie Gedanken kristallisieren.

Hope, das hilft.

Bildung und / oder Zertifizierung.

Geben Sie Ihre Teammitgliedern eine formale Ausbildung auf dem Gebiet der Prüfung - vielleicht mit Zertifizierungsprüfung (abhängig von Ihren Teammitgliedern und Ihre eigene Haltung gegenüber Zertifizierung). Sie werden auf diese Weise Tests auf eine höhere Stufe zu nehmen, und Ihre Teammitglieder werden eher eine professionelle Einstellung zum Testen nehmen.

Es gibt einen großen Unterschied zwischen zu überzeugen und erforderlich .

Wenn Sie einen Weg finden, Ihre Kollegen davon zu überzeugen, sie zu schreiben - groß. Allerdings, wenn Sie einige formalisierte Regeln erstellen und verlangen, daß sie Unit-Tests zu schreiben, werden sie einen Weg zur Überwindung dieses. Als Ergebnis erhalten Sie eine Reihe von Unit-Tests erhalten, die nichts wert sind. Es wird Unit-Test für jede einzelne Klasse zur Verfügung stehen und sie werden Getter und Setter testen

Denken Sie zweimal vor dem Erstellen und Durchsetzung von Regeln. Die Entwickler sind gut darin, sie zu überwinden.

Zum ersten Mal um Sie einfach weitermachen müssen, und schreiben sie und die Menschen zeigen, dass es lohnt sich. Ich habe an drei Projekten gefunden, dass es der einzige Weg, die Menschen zu überzeugen. Einige Leute, die keinen Code zu tun (zum Beispiel Junior-Projektmanager) nicht in der Lage sein, den Wert zu sehen, bis es sie direkt ins Gesicht starrt.

Auf meinem Software-Team, neigen wir dazu, einen kleines Geschäft Fall zu diesen Themen zu schreiben und präsentieren sie an dem Management zur Verfügung, um die Zeit haben Tests zu erstellen und zu verfolgen. Wir erklären, dass die Zeit zum Test genommen gut wettgemacht wird, wenn Crunch Zeit kommt, und alles ist auf der Linie. Wir setzen auch einen Hudson Build-Server, um die Verfolgung der Unit-Tests zu zentralisieren. Dies macht es viel einfacher für die Entwickler den Überblick über Prüfungen nicht zu halten und wiederkehrende Probleme zu entdecken.

Erinnern Sie Ihr Team oder die anderen Entwickler, dass sie Profis, keine Amateure. Arbeitete für mich!

Außerdem ist es ein Industriestandard in diesen Tagen. Ohne Unit-Tests Erfahrung, sind sie weniger wünschenswert und weniger wertvoll als Mitarbeiter potenzielle zukünftige Arbeitgeber.

Als Teamleiter, ist es meine Aufgabe, sicherzustellen, dass meine Programmierer Unit-Tests tun auf allen Modulen arbeiten sie an. Ich an dieser Stelle nehme an, es ist nicht einmal eine Frage, wie sie davon zu überzeugen, ist es erforderlich. Nicht manchmal, nicht auf largish Projekte, die ganze Zeit. Unit-Tests sind die erste Verteidigungslinie gegen etwas in der Produktionsumgebung, die Sie haben zu halten. Wenn etwas in der Produktion ist, die Einheit und das System nicht vollständig getestet wurden, dann wird es wieder kommen Sie zu beißen. Ich denke, eine der Politik, die wir hier haben, dies zu unterstützen, ist, dass, wenn es bläst in der Produktion, oder verursacht Probleme, dann der Programmierer verantwortlich für die Codierung und das Modul Testen wird derjenige sein, die sich um die Probleme zu übernehmen hat, tun die Bereinigung usw. Das allein ein ziemlich guter Motivator ist.
Die andere ist, dass es um Stolz ist. Ich arbeite in einem Geschäft von etwa 75 Programmierer, auch wenn das von einigen Standards groß ist, es ist wirklich klein genug für uns alle einander zu kennen. Es ist auch klein genug, dass wir wissen, welche sich an funktionieren, und wenn es um die Produktion bewegt, sind wir keine Abbrüche bewusst, Störungen, usw. Wenn Sie vorsichtig sind, tun Sie das Gerät und Systemtests, die Chancen auf etwas bewegen die Produktion ohne Ausfälle deutlich erhöht verursacht. Es kann eine Zeit oder zwei nehmen, etwas zu Produktion zu bewegen und es erkennen Fehler, aber es gibt große Belohnungen beteiligt nicht vermasselt. Es ist wirklich schön Glückwünsche auf dem Flur zu hören, wenn Sie ein Projekt in Bewegung und es nicht vermasseln.

Schreiben Sie ein paar von ihnen und zeigen, dass Unit-Tests Ihre Produktivität und die Qualität des Codes verbessert hat. Ohne irgendeine Art von Beweis, werden die Leute manchmal nicht glauben, es lohnt sich.

Sie könnten Inspiration aus einer Initiative bei Google nehmen. Ihr Testteam begann das Aufstellen von Beispielen, Tipps und Vorteile innerhalb der Toilettenkabinen das Profil der Verdienst der Testautomatisierung zu erhöhen.

https://testing.googleblog.com/2007 /01/introducing-testing-on-toilet.html

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