Negli ultimi un anno circa, ho guidato il mio team verso la modalità di sviluppo a rilascio anticipato-spesso-spesso (AKA: Rapid Application Development, non Agile). Per ulteriori informazioni sul modo in cui chiudiamo la build, vedere la mia risposta qui: Un modo semplice per migliorare la qualità di rilascio nell'ambiente RAD
Quando abbiamo adottato RAD, le persone erano abbastanza indipendenti e stavano facendo prima il test delle unità; i test integrati si sono verificati molto più tardi nel processo. Era un processo naturale per loro senza molta applicazione formale. Ora la situazione è abbastanza diversa:
-
L'intera piattaforma è ben integrata con build / release consolidati che lavorano sul lato client senza punti caldi.
-
I nuovi requisiti di funzionalità continuano a venire e noi li costruiamo in modo incrementale man mano che procediamo.
-
Le dinamiche complessive del sistema sono molto importanti perché, mentre i gruppi di sviluppo indipendenti potrebbero seguire correttamente i processi, sono sorti gravi fallimenti a causa di circostanze complicate e non ovvie.
-
Molte parti del sistema coinvolgono nuovi algoritmi e input di ricerca, quindi le sfide (e quindi il meccanismo per i test) non sono sempre previste correttamente, come test delle funzionalità in software ben definiti.
Recentemente, stavo cercando di ottenere un quadro generale migliore per vedere se abbiamo bisogno di miglioramenti del processo. Quando mi sono seduto con la mia squadra, molti di loro hanno esitato: "Non facciamo più test unitari!" mentre altri pensavano che non dovremmo iniziare ora perché non sarà mai efficace.
I test unitari sono utili in un sistema relativamente maturo? Dovremmo almeno pesare l'ambito del test in base alla maturità delle unità? I test unitari rallenteranno il ritmo dello sviluppo? È necessario valutare i test delle unità in modo diverso?
Quali sono le migliori pratiche di testing per una piattaforma matura in un ambiente release-early-release-spesso?