Progettare e implementare la tracciabilità di origine, bug e qualità
Nel contesto di DevOps, con tracciabilità si intende la possibilità di tenere traccia delle modifiche e delle azioni durante l'intero ciclo di vita dello sviluppo di software. Questo concetto si applica a diversi aspetti del ciclo di vita, incluse le modifiche al codice sorgente, la risoluzione dei bug e la gestione del controllo qualità. La sua implementazione è essenziale per garantire affidabilità, manutenibilità e soddisfazione dei clienti per il prodotto.
La tracciabilità del codice sorgente consente agli sviluppatori di tenere traccia delle modifiche del codice negli scenari di collaborazione. La tracciabilità dei bug facilita l'identificazione, la definizione delle priorità e la risoluzione dei problemi relativi al codice sorgente. La tracciabilità della qualità garantisce che il software soddisfi gli standard di qualità e le aspettative degli utenti collegando attività di test, metriche e feedback alle attività di sviluppo.
Progettazione
A livello generale, la tracciabilità è indipendente dagli strumenti, ma l'approccio scelto dipende dall'aspetto del ciclo di vita dello sviluppo di software a cui è destinata. Analogamente, gli obiettivi e le considerazioni sulla progettazione differiscono per tracciabilità del codice sorgente, dei bug e della qualità.
In particolare, la tracciabilità del codice sorgente comporta il monitoraggio della cronologia delle modifiche del codice, tra cui chi ha apportato le modifiche, quando sono state apportate e lo scopo delle modifiche. Facilita le revisioni del codice, il debug e la comprensione dell'evoluzione della codebase nel tempo. Dal punto di vista della progettazione, questa funzionalità è strettamente correlata alla creazione di rami e alle strategie di merge di Git per l'organizzazione del lavoro di sviluppo. Gli sviluppatori creano rami di funzionalità per il nuovo lavoro, eseguono il commit delle modifiche nei relativi rami e inviano richieste pull per la revisione. A questo punto, i peer eseguono revisioni del codice e, una volta completate correttamente, approvano le modifiche di cui eseguire il merge nel ramo principale.
La tracciabilità dei bug implica la verifica di bug o difetti segnalati durante i test o la produzione per risalire alla causa radice nella codebase. In genere si basa anche sull'acquisizione di informazioni quali i dettagli del report sui bug, i passaggi per riprodurre il problema, i componenti interessati e le modifiche al codice correlate. Gli obiettivi includono la definizione delle priorità e la risoluzione efficiente dei bug per risolvere le carenze del software.
La tracciabilità della qualità comprende il monitoraggio di attività e artefatti correlati alla qualità durante il processo di sviluppo del software. Ciò implica il collegamento di metriche di qualità, test case, risultati dei test e altre attività di controllo della qualità ai requisiti, alle storie utente e alle modifiche al codice. La tracciabilità della qualità aiuta a valutare l'impatto delle modifiche del software sulla sua qualità e a identificare le aree per il miglioramento.
Implementazione della tracciabilità
I dettagli di implementazione della tracciabilità variano in qualche misura a seconda della piattaforma DevOps.
Tracciabilità del codice sorgente
Dal momento che sia GitHub che Azure DevOps supportano Git come meccanismo di controllo del codice sorgente, alcune tecniche di tracciabilità di origine si applicano a entrambi. Di conseguenza, l'implementazione della tracciabilità del codice sorgente in entrambi i casi implica l'adozione di procedure consigliate, ad esempio la scrittura di messaggi di commit descrittivi, l'uso di una strategia di diramazione ben definita e la richiesta di richieste pull per le revisioni del codice.
Tuttavia, esistono anche alcune differenze. L'implementazione della tracciabilità del codice sorgente nei repository GitHub comporta in genere l'uso di funzionalità come le regole di protezione dei rami per applicare i processi di revisione del codice e assicurarsi che le modifiche vengano riviste prima del merge. L'integrazione di GitHub con Issues consente di collegare le modifiche del codice ai problemi corrispondenti, fornendo la tracciabilità tra le modifiche del codice e i requisiti del progetto. Azure DevOps offre criteri per i rami e le richieste pull per imporre controlli di qualità del codice e collegare le modifiche agli elementi di lavoro, consentendo la tracciabilità tra modifiche al codice e storie utente o attività. Azure DevOps offre inoltre un'integrazione più completa con il sistema di monitoraggio degli elementi di lavoro, consentendo funzionalità di tracciabilità e creazione di report più approfondite rispetto al monitoraggio dei problemi di GitHub.
Tracciabilità dei bug
In Azure DevOps la tracciabilità dei bug è facilitata tramite Azure Boards, in cui i bug vengono monitorati come elementi di lavoro e possono essere collegati a modifiche del codice, commit e richieste pull. Azure Boards consente di creare flussi di lavoro personalizzati per la gestione dei bug, definendo stati come Nuovo, Attivo, Risolto e Chiudo, offrendo visibilità sul ciclo di vita del bug. Azure DevOps offre inoltre un'integrazione avanzata tra bug e altri elementi di lavoro, consentendo la tracciabilità tra bug e storie utente, attività ed epiche.
In GitHub la tracciabilità dei bug si basa sull'integrazione tra problemi e modifiche al codice, in cui i bug segnalati come problemi possono essere collegati a commit e richieste pull. GitHub Actions offre la possibilità di implementare flussi di lavoro personalizzabili, inclusi quelli correlati alla tracciabilità dei bug. Con GitHub Actions è possibile definire flussi di lavoro che automatizzano i processi attivati da eventi nel repository GitHub, ad esempio la creazione o la modifica dei problemi. In questo modo è possibile creare flussi di lavoro personalizzati per la gestione dei bug, tra cui la definizione di stati, l'assegnazione di attività e l'automazione delle azioni in base a condizioni specifiche. In effetti, mentre GitHub Actions offre flessibilità nell'automazione del flusso di lavoro, in genere richiede più impegno e personalizzazione rispetto alle funzionalità predefinite di Azure Boards in Azure DevOps.
Tracciabilità della qualità
In Azure DevOps la tracciabilità della qualità può essere gestita usando i piani di test, che consentono ai team di organizzare, eseguire e tenere traccia dei test case. I piani di test forniscono metriche di qualità complete, inclusi le percentuali di superamento dei test case, i risultati dell'esecuzione dei test e i report di copertura dei test. Azure DevOps offre inoltre l'integrazione con gli strumenti di code coverage per misurare la copertura dei test e identificare le aree della codebase che richiedono test aggiuntivi.
GitHub offre funzionalità simili tramite GitHub Actions, consentendo ai team di automatizzare vari tipi di test, ad esempio unit test, test di integrazione e test end-to-end. In questo caso, GitHub Actions offre flessibilità nella configurazione dei flussi di lavoro di test e nell'integrazione con strumenti di test di terze parti, ma tende a richiedere interventi di configurazione aggiuntivi per ottenere lo stesso livello di metriche di qualità complete e report di copertura dei test di Azure DevOps.