Perguntas frequentes - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Perguntas frequentes

Tenho uma função do Lambda que executa cálculos e retorna um resultado sem chamar qualquer outro serviço. Preciso realmente testá-la na nuvem?

Sim. As funções do Lambda têm parâmetros de configuração que podem alterar o resultado do teste. Todo código de função do Lambda depende das configurações de tempo limite e memória, o que pode fazer com que a função falhe se essas configurações não forem definidas corretamente. As políticas do Lambda também permitem o registro de saída padrão na Amazon. CloudWatch Mesmo que seu código não chame CloudWatch diretamente, é necessária uma permissão para ativar o registro, e essa permissão não pode ser simulada ou emulada com precisão.

Como os testes na nuvem podem ajudar nos testes unitários? Caso esteja na nuvem e se conecte a outros recursos, não é um teste de integração?

Definimos testes unitários como testes que operam isoladamente em componentes arquitetônicos. Essa definição não exclui necessariamente o uso de chamadas de serviço ou outras comunicações de rede.

Muitas aplicações com tecnologia sem servidor têm componentes da arquitetura que podem ser testados isoladamente, mesmo na nuvem. Um exemplo básico é uma função do Lambda que recebe entradas, interpreta-as e envia uma mensagem para uma fila do SQS. Um teste unitário de uma função desse tipo provavelmente testaria se os valores de entrada resultariam na presença de determinados valores na mensagem colocada em fila. Considere um teste escrito usando o padrão Organizar, Agir, Declarar:

  • Organizar: aloque recursos (uma fila para receber mensagens e a função em teste).

  • Agir: chame a função em teste.

  • Declarar: recupere a mensagem enviada pela função e valide a saída.

Uma abordagem de teste de simulação consistiria em simular a fila com um objeto simulado em andamento e em criar uma instância em andamento da classe ou do módulo que conteria o código da função do Lambda. Durante a fase Declarar, a mensagem colocada em fila seria recuperada do objeto simulado.

Em uma abordagem baseada em nuvem, o teste criaria uma fila do SQS para fins do teste e implantaria a função do Lambda com variáveis de ambiente configuradas para usar a fila isolada do SQS como destino de saída. Depois de executar a função do Lambda, o teste recuperaria a mensagem da fila do SQS.

O teste baseado em nuvem executaria o mesmo código, declararia o mesmo comportamento e validaria a correção funcional da aplicação. No entanto, ele teria a vantagem adicional de poder validar as configurações da função do Lambda: o perfil do IAM, as políticas do IAM e as configurações de tempo limite e memória da função.