Suggerimenti e best practice per testare le integrazioni di Salesforce

integrazione salesforce

I test di Salesforce ti aiuteranno a convalidare il tuo Integrazioni di Salesforce e funzionalità con altre applicazioni aziendali. Un buon test copre tutti i moduli di Salesforce dagli account ai lead, dalle opportunità ai report e dalle campagne ai contatti. Come nel caso di tutti i test, esiste un modo buono (efficace ed efficiente) per eseguire un test di Salesforce e un modo sbagliato. Allora, qual è la buona pratica per testare Salesforce?

  • Usa gli strumenti di test giusti - I test di Salesforce vengono eseguiti nel browser o in un ambiente basato su eclipse. Sia i browser più recenti che eclipse dispongono di ottimi strumenti di debug e puoi combinarli con classi di test per risultati molto utili. Tuttavia, se hai bisogno di più, dovrebbe essere usato The Apex Interactive Debugger (o semplicemente Apex) di Force.com. Tieni presente che puoi anche utilizzare Salesforce Lightning Inspector, un'estensione di Chrome, per testare specificamente Salesforce Lightning. Apex è un file Force.com linguaggio di programmazione proprietario della piattaforma che presenta grandi somiglianze con Java. È un linguaggio di programmazione orientato agli oggetti, senza distinzione tra maiuscole e minuscole, che segue la sintassi delle parentesi graffe e della notazione del punto. È possibile utilizzare Apex per eseguire funzioni programmate durante la maggior parte dei processi Force.com, inclusi collegamenti e pulsanti personalizzati, aggiornamenti, eliminazioni e gestori di eventi di inserimento record tramite i controller personalizzati della pagina Visualforce o la pianificazione.
  • Utilizzare convenzioni di denominazione corrette - La corretta denominazione dei metodi di test prima di iniziare a scrivere i test è molto importante. Il nome del metodo di prova dovrebbe essere composto da tre parti. Questi sono nameOfMethod (nome del singolo metodo che stai testando come inserire / aggiornare / eliminare / annullare l'eliminazione durante il test di un trigger, informazioni su TestPath che sono flessibili come il contatto nullo se stai testando che il contatto è nullo e valide durante il test un percorso positivo / negativo.
  • Garantire una copertura al 100% - Sebbene la direttiva Salesforce standard sia che lo unit test dovrebbe avere una copertura del 75% del codice (meno classi di test, chiamate a System.debug e metodi di test) e non sarai in grado di distribuire codice Apex o pacchetto di app AppExchange, dovresti nota che questo è solo uno standard e il tuo obiettivo dovrebbe essere una copertura del 100%. Testare tutti i casi positivi / negativi e per i dati presenti e non presenti. Altri suggerimenti importanti quando si tratta di copertura del codice sono:
    • È necessario eseguire i test per aggiornare i numeri di copertura del codice poiché questi numeri non vengono aggiornati quando il codice Apex viene aggiornato fino a quando i test non vengono rieseguiti.
    • Se è stato effettuato un aggiornamento nell'organizzazione dall'ultima esecuzione di test, c'è il rischio che i numeri di copertura del codice non siano corretti. Riesegui i test per la stima corretta.
    • La percentuale di copertura del codice non include la copertura del codice dai test dei pacchetti gestiti, con l'unica eccezione quando questi test provocano l'attivazione dei trigger.
    • La copertura dipende dal numero totale di righe di codice. Se aggiungi o elimini righe di codice, influenzerai la percentuale.
  • Casi di test in classi e controller - Nello sviluppo di Salesforce, la maggior parte degli sviluppatori crea classi e file controller separati per ciascuna funzione. Questo viene fatto per rendere la codifica più organizzata, più facile, riutilizzabile e portatile. Dovresti, tuttavia, notare che sebbene sia più semplice, non è più efficiente. Otterrai la portabilità se il codice di test è nella classe originale e il codice del controller stesso poiché non perderai nessuna classe di test durante la migrazione dalla sandbox alla produzione.
  • Usa System.assert () - All'apice, System.assert() viene utilizzato per verificare le condizioni. Questa è una funzionalità importante poiché consente di determinare se una particolare funzione è stata eseguita dal metodo come previsto. Dovresti usare System.assertEquals () e System.assertNotEquals () tra le funzionalità critiche non solo ti aiuta a determinare se il codice è stato eseguito come dovrebbe, ma anche per assicurarti che nessun dato venga scritto in modo errato se il codice va male.
  • Test completo - I test dovrebbero coprire tutto. È necessario eseguire test funzionali, test di carico, test di sicurezza e test di distribuzione.
  • Test unitari - È necessario disporre di unit test per verificare che i singoli record producano il risultato corretto e previsto. Anche se l'utilizzo di un test gigantesco che copre l'intero codice può sembrare una buona idea, nota che i risultati generati saranno più difficili da eseguire il debug e il fallimento sarà più difficile da capire. Uno unit test dovrebbe coprire un piccolo sottoinsieme della funzionalità testata.
  • Test di casi in blocco - Un buon codice di test (trigger, eccezione o classe) può essere coinvolto fino a diverse centinaia di record (200 per Apex). Dovresti approfittarne e testare non solo i singoli record, ma anche i casi di massa.
  • Test positivi - Verificare se il comportamento previsto si verifica attraverso tutte le permutazioni previste. Il test dovrebbe verificare che l'utente abbia compilato correttamente il modulo e che non abbia superato i limiti.
  • Test negativi - Testare i casi negativi per assicurarsi che i messaggi di errore vengano prodotti correttamente. Esempi di tali casi negativi sono l'impossibilità di specificare importi negativi e l'impossibilità di aggiungere date future. I test negativi sono importanti perché una corretta gestione quando le cose vanno male può fare la differenza.
  • Automatizza i test - Tradizionalmente, i test di Salesforce erano manuali. Dovresti prendere in considerazione il test automatico poiché offre più vantaggi. Questi includono:
    • I test manuali ti rendono suscettibile agli errori poiché i test sono effettuati da esseri umani e non da robot. I robot eccellono nelle attività ripetitive mentre gli esseri umani commettono errori a causa della noia, della ridotta concentrazione e coerenza e della tendenza a tagliare gli angoli.
    • Il test manuale è ripetitivo, stereotipato e faticoso. È meglio che il team di test svolga un lavoro più esplorativo.
  • Esegui ogni ramo della logica del codice - Quando si utilizza la logica condizionale (quando sono stati inclusi operatori ternari), è necessario eseguire ogni ramo della logica del codice.
  • Usa input non validi e validi per chiamate a metodi - Le chiamate ai metodi devono essere effettuate utilizzando input validi e non validi.
  • Test completi - Assicurati che i test vengano completati correttamente: non dovrebbero superare eccezioni a meno che non siano previsti errori. Gestisci tutte le eccezioni catturate: catturarle non è abbastanza buono.
  • Usa ORDER BY parole chiave - Per assicurarti che i tuoi record vengano restituiti nell'ordine previsto, utilizza le parole chiave ORDER BY.
  • Non dare per scontato che gli ID dei record siano disposti in sequenza - Evita l'errore comune di presumere che gli ID dei record siano disposti in ordine sequenziale. Gli ID non sono in ordine crescente, a meno che tu non abbia inserito più record con la stessa richiesta.
  • Chiama Test.startTest () e Test.stopTest () - Quando esegui uno unit test Apex, otterrai una copertura del codice superiore al 75% obbligatoria in Salesforce. È necessario chiamare stopTest prima delle asserzioni per forzare la fine dei codici asincroni che potrebbero essere ancora in esecuzione. Esegui nuove query per i risultati finali poiché altro codice potrebbe modificare i dati. UsingTest.startTest () e Test.stopTest () ti assicura di sandbox il test entro i limiti del suo governatore. In questo modo, il codice di configurazione che utilizzi non interferirà e ti darà falsi negativi o positivi intorno ai limiti del governatore. Test.stopTest () garantisce anche che le chiamate @future verranno completate per il test.
  • Leggibilità - La leggibilità è molto importante negli unit test. I nomi dei test dovrebbero includere l'azione specifica da intraprendere e il risultato atteso. Il metodo dovrebbe essere descrittivo e breve. Il metodo dovrebbe essere tale da poter essere riutilizzato in diversi test.
  • Crea set di dati di test di grandi dimensioni prima di startTest - Poiché i test verranno eseguiti in diversi ambienti sandbox e di produzione, creare set di dati di test di grandi dimensioni prima di chiamare startTest per assicurarsi che il test abbia limiti di esecuzione completi. Per impostazione predefinita, Salesforce Githubforce esegue test isolati dai dati di produzione. Quando sono necessari dati di sistema come un profilo, eseguire una query per ottenere la cosa giusta per quell'ambiente specifico.
  • Genera i tuoi dati di test - I dati di test che utilizzi dovrebbero essere generati nel test. È possibile generare questi dati utilizzando l'annotazione @testSetup e una classe TestUtils non solo per assicurarsi di disporre dei dati corretti, ma anche per garantire che tutti i test vengano eseguiti su una sandbox per sviluppatori senza requisiti di dati.
  • Evita operazioni null AKA no-op - Molti tester usano operazioni null AKA no-op. Questi sono codici inutili che non fanno nulla. Poiché sono già nella tua base di codice, si aggiungeranno alla tua percentuale di copertura.
  • Esecuzione parallela del test - Quando avvii i test dall'interfaccia utente di Salesforce o dalla Console per gli sviluppatori, i test verranno eseguiti in parallelo. Questa è una caratteristica importante in quanto accelera il tempo di esecuzione del test. Tuttavia, tieni presente che ciò può portare a problemi di conflitto di dati e se sospetti che ciò possa accadere, disattiva l'esecuzione parallela. Le cause più comuni di problemi di conflitto di dati che spesso portano a errori UNABLE_TO_LOCK_ROW sono:
    • Quando i test hanno lo scopo di aggiornare gli stessi record allo stesso tempo. L'aggiornamento degli stessi record di solito avviene quando i test non creano i propri dati.
    • Quando si verifica un deadlock nei test in esecuzione in parallelo e tentano di creare record con valori di campo indice corrispondenti. Si verificherà un deadlock quando 2 test in esecuzione si sono messi in coda per eseguire il rollback dei dati (ciò si verifica quando 2 test inseriscono record che hanno gli stessi valori di campo indice univoci in ordini diversi).
    • Per disattivare l'esecuzione del test parallelo, andare su Setup, immettere Apex Test, andare alla finestra di dialogo Opzioni di esecuzione del test Apex, selezionare Disabilita test Apex parallelo, fare clic su OK.

Disabilita test Apex parallelo

Assumi un professionista per il lavoro poiché avrà l'esperienza e la formazione necessarie per fare un buon test, il che ti dà anche tranquillità. Assumere un professionista ti consente di concentrarti sul tuo core business. Ti fa anche risparmiare denaro poiché non avrai bisogno di un team interno per il lavoro.

Cosa ne pensi?

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati dei tuoi commenti.