Close

Tutorial de teste de integração com Bitbucket pipelines

Foto de Sten Pittet
Sten Pittet

Autor colaborador

Saiba como executar testes de integração com o Bitbucket Pipelines fazendo vários serviços serem executados em paralelo em contêineres do Docker separados em um pipeline.

O teste é uma parte fundamental da integração contínua e da entrega contínua. E se você está praticando a implementação contínua, ele vai ser a última linha de defesa contra bugs antes que as alterações sejam lançadas para os clientes. Os testes de unidade que validam métodos e classes individuais são um ótimo começo para evitar problemas, mas você também vai precisar executar testes de integração que garantam que os diferentes módulos usados pelo aplicativo (servidor de aplicativos, banco de dados, cache) interajam sem erros. Este tutorial mostra como executar testes de integração com o Bitbucket Pipelines executando vários serviços em contêineres do Docker separados em um pipeline.

Tempo

30 minutos

Público-alvo:

Você é novo na implementação contínua e/ou Bitbucket Pipelines

Pré-requisitos

  • Uma conta do Bitbucket
  • Node v4.6 ou superior para executar o aplicativo

  • Docker Community Edition v17.03 ou superior para executar o MongoDB na máquina local

  • Um terminal para executar comandos bash
  • O Git para gerenciar o repositório e enviar de volta para o Bitbucket Cloud

Etapa 1: como executar o aplicativo de exemplo no local

Vamos usar um aplicativo Node.js básico que exibe uma mensagem na página inicial e registra as visitas a um banco de dados. Para focar a configuração do Bitbucket Pipelines, basta clonar o aplicativo do terminal.

git clone git@bitbucket.org:spittet/bitbucket-pipelines-services-tutorial.git

Agora acesse o repositório local e execute npm install para instalar as dependências exigidas pelo aplicativo.

cd bitbucket-pipelines-services-tutorial
npm install

Antes de executar o aplicativo, precisamos iniciar uma nova instância do MongoDB. Graças ao Docker, você pode iniciar a instância no terminal.

docker run --name mongodb -d -p 27017:27017 mongo

Depois, inicie o aplicativo e acesse http://localhost:3000 para vê-lo em ação.

npm start

Você pode acessar http://localhost:3000/visits para verificar se o registro correto de uma visita foi feito no banco de dados.

Por fim, vamos garantir que os testes sejam concluídos com sucesso localmente usando o comando npm test. Você deve ver os testes serem concluídos após executar esse comando.

npm test

Este aplicativo de exemplo está executando dois testes diferentes:

  • Um teste que verifica se o aplicativo exibe Hello World na página inicial.
  • Um teste que verifica se uma nova visita é registrada no banco de dados sempre que alguém acessa a página inicial.

O primeiro teste vai ser aprovado mesmo que o banco de dados esteja inativo, mas o segundo é um teste de integração que verifica se a interação do aplicativo web com o servidor de banco de dados está correta. Esse teste também pode ser entendido como funcional, pois verifica alguns dos requisitos de negócios do aplicativo. Saiba mais sobre os diferentes tipos de testes neste guia.

Agora vamos ver como usar o Bitbucket Pipelines para automatizar o teste do aplicativo e configurá-lo para funcionar bem com um banco de dados.

Etapa 2: como executar testes automáticos com o Bitbucket Pipelines

Comece criando um repositório na conta do Bitbucket e atualize a URL remota da origem para apontar o repositório Bitbucket.

git remote add bitbucket git@bitbucket.org:<account name>/<repository name>.git
git branch -m mainline
git push -u bitbucket mainline

Acesse a seção Pipelines do repositório para habilitar o Bitbucket Pipelines.

Você pode usar o template Javascript padrão na próxima tela. Ele já tem os comandos npm install e npm test necessários para instalar as dependências e executar o conjunto de testes.

O arquivo bitbucket-pipelines.yml deve se parecer com isso.

image: node:16

pipelines:
  default:
    - parallel:
        - step:
            name: Build and Test
            caches:
              - node
            script:
              - npm install
              - npm test

O serviço de banco de dados está faltando, mas vamos adicioná-lo mais tarde.

Depois de fazer commit do arquivo, você vai ser redirecionado para a seção Pipelines do repositório, que mostra o primeiro pipeline em andamento. O pipeline vai falhar porque o segundo teste não pode ser executado corretamente sem uma conexão de banco de dados. Se você clicar no pipeline, vai ver uma tela semelhante a esta abaixo, informando que 1 teste for aprovado e 1 falhou.

Na próxima seção, vamos corrigir esse problema adicionando uma nova definição de serviço à configuração do Pipelines.

Etapa 3: como adicionar uma definição de serviço para o banco de dados

Com o Bitbucket Pipelines, você pode executar até 3 contêineres do Docker adicionais além do aplicativo principal em execução em um pipeline. Você pode usar esses contêineres para executar serviços como armazenamento de dados, ferramenta analítica ou qualquer serviço de terceiros que o aplicativo precise para concluir o pipeline. Neste caso, vamos usar um contêiner de serviço separado para executar o MongoDB.

Acesse a seção de origem do repositório para ver a lista de arquivos.

Clique no arquivo de configuração bitbucket-pipelines.yml para acessá-lo. Você vai encontrar o botão Editar no canto superior direito que permite editar o arquivo e fazer commit usando o navegador.

Precisamos adicionar uma definição de serviço para o banco de dados na parte inferior do arquivo de configuração.

bitbucket-pipelines.yml

image: node:16

pipelines:
  default:
    - step:
        script:
          - npm install
          - npm test

definitions:
  services:
    database:
      image: mongo

No caso do MongoDB, não precisamos de configurações extras na definição da imagem, mas algumas imagens do Docker para armazenamentos de dados e serviços podem exigir a especificação de algumas variáveis de ambiente. Veja uma lista de exemplos de banco de dados na documentação do Bitbucket Pipelines.

Antes de fazer commit do arquivo, você precisa adicionar o novo serviço à etapa que está executando os testes. A configuração final do Pipelines deve estar como o código abaixo.

bitbucket-pipelines.yml

image: node:16

pipelines:
  default:
    - step:
        script:
          - npm install
          - npm test
        services:
          - database

definitions:
  services:
    database:
      image: mongo

Acesse a seção Pipelines depois de fazer commit do arquivo para ver o pipeline em andamento. Ele deve ser concluído com sucesso.

Clique na guia banco de dados no painel de logs para ver os logs do contêiner do MongoDB.

Acabou! Agora você sabe como adicionar serviços ao pipeline para executar testes de integração. Não se esqueça de ler a documentação para saber mais sobre como usar esses serviços.

Sten Pittet
Sten Pittet

Estou no ramo de software há 10 anos, em diversas funções, de desenvolvimento a gerenciamento de produto. Depois de passar os últimos 5 anos na Atlassian trabalhando em Ferramentas de Desenvolvimento, agora escrevo sobre como compilar software. Fora do trabalho, estou aprimorando minhas habilidades como pai de uma criancinha maravilhosa.


Compartilhe este artigo
Próximo tópico

Leitura recomendada

Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.

Ilustração DevOps

Comunidade do DevOps

Ilustração DevOps

Caminho de aprendizagem de DevOps

Ilustração do mapa

Comece gratuitamente

Inscreva-se para receber a newsletter de DevOps

Thank you for signing up