Test delle funzioni AWS Lambda in Python - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Test delle funzioni AWS Lambda in Python

Nota

Consulta il capitolo sul Test delle funzioni per un'introduzione completa alle tecniche e alle best practice per testare soluzioni serverless.

Sebbene il test delle funzioni serverless si basi su tipologie e tecniche di test consolidate, è importante tenere in considerazione la possibilità di effettuare test sulle applicazioni serverless nella loro interezza. I test basati sul cloud forniranno la misura più accurata della qualità sia delle funzioni sia delle applicazioni serverless.

Un'architettura applicativa serverless include servizi gestiti che forniscono funzionalità applicative critiche tramite chiamate API. Pertanto, è fondamentale che il ciclo di sviluppo preveda test automatici in grado di verificare il corretto funzionamento dell'interazione tra le funzioni e i servizi.

Se non crei test basati sul cloud, potresti riscontrare problemi dovuti alle differenze tra l'ambiente locale e quello implementato. Il processo di integrazione continua dovrebbe eseguire test su un insieme di risorse con provisioning nel cloud prima di promuovere il codice nell'ambiente di implementazione successivo, come quello di controllo qualità (QA), staging o produzione.

Continua a leggere questa breve guida per scoprire le strategie di test per le applicazioni serverless oppure visita il repository Serverless Test Samples per approfondire esempi pratici, specifici per il linguaggio e il runtime selezionati.

illustration showing the relationship between types of tests

Per i test senza server, continuerai a scrivere unità, integrazioni e end-to-endtest.

  • Test unitari: vengono eseguiti su un blocco di codice isolato. Ad esempio, possono essere utilizzati per verificare la logica aziendale per calcolare le spese di spedizione in base a un articolo e a una destinazione specifici.

  • Test di integrazione: coinvolgono due o più componenti o servizi che interagiscono, in genere in un ambiente cloud. Ad esempio, possono essere utilizzati per verificare che una funzione elabori gli eventi di una coda.

  • E nd-to-end test: test che verificano il comportamento in un'intera applicazione. Ad esempio, possono essere utilizzati per verificare che l'infrastruttura sia configurata correttamente e che gli eventi fluiscano tra i servizi come previsto per registrare l'ordine di un cliente.

Test delle applicazioni serverless

Generalmente, utilizzerai una combinazione di approcci per testare il codice dell'applicazione serverless, inclusi test nel cloud, test con mock e occasionalmente test con emulatori.

Test nel cloud

I test nel cloud sono utili per tutte le fasi del test, inclusi test unitari, test di integrazione e end-to-end test. Esegui test su codice implementato nel cloud e interagisci con servizi basati su cloud. Questo approccio fornisce la misura più accurata della qualità del codice.

Un modo conveniente per eseguire il debug di una funzione Lambda nel cloud è con un evento di test nella console. Un evento di test è un input JSON per la funzione. Se la funzione non richiede input, l'evento può essere un documento JSON ({}) vuoto. La console fornisce eventi di esempio per una varietà di integrazioni di servizi. Dopo aver creato un evento nella console, puoi condividerlo con il tuo team per rendere i test più semplici e coerenti.

Nota

Testare una funzione nella console è un modo rapido per iniziare, ma l'automazione dei cicli di test garantisce la qualità delle applicazioni e la velocità di sviluppo.

Strumenti di test

Esistono strumenti e tecniche per accelerare i cicli di feedback sullo sviluppo. Ad esempio, AWS SAM Accelerate e AWS CDK watch mode riducono entrambi il tempo necessario per aggiornare gli ambienti cloud.

Moto è una libreria Python per simulare servizi e risorse AWS, in modo da poter testare le funzioni con poche o nessuna modifica utilizzando decoratori per intercettare e simulare le risposte.

La funzione di convalida di Powertools per AWS Lambda (Python) fornisce decoratori che consentono di convalidare gli eventi di input e le risposte di output dalle funzioni Python.

Per ulteriori informazioni, leggi il post del blog Test unitari di Lambda con Python e servizi AWS fittizi.

Per ridurre la latenza associata alle iterazioni di implementazione del cloud, consulta le sezioni AWS Serverless Application Model (AWS SAM) Accelerate e AWS Cloud Development Kit (AWS CDK) watch mode. Questi strumenti monitorano l'infrastruttura e il codice per rilevare eventuali modifiche. Reagiscono a questi cambiamenti creando e implementando automaticamente aggiornamenti incrementali nell'ambiente cloud.

Alcuni esempi che utilizzano questi strumenti sono disponibili nel repository di codice Python Test Samples.