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 testes com tecnologia sem servidor, você ainda escreverá testes unitários, de integração e de ponta a ponta.
-
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.
-
Testes de ponta a ponta: testes que verificam o comportamento em toda a aplicação. 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
Os testes na nuvem são valiosos para todas as fases dos testes, incluindo testes unitários, testes de integração e testes de ponta a ponta. 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
O recurso de validação do Powertools para AWS Lambda (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