OPS05-BP02 Test e convalida delle modifiche
Ogni modifica apportata deve essere testata per evitare errori in produzione. Questa best practice si concentra sulla verifica delle modifiche dal controllo di versione alla creazione dell'artefatto. Oltre alle modifiche al codice dell'applicazione, i test dovrebbero includere l'infrastruttura, la configurazione, i controlli di sicurezza e le procedure operative. I test assumono molte forme, dai test unitari all'analisi dei componenti software (SCA). Spostando i test più a sinistra nel processo di integrazione e consegna del software ottieni una maggiore certezza della qualità degli artefatti.
L'organizzazione deve sviluppare standard di test per tutti gli artefatti software. I test automatizzati riducono la fatica ed evitano gli errori dei test manuali. I test manuali potrebbero essere necessari in alcuni casi. Gli sviluppatori devono avere accesso ai risultati dei test automatizzati per creare cicli di feedback che migliorino la qualità del software.
Risultato desiderato:
-
Tutte le modifiche software vengono testate prima del rilascio.
-
Gli sviluppatori hanno accesso ai risultati dei test.
-
La tua organizzazione ha uno standard per i test che applica a tutte le modifiche software.
Anti-pattern comuni:
-
Implementi una nuova modifica software senza test. Non funziona in produzione e genera un'interruzione.
-
I nuovi gruppi di sicurezza vengono distribuiti con AWS CloudFormation senza essere testati in un ambiente di pre-produzione. I gruppi di sicurezza rendono la tua app irraggiungibile per i clienti.
-
Un metodo viene modificato, ma non ci sono test di unità. Il software ha esito negativo quando viene distribuito in produzione.
Vantaggi dell'adozione di questa best practice:
-
Il tasso di fallimento delle implementazioni software è ridotto.
-
La qualità del software viene migliorata.
-
Gli sviluppatori hanno una maggiore consapevolezza della fattibilità del loro codice.
-
Le politiche di sicurezza possono essere implementate con sicurezza per supportare la conformità dell'organizzazione.
-
Le modifiche all'infrastruttura, come gli aggiornamenti automatici delle politiche di scaling, vengono testate in anticipo per soddisfare le esigenze del traffico.
Livello di rischio associato se questa best practice non fosse adottata: Elevato
Guida all'implementazione
I test vengono eseguiti su tutte le modifiche, dal codice dell'applicazione all'infrastruttura, come parte della pratica di integrazione continua. I risultati dei test vengono pubblicati in modo che gli sviluppatori abbiano un feedback rapido. La tua organizzazione ha uno standard per i test che applica a tutte le modifiche software.
Esempio del cliente
Nell'ambito della pipeline di integrazione continua, AnyCompany Retail esegue diversi tipi di test su tutti gli artefatti software. Praticano lo sviluppo guidato dai test, per cui tutto il software è dotato di test unitari. Una volta creato l'artefatto, eseguono test end-to-end. Al termine di questa prima serie di test, viene eseguita una scansione statica della sicurezza dell'applicazione, alla ricerca di vulnerabilità note. Gli sviluppatori ricevono messaggi al superamento di ciascun gate di test. Una volta completati tutti i test, l'artefatto software viene archiviato in un repository di artefatti.
Passaggi dell'implementazione
-
Collaborare con le parti interessate dell'organizzazione per sviluppare uno standard di test per gli artefatti software. Quali test standard devono superare tutti gli artefatti? Ci sono requisiti di conformità o di governance che devono essere inclusi nella copertura dei test? Devi condurre test di qualità del codice? Quando i test sono terminati, chi deve esserne a conoscenza?
-
L'architettura di riferimento della pipeline di distribuzione AWS
contiene un elenco autorevole dei tipi di test che possono essere condotti su artefatti software come parte di una pipeline di integrazione.
-
-
Fornisci la tua applicazione dei test necessari in base allo standard di test del software. Ogni set di test deve essere completato in meno di dieci minuti. I test devono essere eseguiti come parte della pipeline di integrazione.
-
Amazon CodeGuru Reviewer può testare il tuo codice applicativo per i difetti.
-
Puoi usare AWS CodeBuild per condurre i test su artefatti software.
-
AWS CodePipeline può organizzare i tuoi test software in una pipeline.
-
Risorse
Best practice correlate:
-
OPS05-BP01 Utilizzo del controllo delle versioni - Tutti gli artefatti software devono essere supportati da un repository a controllo di versione.
-
OPS05-BP06 Condivisione degli standard di progettazione - Gli standard di test del software dell'organizzazione informano gli standard di progettazione.
-
OPS05-BP10 Automazione completa dell'integrazione e della distribuzione - I test del software dovrebbero essere eseguiti automaticamente come parte della pipeline di integrazione e distribuzione più ampia.
Documenti correlati:
Video correlati:
Risorse correlate:
-
AWS Architettura di riferimento per l'implementazione di pipeline - Applicazione
-
Policy come codice - Workshop – Sviluppo incentrato sui test
-
Esegui test di unità per un'applicazione Node.js di GitHub usando AWS CodeBuild
-
Usa Serverspec per lo sviluppo incentrato sul test del codice dell'infrastruttura
Servizi correlati: