La revisione del codice deve essere eseguita prima o dopo i test unitari

10

Sto discutendo con il mio collega su quando eseguire la revisione del codice - prima o dopo i test unitari. Qual è la migliore pratica?

Alcuni fattori che potremmo dover prendere in considerazione (potrebbero essercene altri):

  • Dimensione della modifica del codice: un grande cambiamento significa che più modifiche deriveranno dalla revisione del codice. Se queste modifiche sono maggiori di, se UT era prima della revisione del codice, dovrai ripetere la maggior parte dei tuoi UT nuovamente.
  • Tempo richiesto per eseguire il test dell'unità
  • È una nuova funzionalità o una correzione di bug
posta dimba 23.11.2011 - 10:58
fonte

5 risposte

20

Devi sempre eseguire il test dell'unità prima eseguendo la revisione del codice ed ecco perché

  1. Se il tuo codice è rotto in modo da essere catturato dai test unitari, perderai il tempo degli altri sviluppatori facendoli coinvolgere nel ciclo rosso / verde / refactor.
  2. I test mostrano agli altri sviluppatori l'uso previsto del codice che rende più facile la revisione.
  3. I test devono essere esaminati insieme al codice che viene testato nel caso in cui manchi i casi di test o i test non funzionino correttamente.
  4. I test e la revisione del codice tendono a cogliere diversi problemi con solo una piccola sovrapposizione nei problemi riscontrati. I test unitari non si annoiano a dover ripetere il test del codice quando il revisore trova dei problemi, gli sviluppatori si annoiano e probabilmente non lo faranno anche la seconda volta.

Ci sono probabilmente altri motivi, ma quelli sono quelli che ho visto e sperimentato personalmente dopo aver implementato pratiche di revisione del codice all'interno di 3 diversi team / aziende.

Modifica Ovviamente quanto sopra è per i momenti in cui la revisione del codice è un passo nel processo di sviluppo del software (sia cascata che agile). Se stai lavorando su una sezione di codice particolarmente ampia o difficile sentiti libero di avere un altro paio di occhi su di esso in qualsiasi momento.

    
risposta data 23.11.2011 - 17:17
fonte
11

Le recensioni dei codici si riferiscono a quando il codice è "completato".

Nella mia organizzazione la nostra definizione di "fatto" include test unitari (come puntiamo a TDD), quindi le revisioni del codice sono di codice completo - e il codice completo include test.

Inoltre, i test devono essere sottoposti a revisione e refactoring, quindi ha senso che facciano parte della revisione del codice.

    
risposta data 23.11.2011 - 11:06
fonte
4

I test dovrebbero essere considerati parte del codice da esaminare. Quindi ha senso rivedere dopo aver fatto i test.

Assicurati che anche i test vengano revisionati. Questo è fondamentale per coloro che sono nuovi ai test unitari.

Assicurati che il tuo team lavori l'iniezione delle dipendenze, i quadri di isolamento, i mock contro gli stub, le giunzioni, i test di interazione e quelli basati sullo stato e i test di integrazione e unità.

Non è necessario implementare gli argomenti di cui sopra, ma è necessario comprenderli.

    
risposta data 05.12.2011 - 19:10
fonte
2

Bene,

Dipende da cosa intendi per "Unit Test" ...

If it was a TDD style Unit Test it is meaningless because you write test while you write your code. There is no after-later case.In this case you improve code quality continously: Refactoring...

E

If it was classic "unit test" [ whatever it means i do not know, but i mean test after you write the codes and done by usually other guys] then the main criteria is what you expect from codereview and nature of unit tests: if you want fast feedback-make review and take action and have no automated unit test,you will have to wait unit test. If you want to identify mature problems with code review, and incrementally apply solution for next iterations, you may do it before unit test...

Ma in fondo personalmente, per la visualizzazione del codice, dopo o dopo il test delle unità non è un criterio reale per me ...

Perché facciamo la visione del codice? Per la qualità del codice ... Invece di un cancello di "controllo qualità", inserisci qualità nel tuo processo di sviluppo del software - ambiente ...

    
risposta data 23.11.2011 - 13:07
fonte
2

Tenderei a dire, cerchiamo di essere "agili" ... non aspettare che il codice sia finito per fare una rapida revisione del codice informale: ci sono sviluppatori con chi e soggetti con cui puoi davvero aspettare per l'intero codice + fasi di test da completare ... ma

quando si tratta di soggetti nuovi (nuova funzionalità, ricerca approfondita, qualcosa di completamente nuovo per la squadra), revisione del codice in anticipo, non perdere tempo: chiedi a un collega di dare un'occhiata di tanto in tanto: l'isolamento è un importante fattore di fallimento in questo caso.

se lo sviluppatore è nuovo anche per il team, esamina il codice in anticipo e magari spesso .

e, a proposito, anche i test unitari richiedono una revisione del codice.

    
risposta data 01.12.2011 - 12:25
fonte

Leggi altre domande sui tag