Eccellenza operativa - DevOps Patterns
Ulteriori informazioni sull’eccellenza operativa ben progettata → DevOps Practices
Schemi
| Dove cercare | Che bell’aspetto |
|---|---|
| Impostazione controllo versione | ✅ Tutti i metadati memorizzati in formato sorgente Git utilizzando la struttura del progetto Salesforce DX con .forceignore configurato per escludere i file non pertinenti; tutti i membri del team si clonano dall’archivio centrale |
| Utilizzo organizzazione vuota | ✅ Gli sviluppatori creano organizzazioni vuote effimere dall’origine per il lavoro sulle funzioni, confermano le modifiche al controllo delle versioni ed eliminano le organizzazioni vuote al completamento delle funzioni |
| Messaggi di conferma | ✅ Ogni conferma include un messaggio chiaro e conciso che spiega cosa è cambiato e perché; i messaggi seguono la convenzione del team (ad esempio, “feat:”, “fix:”, “docs:“) |
| Tracciamento delle modifiche | ✅ Ogni modifica dei metadati acquisita nel controllo di versione con identità autore, indicazione oraria e differenza che mostra le modifiche esatte |
| Processo di revisione codice | ✅ Tutte le modifiche legate alla produzione passano attraverso le richieste di estrazione che richiedono l’approvazione del riesame prima dell’unione; la configurazione dichiarativa riceve lo stesso esame del codice |
| Procedure di ritiro | ✅ Versioni precedenti recuperabili dalla cronologia Git tramite Checkout o operazioni di ripristino; il team ha documentato procedure di ritiro testate in non produzione |
| Itinerario di controllo | ✅ Cronologia completa delle modifiche conservata nel controllo delle versioni a supporto dei requisiti di conformità e delle indagini di sicurezza |
| Strategia di ramificazione | ✅ Modello di ramificazione Git coerente (GitFlow, GitHub Flow o basato su trunk) appropriato alle dimensioni del team e alla frequenza di rilascio; documentato e applicato |
| Migrazione da organizzazione | ✅ Transizione allo sviluppo basato sulla fonte completata all’inizio del ciclo di vita della soluzione prima che le abitudini si solidifichino intorno allo sviluppo basato sull’organizzazione |
| Configurazione .gitignore | ✅ Il repository esclude i file generati, le impostazioni e le credenziali specifiche dell’utente; include solo i file di origine che i team intendono modificare |
Anti-schemi
| Dove cercare | Che brutto aspetto |
|---|---|
| Organizzazione come fonte di verità | ⚠️ Lo sviluppo avviene direttamente nei Sandbox condivisi con i metadati esportati nel controllo di versione come ripensamento; le organizzazioni e il controllo di versione divergono creando errori di distribuzione |
| .gitignore inadeguato | ⚠️ Il repository include i file generati, le impostazioni specifiche dell’utente, i binari di grandi dimensioni o le credenziali; il repository si gonfia e rischia l’esposizione alla sicurezza |
| Messaggi di conferma vaghi | ⚠️ Commit come “correggi bug” o “aggiornamenti” non forniscono contesto per ciò che è cambiato o perché; ostacola le indagini di controllo e la manutenzione futura |
| Impegni molto rari | ⚠️ Gli sviluppatori confermano serie di modifiche di grandi dimensioni ogni settimana anziché piccole conferme incrementali più volte al giorno; difficile da rivedere, difficile isolare gli errori |
| Impegno diretto al principale | ⚠️ Gli sviluppatori inviano le modifiche direttamente al branch principale/di produzione ignorando la revisione e la convalida; elimina i cancelli di qualità |
| Nessuna strategia di ramificazione | ⚠️ Il team manca di un modello di ramificazione coerente; gli sviluppatori creano nomi di branch e schemi di unione arbitrari; crea confusione e conflitti di unione |
| File binari in Git | ⚠️ File binari di grandi dimensioni (PDF, video, archivi) confermati per Git che gonfiano le dimensioni del repository e rallentano le operazioni di clonazione |
| Impegno delle credenziali | ⚠️ Chiavi API, password, credenziali di integrazione o token di protezione per il controllo delle versioni; crea vulnerabilità di sicurezza anche dopo la rimozione da conferme successive |
| Ignorare i conflitti di unione | ⚠️ Conflitti di unione risolti accettando un lato senza analisi; perde le modifiche o introduce bug |
| Verifica senza impegno | ⚠️ Il team non verifica mai che i metadati confermati rappresentino effettivamente le modifiche previste; gli errori di formato dei metadati o le modifiche non intenzionali vengono ignorati |
Schemi
| Dove cercare | Che bell’aspetto |
|---|---|
| Developer Sandbox | ✅ I singoli sviluppatori utilizzano Developer Sandbox per il lavoro delle funzioni, test di unità e iterazione rapida; ogni sviluppatore ha un ambiente dedicato |
| Developer Pro Sandbox | ✅ I team che sviluppano pacchetti gestiti o richiedono limiti di memoria più elevati utilizzano i Sandbox Developer Pro per il lavoro collaborativo |
| Sandbox Copia parziale | ✅ I test di integrazione utilizzano Sandbox Copia parziale con esempi di dati rappresentativi (10.000 record per oggetto) configurati tramite modelli di dati |
| Sandbox copia completa | ✅ Test delle prestazioni, gestione temporanea simile alla produzione e convalida della migrazione dei dati utilizzano Sandbox Copia completa contenenti dati di produzione e configurazione completi |
| Controlli della riservatezza dei dati | ✅ Accesso Sandbox Copia completa limitato ai ruoli che richiedono dati di produzione; mascheramento dei dati Shield Platform Encryption applicato per uso non di produzione quando appropriato |
| Configurazione endpoint integrazione | ✅ Ogni livello Sandbox si collega agli endpoint di test corrispondenti per le integrazioni esterne; le integrazioni di produzione non si connettono mai dai Sandbox |
| Configurazione specifica dell’ambiente | ✅ L’architettura di integrazione utilizza tipi di metadati personalizzati o impostazioni personalizzate per esternalizzare URL endpoint, credenziali e flag di funzioni per ambiente |
| Automazione post-aggiornamento | ✅ Gli aggiornamenti Sandbox attivano script Salesforce CLI automatici che ripristinano le impostazioni specifiche del Sandbox, incluse le credenziali di integrazione, il seeding dei dati di test, gli stati flag delle funzioni e la consegna delle email |
| Aggiorna pianificazione | ✅ Pianificazione degli aggiornamenti Sandbox documentata e comunicata; aggiornamenti pianificati durante i periodi di bassa attività per ridurre al minimo le interruzioni del team |
| Modelli di dati | ✅ I Sandbox Copia parziale utilizzano modelli di dati ben progettati per selezionare i dati rappresentativi tra gli oggetti mantenendo l’integrità referenziale |
| Convenzioni di denominazione | ✅ I Sandbox seguono una chiara convenzione di denominazione che indica scopo, titolare e ciclo di aggiornamento (ad esempio, “dev-integration-q2”, “uat-release-2-4”) |
Anti-schemi
| Dove cercare | Che brutto aspetto |
|---|---|
| Sandbox di sviluppo condiviso | ⚠️ Tutti gli sviluppatori lavorano in un unico Sandbox condiviso sovrascrivendo le modifiche reciproche; crea confusione sullo stato distribuibile |
| Sandbox obsoleti | ⚠️ Sandbox non aggiornati per mesi che divergono in modo significativo dalla configurazione di produzione; i test in un ambiente non rappresentativo portano a errori di distribuzione |
| Nessuna governance dei dati in copia completa | ⚠️ Sandbox Copia completa contenenti informazioni personali di produzione, dati finanziari, dati HIPAA accessibili a tutto il team di sviluppo senza controlli di accesso o mascheramento dei dati |
| Integrazioni di produzione da Sandbox | ⚠️ I Sandbox si connettono direttamente agli endpoint di integrazione di produzione creando il rischio che le transazioni di test influiscano sui dati di produzione o sui sistemi esterni |
| Configurazione manuale post-aggiornamento | ⚠️ Gli aggiornamenti dei Sandbox richiedono ore di ripristino manuale delle impostazioni; il sovraccarico scoraggia l’aggiornamento dei Sandbox con la frequenza necessaria |
| Nessuna documentazione Sandbox | ⚠️ Il team non dispone di documentazione sugli scopi del Sandbox, le pianificazioni degli aggiornamenti, il contenuto dei dati o le procedure di accesso; gli sviluppatori indovinano quale ambiente utilizzare per quale scopo |
| Tipo di ambiente singolo | ⚠️ Il team utilizza un solo tipo di Sandbox (tipicamente Developer o Copia completa) per tutti gli scopi; manca dei vantaggi di una strategia Sandbox appropriata per attività |
| Accumulo Sandbox | ⚠️ Sandbox allocati a singoli individui o progetti e mai rilasciati quando non sono più necessari; scarsità artificiale nonostante le licenze disponibili |
| Dati di test inadeguati | ⚠️ I dati di test nei Sandbox non rappresentano le caratteristiche dei dati di produzione (volumi, relazioni, casi limite); i test in un ambiente non realistico non consentono problemi di produzione |
Schemi
| Dove cercare | Che bell’aspetto |
|---|---|
| Fase impegno di origine | ✅ Gli sviluppatori confermano le modifiche ai branch delle funzioni in Git con messaggi di conferma chiari che spiegano il contesto e la logica |
| Fase di analisi statica | ✅ Salesforce Code Analyzer analizza Apex per individuare vulnerabilità di sicurezza (OWASP Top 10), modelli anti-prestazioni (SOQL in loop, DML in loop), problemi di qualità del codice (complessità, duplicazione) e rischi del governor limit; viene eseguito in pochi secondi fornendo un feedback immediato |
| Fase di test di unità | ✅ I test Apex eseguono la convalida della logica aziendale e limitano la conformità del governor nell’organizzazione vuota effimera o in un Sandbox di integrazione dedicato; i test correttamente isolati vengono completati in meno di 5 minuti |
| Fase di distribuzione convalida | ✅ I metadati vengono distribuiti nel Sandbox di integrazione utilizzando Salesforce CLI con flag –checkonly per la distribuzione solo convalida che esegue test senza confermare modifiche |
| Fase di test di integrazione | ✅ I test automatici convalidano i flussi di lavoro multi-componente, i contratti di integrazione esterni, i flussi evento piattaforma e le catene di elaborazione asincrona rispetto all’ambiente di integrazione condiviso con la gestione dei dati di test |
| Fase di scansione della sicurezza | ✅ Strumenti di sicurezza aggiuntivi ricercano credenziali codificate, dipendenze vulnerabili, violazioni CRUD/FLS e violazioni delle policy di conformità; i risultati critici interrompono le build |
| Fase di distribuzione UAT | ✅ Le modifiche che passano tutti i cancelli automatici vengono distribuite all’ambiente di test di accettazione utente per la convalida aziendale; la distribuzione può essere automatizzata o richiedere l’approvazione manuale in base al rischio di modifica |
| Fase di distribuzione della produzione | ✅ Dopo l’approvazione UAT, le modifiche vengono distribuite alla produzione con l’esecuzione automatica con un solo clic, la registrazione completa e la funzionalità di ritiro immediato |
| Tempo di esecuzione della pipeline | ✅ End-to-end pipeline completa in meno di 15 minuti per le modifiche tipiche che consentono un feedback rapido; più a lungo per le grandi distribuzioni o suite di test estese |
| Creazione di artefatti | ✅ Pipeline conserva i pacchetti di distribuzione, i risultati dei test, i rapporti di analisi della sicurezza e i registri di esecuzione per la conformità e la risoluzione dei problemi |
| Tooling opportunità in corso di realizzazione | ✅ I team utilizzano Salesforce DevOps Center per CI/CD nativi della piattaforma o si integrano con piattaforme esterne (Azioni GitHub, CI GitLab, Azure DevOps, CircleCI, Jenkins, Copado, Gearset, AutoRABIT) |
| Notifiche di errore | ✅ Gli errori delle opportunità in corso di realizzazione attivano le notifiche per confermare l’autore e i canali pertinenti con contesto diagnostico che consente una risoluzione rapida |
| Protezione branch | ✅ Filiali principali/di produzione protetti che richiedono il superamento dei controlli CI e delle revisioni approvate prima dell’unione; Impediti gli impegni diretti |
| Promozione dell’ambiente | ✅ flusso di modifiche attraverso il percorso di promozione definito (sviluppo → integrazione → UAT → produzione) con convalida in ogni fase |
Anti-schemi
| Dove cercare | Che brutto aspetto |
|---|---|
| Distribuzioni manuali | ⚠️ Modifiche distribuite manualmente tramite serie di modifiche o comandi Salesforce CLI con passaggi incoerenti; errori umani, passaggi mancati, mancanza di itinerario di controllo |
| Nessuna analisi statica | ⚠️ Le opportunità in corso di realizzazione saltano Salesforce Code Analyzer o strumenti simili; vulnerabilità della sicurezza, anti-schemi delle prestazioni, problemi di qualità del codice raggiungono la produzione |
| Test insufficienti | ⚠️ Pipeline convalida solo una copertura minima del 75% senza eseguire test di integrazione o convalidare i flussi degli utenti chiave; le regressioni scivolano attraverso |
| Nessuna scansione di sicurezza | ⚠️ Le opportunità in corso di realizzazione non rilevano mai credenziali codificate, dipendenze vulnerabili o violazioni di CRUD/FLS; problemi di sicurezza rilevati nei riesami di produzione o di sicurezza |
| Esecuzione lenta delle opportunità in corso di realizzazione | ⚠️ La pipeline end-to-end richiede più di 45-60 minuti scoraggiando le conferme frequenti e rallentando i loop di feedback; gli sviluppatori si impegnano meno frequentemente accumulando modifiche più grandi |
| Errori della pipeline ignorati | ⚠️ I team ignorano o ignorano gli errori delle opportunità in corso di realizzazione per rispettare le scadenze; i cancelli di qualità diventano teatro anziché controlli effettivi |
| Nessuna parità dell’ambiente di test | ⚠️ CI/CD convalida in un ambiente con configurazione, limiti o caratteristiche dei dati diverse da quelle di produzione; il superamento della convalida non garantisce il successo della produzione |
| Capacità di ritiro mancante | ⚠️ Pipeline automatizza la distribuzione ma non fornisce alcun ritiro automatico; il ripristino da una distribuzione non corretta richiede procedure di emergenza manuali |
| Nessun registro di distribuzione | ⚠️ Distribuzioni eseguite senza registrazione completa; la risoluzione degli errori o il controllo delle distribuzioni diventa difficile |
| Test “tutto o niente” | ⚠️ Pipeline esegue tutti i test per ogni modifica indipendentemente da ciò che è cambiato; la suite di test di 30 minuti viene eseguita anche per gli aggiornamenti della documentazione |
Schemi
| Dove cercare | Che bell’aspetto |
|---|---|
| Flag funzioni | ✅ Le modifiche ad alto rischio vengono implementate con le funzioni disabilitate dietro il tipo di metadati personalizzato o la configurazione dell’impostazione personalizzata; consente il test in produzione senza esposizione degli utenti, l’implementazione graduale ai segmenti, il test A/B e il ritiro immediato tramite modifica della configurazione |
| Ambito flag funzione | ✅ Flag delle funzioni riservati a modifiche ad alto rischio che influiscono su processi aziendali critici, operazioni sensibili alle prestazioni o nuovi schemi di integrazione; non tutte le funzioni necessitano di flag |
| Distribuzioni Canarie | ✅ Le modifiche critiche per l’azienda vengono rilasciate per prime a un piccolo sottoinsieme di utenti (5-10% tramite insiemi di autorizzazioni o filtro degli attributi utente); la coorte canarino monitorata intensamente 24-48 ore misurando le percentuali di successo, le prestazioni e le percentuali di errore prima di espandere l’implementazione |
| Finestre di distribuzione | ✅ Distribuzioni pianificate durante periodi di basso utilizzo informati dai registri di utilizzo dell’API di Monitoraggio evento che mostrano gli schemi di traffico effettivi; evita picchi di utilizzo, chiusura di fine mese, chiusura di fine trimestre, eventi aziendali importanti |
| Comunicazione di distribuzione | ✅ Gli stakeholder ricevono una notifica preventiva delle finestre di distribuzione, inclusa la durata prevista, le funzionalità interessate e la tempistica delle decisioni di ritiro |
| Procedure di ritiro | ✅ Procedure di ritiro documentate e testate per ogni tipo di distribuzione; il team può eseguire il ritiro in meno di 30 minuti quando necessario |
| Test di rollback | ✅ Procedure di ritiro convalidate in un ambiente non di produzione prima di distribuzioni significative che garantiscono la funzionalità di ripristino |
| Convalida della distribuzione | ✅ I test fumo post-distribuzione convalidano i flussi utente critici, gli endpoint di integrazione e le funzionalità chiave immediatamente dopo il rilascio |
| Coordinamento modifiche | ✅ Strategia di distribuzione coordinata quando le modifiche riguardano più sistemi o richiedono rilasci sincronizzati tra Salesforce e piattaforme esterne |
| Monitoraggio durante la distribuzione | ✅ Monitoraggio ottimizzato attivo durante la finestra di distribuzione e il periodo di osservazione post-distribuzione (24-48 ore) per rilevare picchi di tasso di errore, peggioramento delle prestazioni o errori del flusso utente |
| Schema blu-verde per le integrazioni | ✅ I servizi esterni fronting Salesforce utilizzano distribuzioni blu-verdi mantenendo due ambienti simili a quelli di produzione, distribuendo prima inattivi, passando al traffico dopo la convalida |
Anti-schemi
| Dove cercare | Che brutto aspetto |
|---|---|
| Distribuzioni Big Bang | ⚠️ Rilasci di grandi dimensioni contenenti molte funzioni, refactoring e modifiche distribuiti simultaneamente senza implementazione graduale; l’errore influisce immediatamente su tutti gli utenti |
| Distribuzioni ore di punta | ⚠️ Rilasci pianificati durante l’orario di ufficio di punta (mezzo giorno, fine mese, fine trimestre) quando l’utilizzo è massimo e l’impatto degli utenti dei problemi massimizzato |
| Nessun piano di ritiro | ⚠️ Le distribuzioni procedono senza procedure di ritiro documentate e testate; quando emergono problemi, il team si sforza di capire il ripristino |
| Attiva/disattiva funzione come ripensamento | ⚠️ Flag delle funzioni aggiunti in modo reattivo quando si verificano problemi anziché progettati in modo proattivo per le modifiche ad alto rischio; limita le opzioni di ritiro all’inversione completa della distribuzione |
| Nessuna convalida della distribuzione | ⚠️ Modifiche distribuite alla produzione senza test fumogeni post-distribuzione; il team presume che la distribuzione sia riuscita e prosegue; problemi rilevati ore dopo dagli utenti |
| Procedure di ritiro non testate | ⚠️ Procedure di ritiro documentate ma mai testate in non produzione; durante l’incidente effettivo, la procedura non riesce o si rivela inadeguata |
| Modifiche simultanee multi-sistema | ⚠️ Modifiche coordinate tra Salesforce e i sistemi esterni distribuite senza test di sincronizzazione o compatibilità; crea errori di integrazione |
| Nessun miglioramento del monitoraggio | ⚠️ Le distribuzioni procedono senza un monitoraggio ottimizzato durante la finestra di distribuzione; i problemi vengono rilevati attraverso i reclami degli utenti anziché gli avvisi proattivi |
| Distribuzioni del fine settimana | ⚠️ Rilasci principali distribuiti venerdì sera o nei fine settimana quando la copertura su chiamata è ridotta e la disponibilità del supporto del fornitore è limitata |
Schemi
| Dove cercare | Che bell’aspetto |
|---|---|
| Copertura test di unità | ✅ Copertura test significativa che convalida le regole aziendali, i casi limite, i percorsi di errore e l’approccio al limite del governor; supera in modo significativo il requisito minimo del 75% |
| Qualità test di unità | ✅ I test convalidano la logica aziendale, non la funzionalità della piattaforma; i test di unità ben scritti sono veloci (millisecondi), isolati (nessuno stato condiviso) e focalizzati (ogni test convalida un comportamento) |
| Test della strategia dati | ✅ I test utilizzano i metodi @TestSetup per i dati di test comuni; evitare query SOQL nei test ove possibile; utilizzare Test.loadData() per caricare risorse statiche |
| Dipendenze esterne fittizie | ✅ Test di unità simulano chiamate esterne utilizzando stub di test e iniezione di dipendenze che consentono un’esecuzione rapida senza richieste HTTP effettive |
| Test di integrazione | ✅ Convalidare le interazioni tra trigger, flussi, eventi piattaforma, processi batch e chiamate esterne in esecuzione nei Sandbox con dati di test rappresentativi |
| Affidabilità del test di integrazione | ✅ I test di integrazione sono ripetibili e deterministici; errori sporadici risolti tramite meccanismi di sincronizzazione come ID replay evento piattaforma e polling processo batch |
| Test end-to-end | ✅ Test automatici del browser (Selenium, Playwright, Provar) convalidano i journey utente completi per i flussi business-critical esercitando il sistema attraverso l’interfaccia utente esattamente come gli utenti interagiscono |
| Focus test E2E | ✅ I test E2E si concentrano sui percorsi utente di valore più alto a causa di un’esecuzione più lenta (minuti per test) e un maggiore carico di manutenzione dovuto alle modifiche dell’interfaccia utente |
| Test di carico | ✅ Prestazioni convalidate in carichi simultanei realistici degli utenti e volumi di dati utilizzando i servizi di test del carico Salesforce o strumenti di terze parti; rivela problemi di limiti governor, contese di blocco, deterioramento delle prestazioni |
| Frequenza test di carico | ✅ Test di carico eseguiti prima dei rilasci principali e periodicamente (trimestralmente) per convalidare le prestazioni a volumi di produzione correnti 3x-5x |
| Piramide di prova | ✅ distribuzione dei test bilanciata: molti test di unità (centinaia, minuti), meno test di integrazione (decine, minuti), pochi test E2E (meno di 20, minuti); feedback rapido alla base, convalida completa in alto |
| Isolamento test | ✅ I test non dipendono l’uno dall’altro; possono essere eseguiti in qualsiasi ordine; ogni test lascia il sistema in stato pulito o utilizza @TestSetup per un punto di partenza coerente |
| Casi di test negativi | ✅ I test convalidano la gestione degli errori, l’applicazione delle regole di convalida, l’applicazione delle autorizzazioni e il deterioramento in condizioni avverse |
| Test limite governor | ✅ I test convalidano specificamente il comportamento in avvicinamento ai limiti del governor, inclusi i limiti delle query SOQL, i limiti DML, il tempo CPU, le dimensioni dell’heap |
| Esecuzione di test continui | ✅ I test vengono eseguiti automaticamente a ogni conferma tramite pipeline CI/CD; i test non riusciti impediscono la distribuzione in ambienti superiori |
Anti-schemi
| Dove cercare | Che brutto aspetto |
|---|---|
| Test della copertura | ⚠️ Test scritti esclusivamente per raggiungere una copertura minima del 75% senza convalidare regole aziendali o casi limite; test che non affermano nulla o testano percorsi di codice banali |
| Test delle funzionalità della piattaforma | ⚠️ I test confermano che Salesforce salva i record o che le query SOQL funzionano anziché convalidare la logica aziendale; spreca fatica per le garanzie della piattaforma |
| Nessuna strategia fittizia | ⚠️ I test di unità eseguono chiamate effettive ai sistemi esterni; i test sono lenti, fragili per la disponibilità dei sistemi esterni e consumano limiti API |
| Errori sporadici dei test | ⚠️ I test vengono superati o non vengono eseguiti in modo imprevedibile in base ai tempi di esecuzione, allo stato dei dati o all’ordine di esecuzione del test; i team imparano a ignorare gli errori e riproducono i test fino a quando non vengono superati |
| Nessun test di integrazione | ⚠️ Esistono solo test di unità; il team non convalida mai che trigger, flussi, eventi piattaforma e processi batch funzionino correttamente insieme |
| Solo test manuale E2E | ⚠️ Flussi utente critici convalidati manualmente prima di ogni rilascio; nessun test E2E automatico; regressioni rilevate in produzione quando i test manuali mancano gli scenari |
| Nessuna prova di carico | ⚠️ Prestazioni mai convalidate sotto carichi simultanei realistici; problemi di limite del governor, contesa di blocco o deterioramento delle prestazioni rilevati in produzione |
| Test delle dipendenze dei dati | ⚠️ I test dipendono da record specifici esistenti nell’organizzazione o assumono una configurazione utente particolare; si interrompono quando il Sandbox viene aggiornato o la configurazione cambia |
| Nessun caso di test negativo | ⚠️ I test convalidano solo scenari di percorso felice; non testare mai la gestione degli errori, l’imposizione della convalida o i controlli delle autorizzazioni; le modalità di errore non vengono rilevate |
| Test saltati | ⚠️ Test non riusciti commentati da @isTest e ignorati anziché corretti; la suite di test si degrada nel tempo poiché altri test vengono ignorati |
Schemi
| Dove cercare | Che bell’aspetto |
|---|---|
| Esamina copertura | ✅ Tutte le modifiche legate alla produzione passano attraverso la revisione del codice tramite richieste di estrazione che richiedono l’approvazione prima dell’unione; include Apex, Aura, LWC, flussi, regole di convalida, insiemi di autorizzazioni, regole di condivisione |
| Esamina elenco di controllo criteri | ✅ Elenco di controllo esplicito che copre sicurezza (imposizione CRUD/FLS, convalida degli input), prestazioni (bulkification, ottimizzazione SOQL), conformità del governor limit (schemi di elaborazione, prevenzione ricorsione), manutenibilità (denominazione, documentazione, complessità), copertura dei test (test significativi, casi limite), coerenza architettonica (schemi di progettazione, separazione delle preoccupazioni) |
| Revisione dei limiti di dimensione | ✅ Trascinare le richieste mantenute sotto le 400 righe di modifiche significative che consentono una revisione approfondita; grandi funzioni suddivise in modifiche incrementali più piccole che possono essere riviste singolarmente e distribuite in modo indipendente |
| Esamina tempistica | ✅ revisioni completate entro un giorno lavorativo mantenendo lo slancio dello sviluppo e fornendo un feedback rapido; revisioni ritardate creano overhead di passaggio dal contesto |
| Controlli pre-revisione automatici | ✅ L’analisi statica, i test di unità e la scansione della sicurezza vengono eseguiti automaticamente prima della revisione umana richiesta; i controlli automatici rilevano problemi meccanici in modo che i revisori si concentrino sulla progettazione e sulla logica aziendale |
| Responsabilità revisione distribuita | ✅ responsabilità di revisione del codice distribuita tra i team per evitare colli di bottiglia e condividere Knowledge; gli sviluppatori junior rivedono il codice senior e spiegano il proprio codice durante le revisioni |
| Revisione della qualità dei commenti | ✅ I revisori forniscono un feedback specifico e fruibile con logica; distinguono tra modifiche richieste (problemi di blocco) e suggerimenti (miglioramenti piacevoli) |
| Esamina documentazione | ✅ Le descrizioni delle richieste di estrazione spiegano che cosa è cambiato, perché è cambiato, quali test sono stati eseguiti ed eventuali considerazioni speciali sulla distribuzione o procedure di ritiro |
| Revisione configurazione dichiarativa | ✅ Flussi, regole di convalida e modifiche delle autorizzazioni ricevono lo stesso rigore di revisione del codice; la configurazione è architettonica e merita un esame |
| Follow-up sui commenti | ✅ Tutti i commenti di riesame affrontati prima dell’unione; domande con risposta, modifiche implementate o motivazione fornita per il motivo per cui il suggerimento non è stato adottato |
Anti-schemi
| Dove cercare | Che brutto aspetto |
|---|---|
| Nessuna revisione codice | ⚠️ Modifiche confermate direttamente alla filiale di produzione senza revisione paritaria; elimina il meccanismo di rilevamento dei difetti principali |
| Stampaggio di gomma | ⚠️ I revisori approvano le richieste di estrazione in pochi secondi senza esaminare le modifiche; la revisione diventa conformità della casella di controllo anziché controllo della qualità |
| Collo di bottiglia revisore singolo | ⚠️ Un solo sviluppatore senior autorizzato a rivedere il codice; crea collo di bottiglia e singolo punto di errore; Knowledge concentrato anziché distribuito |
| Richieste di estrazione massiva | ⚠️ Richieste di estrazione contenenti migliaia di righe di modifiche che coprono più funzioni; impossibile da esaminare a fondo che porta a un esame superficiale |
| Revisioni ritardate | ⚠️ Le richieste di estrazione non vengono riviste per giorni o settimane; gli sviluppatori perdono contesto e si spostano su altro lavoro; i commenti di revisione arrivano quando lo sviluppatore ha cambiato contesto mentale |
| Nessun criterio di revisione | ⚠️ Il team non dispone di criteri espliciti per ciò che i revisori dovrebbero esaminare; la qualità dei revisori varia enormemente a seconda del revisore; alcuni revisori si concentrano sullo stile, altri sulla logica, nessuno completo |
| Revisione senza test | ⚠️ I revisori approvano le modifiche solo in base all’ispezione del codice senza estrarre branch e testare localmente o convalidare il superamento dei test automatici |
| Controlli automatici ignorati | ⚠️ I revisori approvano le richieste di estrazione nonostante l’analisi statica, le analisi di sicurezza o i test di unità non siano riusciti; vanifica lo scopo dei cancelli di qualità automatici |
| Recensione culturale ostile | ⚠️ Le recensioni diventano critiche personali o esercizio competitivo anziché miglioramento collaborativo della qualità; scoraggia l’apprendimento e la sicurezza psicologica |
| Nessun riesame dichiarativo | ⚠️ Flussi, regole di convalida, insiemi di autorizzazioni e regole di condivisione vengono distribuiti senza revisione mentre Apex Code riceve esame; crea lacune di qualità nella configurazione dichiarativa |