2009-12-14 24 views
7

Sono "relativamente nuovo" ai test unitari e TDD. Solo più recentemente ho completato la mia prima applicazione di produzione che ha (almeno in teoria) una copertura del 100% del codice. Ho anche fatto test unitari in progetti precedenti per un po 'di tempo, ma non nel vero stile TDD e con una buona copertura del codice. Era sempre stato un ripensamento. Sento di averne una buona conoscenza adesso.Infrastruttura richiesta per TDD?

Sto anche cercando di addestrare il resto del team su TDD e test delle unità in modo da poter crescere e iniziare a fare test di unità in tutte le nostre applicazioni, e infine progredire nel fare TDD completo w/integrazione automatizzata & continua. Ho pubblicato a thread here sul mio piano di attacco/programma di formazione per i commenti & critici.

Una delle risposte (in effetti la più votata) mi ha suggerito di configurare prima l'infrastruttura prima di procedere con la formazione. Sfortunatamente non ho alcuna esposizione a questo, e cercare su argomenti è difficile perché le pagine per CruiseControl.NET/nAnt/etc non spiegano in realtà il 'perché' dovremmo impostare questo e il 'come' tutto si collega a togeather.

Siamo un piccolo negozio (circa 10 sviluppatori) e usiamo quasi esclusivamente tecnologie Microsoft e facciamo il nostro sviluppo in VB.NET. Stiamo cercando di iniziare a usare C#, ma è per un'altra volta. Sto usando il progetto MSTest che viene fornito con VS2008 per i miei test unitari e ho creato le mie app utilizzando Visual Studio e distribuito utilizzando i progetti di installazione MSI ... Inoltre (sfortunatamente) utilizziamo VSS per il nostro controllo soure - ma questo è anche sul ceppo e mi piacerebbe davvero liberarmene e usare la sovversione.

So che ho bisogno di utilizzare CruiseControl.NET per CI e NAnt o MSBuild per la creazione delle applicazioni. E probabilmente ho bisogno di un server di build per eseguire tutte queste build. Ma non riesco a trovare nulla che 'connetta' i punti e spiega come interagiscono tra loro, cosa dovrebbe essere sul tuo build server, quando dovresti costruire con il tuo build server (è solo per build di implementazione, o anche quando tu vuoi semplicemente compilare l'app che stai sviluppando dopo aver apportato una piccola modifica, nel tuo ambiente locale?). Sto anche pianificando di assestare MSTest perché ho trovato che è bug e userà invece nUnit.

Qualcuno può forse illuminare questa lacuna che ho dal 'sapere come fare TDD' per 'impostare l'infrastruttura adeguata in modo che tutto il team possa farlo e lavorare in tod'? Capisco cosa sia l'integrazione continua, ma ancora una volta, non sono sicuro di come un server di build debba essere configurato e in che modo si connetta a tutto, e perché ne abbiamo bisogno di uno (ad esempio il pitch to management).

grazie mille per il vostro tempo.

Quale parte del finalbuilder ho bisogno? Sembra che ci sia una certa sovrapposizione con il builder finale e teamcity. Il server di Finalbuilder sembra essere un server CI, quindi suppongo di non averne bisogno. FinalBuilder sembra essere un server di build - ma pensavo che TeamCity fosse anche un server di build ... E Automise sembra essere uno strumento di automazione visiva di Windows, come una sorta di piattaforma di sviluppo per le app Winforms ...

_I anche non si vede il supporto per costruttore finale in The Team City Supported Apps Diagram: _

+1

Penso che il seguente collegamento contenga una serie esauriente di informazioni su questo argomento: http://martinfowler.com/articles/continuousIntegration.html – Tomas

risposta

5

Date un'occhiata a un webinar che ho fatto un paio di settimane fa - How To Start Unit Testing Successfully. In quel webinar ho parlato di best practice per strumenti e test unitari e si rivolgeva agli sviluppatori proprio come te che vuoi introdurre test unitari nella loro organizzazione.

primo ordine del giorno che si desidera mettere un processo CI (Continuous Integration) in luogo e per questo avrete bisogno di tre strumenti:

  1. controllo Source
  2. build server
  3. cliente Costruire/script

Spero che tu abbia già qualche forma di controllo del codice sorgente, quindi parliamo degli altri due.

Corporatura Server - controlla il controllo del codice sorgente e quando cambia (o qualche altra condizione incontrato) esegue uno script di build su alcuni client (o stessa macchina) ci sono diversi server di build disponibili vi consiglio di TeamCity JetBrain è facile da installare e utilizzare (ottima interfaccia web) ed è gratuito per un massimo di 20 sviluppatori (siete voi).

Script di build - sul client di build si desidera eseguire uno script di build che creerebbe la soluzione ed eseguirà i test di unità. TeamCity ha alcune funzionalità di test di base & ma per le opzioni più avanzate (build installer, documentazione, ecc.) È necessario un certo script runner al lavoro che utilizziamo FinalBuilder - non è gratuito ma ha un ottimo editor. Se stai cercando un'alternativa gratuita dai un'occhiata a ANT o NANT - ma preparati a modificare un sacco di XML.

Altri strumenti - Perché una parte importante del test di unità di successo è come sia facile scrivere ed eseguire test su macchine dello sviluppatore Vi suggerisco di controllare se ci sono migliori IDE o strumenti esterni che avrebbero aiutato gli sviluppatori scrivono & eseguire i loro test unitari.

+1

+1 per TeamCity. Abbiamo iniziato con CruiseControl.NET e siamo passati a TeamCity perché era molto più facile da amministrare. Gli script di NAnt sono facili da modificare, ma non devi farne gran parte con TeamCity. – TrueWill

+0

Grazie mille per l'informazione. Ho modificato il mio post originale per notare che utilizziamo VSS. Anche se odio VSS =). Spero di ottenere l'installazione di sovversione in modo che possiamo finalmente sbarazzarci di VSS bacato. Ho una domanda però - usi il tuo build server per compilare le tue build locali mentre sviluppi? O è solo per le build di implementazione? – dferraro

+1

Eseguo lo script di build sul mio computer locale ma in genere VS è sufficiente per la creazione e il test del mio progetto –