View a markdown version of this page

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 AWS Lambda as funções têm parâmetros de configuração que podem alterar o resultado do teste. Todo o código da função Lambda depende das configurações de tempo limite e memória, o que pode fazer com que a função falhe se elas 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? Se estiver na nuvem e se conectar a outros recursos, isso 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 Lambda que recebe algumas entradas, as interpreta e envia uma mensagem para uma fila do Amazon Simple Queue Service (Amazon 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 arranjar, agir e afirmar:

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

  • Agir — Chame a função em teste.

  • Afirmar — 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 de declaração, a mensagem em fila seria recuperada do objeto simulado.

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

O teste baseado em nuvem executaria o mesmo código, afirmaria o mesmo comportamento e validaria a correção funcional do aplicativo. No entanto, teria a vantagem adicional de poder validar as seguintes configurações da função Lambda: AWS Identity and Access Management a função (IAM), as políticas do IAM e as configurações de tempo limite e memória da função.