2009-08-14 17 views
8

Coppia di domande:Test unitari nel codice di rilascio della produzione?

1.) Il codice di verifica dell'unità di prova?

2.) In tal caso, si lasciano intatti quei test dell'unità in modo che i test stessi siano presenti nell'ambiente di produzione?

Vedo il valore in # 1, ma è una "buona pratica" creare dipendenze nella produzione, ad esempio, negli assembly NUnit?

Dammi i tuoi pensieri.

risposta

14
  1. Assolutamente. Se il nostro accumulo supera la suite di test di unità allora è etichettato e un candidato per la produzione
  2. No. distribuzioni non includono le prove, né le librerie di supporto (ad esempio librerie di test di unità, beffardo etc.)

Quanto sopra è la mia regola generale (di solito utilizzo su utenti non tecnici). Tuttavia, ho un'eccezione, che è un'utilità di programmazione che è stata testata con circa 130 script di test. Poiché gli script di test sono il doppio degli esempi, li distribuisco insieme alla versione di produzione e, di conseguenza, migliorano la documentazione esistente.

L'implementazione di test con codice open source è decisamente utile. Permette alle persone di giocare, modificare e inviare patch, pur essendo in grado di eseguire i test che sono passati con successo per consentire il rilascio della risorsa originale.

7

Sì e Sì, il comportamento dell'applicazione può variare tra le versioni di rilascio e di debug, quindi, come parte del processo di rilascio, la build di rilascio deve superare tutti i test di unità.

+1

+1 e ho eliminato la mia risposta superflua. – Abizern

+0

Concordato che la versione di rilascio debba superare i test di unità ... ma distribuire il framework di test unitario insieme al codice di produzione? –

2
  1. Sì, certo! I test unitari vengono eseguiti su tutte le configurazioni di build.

  2. I test di unità sono sempre intatti ma ciò non significa che i gruppi spediti dipendono da qualsiasi cosa relativa ai test. I test vengono sempre scritti in un assieme parallelo (nello stesso ambiente di generazione) che verifica l'assieme di produzione. L'assieme parallelo non viene spedito poiché contiene solo i test.

2
  1. Sì, ricordate il classico "assert con effetti collaterali" di errore che deve essere preso come bene. Ma questo non ha bisogno di essere fatto tutte le volte che il debug build, dove un test completo dovrebbe essere fatto ogni giorno.
  2. In genere i test di unità si trovano in diverse unità di traduzione e in un progetto diverso, in modo che una generazione di release del progetto principale non li tocchi affatto. Se i tuoi test unitari si trovano nelle stesse unità di traduzione del codice testato, puoi utilizzare la compilazione condizionale per escluderli dalle versioni.
1

Dipende dal progetto. Sì al numero 1. Seguendo il principio che tutto dovrebbe essere controllato nel controllo del codice sorgente e dovrebbe essere semplice far partire un nuovo sviluppatore. Rendili parte del codice base. Le nuove persone possono fare un check out ed eseguire i test.

Se sono distribuiti sulla produzione è un problema diverso. Non ho lavorato a un progetto che necessitasse di lì.Il modello di implementazione di Rails è (generalmente) semplicemente un check-out dell'intero progetto su una macchina di produzione, quindi sì, ci sono. I progetti Java/Maven hanno un'intera fase di costruzione/confezionamento, e generalmente i test di unità possono-- e vengono-- rimossi quando si costruisce il file .war finale.

In entrambi i casi, non ti aspetti che corrano. Nell'ambiente odierno, non importa se si trovano lì - la memoria e il disco sono così economici che non è un problema. Ho sentito l'argomento che non si desidera il codice di test sul server di produzione in modo che non ci sia il rischio che venga eseguito, ma non ho sentito di uno scenario in cui ciò sarebbe realmente accaduto.