Princípios básicos dos testes

Este documento apresenta uma visão geral dos conceitos básicos de teste, inclusive:

Tipos de testes

Este guia abrange três tipos comuns de teste que podem ser usados para garantir o funcionamento correto do seu código:

  • Testes de unidade
  • Testes de integração
  • Testes do sistema

Em geral, os testes mais completos levam mais tempo para serem concluídos. Este documento discute esses tipos de teste em detalhes e fornece algumas dicas sobre como encontrar o equilíbrio entre velocidade e profundidade.

Testes de unidade

Os testes de unidade são testes de escopo restrito para partes pequenas e específicas do código. Esses testes podem verificar rapidamente suposições feitas durante o processo de desenvolvimento, como processamento de casos extremos e validação de entrada.

Por concepção, os testes de unidade não testam a integração com dependências externas, como o próprio Cloud Functions ou outros componentes do Google Cloud. Use a biblioteca fictícia para criar versões simuladas de dependências externas.

Para funções HTTP, os testes precisam simular a biblioteca HTTP de encapsulamento. Confirme o comportamento da função combinando bibliotecas de teste e fictícias e comparando os resultados da função com os valores esperados.

Testes de integração

Os testes de integração validam a interação entre partes do código e normalmente levam algum tempo para serem concluídos. Por exemplo, no Cloud Functions, os testes de integração podem ser usados para testar o uso de outros serviços do Google Cloud, como Datastore ou Cloud Vision.

A principal diferença entre testes de unidade e testes de integração do Cloud Functions é que os testes de integração envolvem menos simulação do que os testes de unidade. Os testes de integração devem acionar e responder a eventos reais do Cloud, como solicitações HTTP, mensagens Pub/Sub ou alterações de objeto do Storage.

Execute testes de integração localmente usando um shim.

Algumas operações assíncronas podem exigir polling periódico. Recomendamos usar a estratégia de polling espera exponencial truncada, pois minimiza efetivamente a latência da operação subjacente e a frequência de polling necessária. A espera exponencial truncada é uma estratégia padrão de processamento de erros para aplicativos de rede em que um cliente repete periodicamente uma solicitação com falha, aumentando o atraso entre as solicitações.

Testes do sistema

Os testes do sistema são testes mais complexos que validam o comportamento do Cloud Function em vários componentes do Google Cloud em um ambiente de teste isolado.

Implante o Cloud Function em um ambiente de teste e teste sua funcionalidade acionando os eventos apropriados. Valide a função lendo os registros ou verificando o comportamento desejado.

Você precisa isolar os ambientes de desenvolvimento, teste e produção. Para garantir versões herméticas, certifique-se de provisionar recursos de teste programaticamente com seus próprios projetos e/ou nomes de recursos exclusivos do GCP.

Como provisionar um ambiente de teste

Também é necessário atribuir nomes globalmente exclusivos a recursos de teste do sistema para evitar que testes simultâneos interfiram uns nos outros. Isso pode ser feito programaticamente criando e excluindo os recursos necessários antes e depois de cada execução de teste.