Testes da função do AWS Lambda em Python - AWS Lambda

Testes da função do AWS Lambda em Python

nota

Consulte o capítulo Testar funções para obter uma introdução completa às técnicas e melhores práticas para testar soluções com tecnologia sem servidor.

Os testes de funções com tecnologia sem servidor usam tipos e técnicas de teste tradicionais, mas você também deve considerar testar aplicações com tecnologia sem servidor como um todo. Os testes baseados em nuvem fornecerão a medida mais precisa da qualidade das suas funções e aplicações com tecnologia sem servidor.

Uma arquitetura de aplicações com tecnologia sem servidor inclui serviços gerenciados que fornecem funcionalidade de aplicações  críticas por meio de chamadas de API. Por esse motivo, seu ciclo de desenvolvimento deve incluir testes automatizados que verifiquem a funcionalidade quando sua função e seus serviços interagem.

Se você não criar testes baseados em nuvem, poderá encontrar problemas devido às diferenças entre o ambiente local e o ambiente implantado. Seu processo de integração contínua deve executar testes em comparação com um conjunto de recursos provisionados na nuvem antes de promover seu código para o próximo ambiente de implantação, como GQ, Preparação ou Produção.

Continue lendo este breve guia para aprender sobre estratégias de testes para aplicações com tecnologia sem servidor ou acesse o repositório de exemplos de testes com tecnologia sem servidor para conhecer exemplos práticos, específicos da linguagem e do runtime escolhidos.

illustration showing the relationship between types of tests

Para testes sem servidor, você ainda escreverá testes unitários, de integração e end-to-endde testes.

  • Testes unitários: testes executados em comparação com um bloco de código isolado. Por exemplo, verificar a lógica de negócios para calcular a taxa de entrega de acordo com um item e um destino determinado.

  • Testes de integração: testes envolvendo dois ou mais componentes ou serviços que interagem, normalmente em um ambiente de nuvem. Por exemplo, a verificação de eventos de processos de uma função em uma fila.

  • nd-to-end Testes E - Testes que verificam o comportamento em todo o aplicativo. Por exemplo, garantir que a infraestrutura seja configurada corretamente e que os eventos fluam entre os serviços conforme o esperado para registrar o pedido de um cliente.

Testar suas aplicações com tecnologia sem servidor

Geralmente, você usará uma combinação de abordagens para testar o código da aplicação com tecnologia sem servidor, incluindo testes na nuvem, testes com simulações e, ocasionalmente, testes com emuladores.

Testes na nuvem

O teste na nuvem é valioso para todas as fases do teste, incluindo testes unitários, testes de integração e end-to-end testes. Você executa testes com o código implantado na nuvem e interagindo com serviços baseados na nuvem. Essa abordagem fornece a medida mais precisa da qualidade do código.

Uma maneira conveniente de depurar a função do Lambda na nuvem é com o uso de um evento de teste no console. Um evento de teste é uma entrada JSON para sua função. Se a função não necessitar de entrada, o evento poderá ser um documento JSON vazio ({}). O console fornece eventos de exemplo para uma variedade de integrações de serviços. Depois de criar um evento no console, você pode compartilhá-lo com sua equipe para tornar os testes mais fáceis e consistentes.

nota

Testar uma função no console é uma maneira rápida de começar a usar, mas automatizar os ciclos de teste garante a qualidade da aplicação e a velocidade de desenvolvimento.

Ferramentas de teste

Existem ferramentas e técnicas para acelerar os loops de feedback de desenvolvimento. Por exemplo, o AWS SAM Accelerate e o modo de observação do AWS CDK diminuem o tempo necessário para atualizar os ambientes de nuvem.

Moto é uma biblioteca Python para simular serviços e recursos da AWS para que você possa testar suas funções com pouca ou nenhuma modificação usando decoradores para interceptar e simular respostas.

O recurso de validação do Powertools para AWS Lambda (Python) fornece decoradores para que você possa validar eventos de entrada e respostas de saída das suas funções do Python.

Para obter mais informações, leia a publicação do blog Testes de unidade do Lambda com Python e simulação dos serviços da AWS.

Para reduzir a latência envolvida com as iterações de implantação na nuvem, consulte AWS Serverless Application Model (AWS SAM) Accelerate e o modo de exibição do AWS Cloud Development Kit (AWS CDK). Essas ferramentas monitoram sua infraestrutura e codificam alterações. Elas reagem a essas alterações criando e implantando atualizações incrementais automaticamente em seu ambiente de nuvem.

Exemplos que usam essas ferramentas estão disponíveis no repositório de código de exemplos de testes Python.