La revisione del codice è in ritardo rispetto al ciclo di consegna / test


14

Nel nostro processo Agile abbiamo Sprint di 2 settimane. Le attività vengono consegnate su base giornaliera (build giornaliere) e il team di test completa i test immediatamente il giorno successivo o addirittura lo stesso giorno.

Abbiamo anche recensioni di codici Dev, che richiedono un po 'di tempo (1-2 ore), quindi sono programmate 3 volte a settimana: Lun-Mer-Ven. Gli sviluppatori si riuniscono e suggeriscono come migliorare / refattare il codice.

Il nostro problema è che, al momento della comparsa degli articoli di azione dopo una revisione del codice, la maggior parte delle attività sono già state testate. I tester non vogliono testare nuovamente ciò che ha già superato i test. A loro non importa delle modifiche interne agli sviluppatori.

Stiamo fraintendendo il processo Agile? Le revisioni del codice sono incompatibili con un ciclo di rilascio / test giornaliero? Non possiamo tenere recensioni di codice ogni giorno, poiché occupano tutto il tempo.


Ho trovato alcuni suggerimenti che potrebbero essere utili - Code Review in Agile Teams - parte II (trovato da una ricerca molto veloce su Google - potresti trovarne di più).
Dukeling,

1
I tester stanno lavorando su attività "rilasciate"? La definizione di "rilasciato" del tuo team include la revisione del codice e la risoluzione dell'elemento azione? O la revisione del codice sta avvenendo al di fuori della definizione del team eseguita?
Kent A.

1
Il tuo team di test non ha una suite di regressione automatizzata?
Telastyn,

5
Come si fanno le "revisioni del codice"? Si tratta di un lungo processo formale in cui i revisori devono elaborare una lista di controllo completa di metriche di qualità (sforzo: più ore-persona)? O è solo un altro membro del team che osserva il codice e fa domande se qualcosa sembra non funzionare (sforzo: 10-30 minuti per programmatore e revisore)? Perché esegui revisioni del codice? Per garantire la qualità del codice? Catturare bug? Diffondere la conoscenza del sistema tra più persone? Il tuo meccanismo di revisione del codice ti aiuta a raggiungere questi obiettivi o è solo una burocrazia che nessuno vuole fare?
amon,

Mi piacciono tutte le risposte, ma vorrei aggiungere un punto che ritengo importante. Stai chiedendo se stai interpretando male Agile ma non dici quale metodologia. Stai seguendo Scrum? Più importante: hai una definizione di "Fatto"? Lo sto chiedendo perché lo trovo molto ... strano che stai considerando qualcosa di "consegnato" prima di aver finito di lavorarci davvero. Sembra che la revisione del codice sia qualcosa di "extra" che fai solo perché.
Lorenzo Dematté,

Risposte:


8

I tester non vogliono ripetere il test è un po 'come dire "i programmatori non vogliono refactoring". Fa parte del lavoro. Il processo può essere riformulato in questo modo: le attività vengono create. Il codice viene generato. Il codice è stato testato. Il codice è stato rivisto. Le imperfezioni si trovano nel codice. Vengono create nuove attività per affrontare queste imperfezioni (ad es. Il codice viene refactored). Queste nuove attività richiedono nuovi test.


2
+1 In una metodologia Agile a rilascio giornaliero, non riaprire le attività. Crea una nuova attività per affrontare i problemi rilevati e pianificala in base alle priorità del tuo team. Nuove attività = nuova azione QA (che probabilmente significa eseguire nuovamente gli stessi test). Se al QA non piace, ci sono molte altre carriere.
Kent A.

Funziona chiaramente ma sembra inefficiente.
usr

7

Se hai intenzione di rivedere il codice ad un certo punto, non è più costoso fare la revisione in anticipo. E sembra che tu abbia un costoso processo di test, quindi non vuoi testarlo due volte. Pertanto è più economico rivedere il codice prima del test. La revisione del codice dopo il test non rende il lavoro più veloce. Rende più lento e ti invita a fornire codice scritto male ma testato con successo. Nel tempo tutto questo codice non rivisto renderà il lavoro sempre più lento. Quindi un concorrente più efficiente offre un prodotto migliore a un costo inferiore e il gioco è finito.

Inoltre, automatizza i test. I test manuali sono quindi del 1970.


5

Se stai trovando difficoltà nel far sì che le revisioni del codice avvengano nel tempo che hai attualmente prima del QA, dovresti considerare di rendere le revisioni del codice più leggere, come Revisione del codice in Agile Teams, Parte II di cui parla @Dukeling.

Ho scoperto che anche la cosa più semplice che potrebbe essere definita una revisione del codice ha dato benefici: prima di eseguire il commit del codice (o di inviare un DVCS), chiama un altro sviluppatore e guidalo attraverso la tua modifica. Questo potrebbe richiedere cinque o dieci minuti. L'obiettivo di questa recensione del codice è "Ha senso per l'altro sviluppatore?" L'obiettivo non era puntellare sulle implementazioni del design o conformarsi completamente alle idee personali del recensore su come avrebbe dovuto essere scritto. Ha dato questi vantaggi:

  • Conoscenza condivisa migliorata del funzionamento del codice
  • Catturato codice confuso o potenzialmente errato perché l'atto di spiegare il codice era sufficiente per far ripensare le cose all'autore
  • Ha contribuito a far evolvere gradualmente i modi di dire e lo stile del team, perché ha reso più facile spiegare le cose
  • Pochissime lamentele da parte della squadra

Revisioni più approfondite del codice funzionano assolutamente meglio per trovare problemi. Ma devi essere in grado di farli e agire su di essi per ottenere il valore. Un processo leggero che puoi fare tutto il tempo può essere più utile di un processo pesante che continua a rimandare o semplicemente aggiunge cose al backlog.


1

Una soluzione a questo problema è fare una rapida revisione del codice da parte di un altro peer una volta terminata la storia dell'utente, in modo che non ci siano errori di base / ovvi nel codice.

Ma questo deve accadere prima del ciclo di prova. Quindi ci sarebbero meno modifiche al codice dopo il test, quando si eseguono revisioni più ampie con tutti i team insieme.


1

A quanto pare, i tester non vogliono ripetere il test perché il test è un processo doloroso / costoso.

L'automazione dei test sia da parte degli sviluppatori che dei tester è un enorme vantaggio per i team che cercano di lavorare in modo agile. Più i test sono più economici, più facili e riproducibili, più è possibile eseguirli e minore è la resistenza al cambiamento.

Hai fatto un refactor rapido basato su alcuni feedback degli sviluppatori? Premi il grande pulsante rosso che esegue la tua suite di regressione / fumo ed esegui un rapido manuale una volta per verificare la presenza di eventuali problemi visivi che potrebbero essere spuntati. Facile!

Una volta che ti trovi in ​​un posto come quello, riprovare non sarà un lavoro ingrato - sarà una seconda natura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.