Como criar testes automatizados com Postman

Como criar testes automatizados com Postman

Se você assim como eu já teve que trabalhar consultando APIs então muito provavelmente você já usou o Postman para isso, mas o que poucos sabem é que é possível criar testes automatizados usando o Postman e é justamente Como criar testes automatizados com Postman que eu vou ensinar hoje para vocês.

Se você ainda não sabe o que é o Postman e/ou não tem essa ferramenta instalada no seu computador eu sugiro fortemente que instale o Postman e leia a documentação inicial.

Geralmente o Postman é usado para testes manuais de APIs.

Mas porque fazer chamadas manuais e repetitivas se podemos criar rotinas automatizadas para isso?

Por que Automatizar testes?

Automatizar os testes fará com que você gaste menos tempo testando manualmente suas APIs.

Além disso os testes automatizados ajudam na manutenção da qualidade de código.

Pois um teste de API bem escrito nós podemos mapear e validar as dependências das nossas aplicações em relação a serviços externos e nos certificar que a comunicação entre os sistemas esteja de acordo com o que foi planejado inicialmente, o que consequentemente evita que erros vão para o ambiente de produção.

Então um bom conjunto de testes é o maior e melhor escudo contra bugs que uma aplicação pode ter.

Agora que sabemos o porquê automatizar os testes vamos aprender a automatiza-los usando o Postman.

Além disso é possível usar os testes do Postman junto de ferramentas de CI/CD, como Jenkins e Circle CI por exemplo.

Como criar testes automatizados com Postman

Para criar os testes de uma API geralmente eu faço isso em 3 passos, são eles:

  • Testar manualmente a API
  • Entender as entradas e saídas da API
  • Escrever os testes que desejo cobrir.

Para ajudar a exemplificar vou usar a API BoredApi.

Essa API é uma API aberta que dá sugestões de atividades a partir de parâmetros passados por query.

Agora que já sabemos qual API vamos testar vamos analisar a documentação e fazer os testes manuais.

Testando a rota base

Para iniciar os testes, comecei validando a rota de health check da api, pois assim podemos garantir que a mesma está funcionando.

Como criar testes automatizados com Postman - Primeiro Teste
Como criar testes automatizados com Postman – Primeiro Teste

Agora que sabemos que a rota da API está funcionando vamos escrever o teste para garantir que esse comportamento se mantenha.

Para isso vamos clicar na aba Tests.

O Postman tem um runtime de testes baseado no node.js então é simples construir os casos de testes, basicamente usaremos JavaScript.

Para garantir o funcionamento dessa rota é só validar se o código de retorno é 200 (sucesso).

Então escrevendo o teste para essa validação temos:

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

Mas antes de irmos para os próximos testes vamos entender um pouco melhor a estrutura do teste.

Primeiro temos a declaração do teste, usando pm.test.

A função test espera um nome e uma função como parâmetros.

Além da função test temos outros parâmetros dentro de pm, dentre eles o response.

E para fazermos a asserção usamos to.have.status(200).

Vale lembrar também que o resultado dos testes fica disponível na aba Test Result, na parte de response do Postman.

Então fica bem simples de ver o resultado dos testes.

Uma vez que entendemos a estrutura de um teste no Postman vamos continuar testando a api.

Testando a rota de atividades

Agora vou passar para a rota /activity que retorna uma atividade aleatória e não tem nenhum parâmetro obrigatório.

Mais uma vez vou começar com os testes manuais.

Essa rota é mais chata de se testar, tendo em vista que os resultados dela são aleatórios.

Então nos resta novamente testar o status code da resposta e garantir que seja 200.

O código é o mesmo do exemplo anterior.

Testando parâmetros na rota de atividades

Lendo a documentação da API vi que é possível passar alguns parâmetros para ela.

Entre os parâmetros disponíveis temos o tipo de atividades.

Então vamos testar esse parâmetro.

Para enviar o parâmetro usamos uma query string.

Então nossa rota fica /activity?type=param.

Para esse teste vou usar o tipo education.

O teste aqui diferente dos anteriores é um pouco mais complexo.

Primeiro temos que converter o response para json.

Em seguida temos que criar um pm.expect() passando o campo que vamos comparar.

O código do teste ficou:

pm.test("Activity type is education", function(){
    let responseJson = pm.response.json();
    pm.expect(responseJson.type).to.eql("education")
});

Coloquei os valores fixos mas vale lembrar que eles podem ser passados como variáveis.

Confira mais detalhes aqui.

Testando a coleção de requisições

Enfim para realmente automatizar o trabalho temos que ter uma forma de executar todos os testes de uma vez só.

E isso é possível com o collection runner, que vai rodar todas as requisições junto com todos os testes.

Para executar a coleção é só clicar nela, depois clicar no botão Run.

Então selecionar as requisições que deseja testar, quantas vezes deseja repetir e então clicar em Run.

Como criar testes automatizados com Postman - Testando uma coleção
Como criar testes automatizados com Postman – Testando uma coleção

Assim que clicar em Run você terá em tempo real o retorno do status dos testes.

Como criar testes automatizados com Postman – Conclusão

Como visto acima o Postman é uma ferramenta muito poderosa e simples para a criação de testes automatizados.

Mas se ainda assim você ficou com alguma dúvida de como eu escrevi esses testes eu deixei toda a collection disponível no meu Github.

Então é só baixar e importar no seu Postman para conferir.

Agora se você quiser aprender a fundo como criar testes usando JavaScript do completo zero eu sugiro que conheça o curso Aprenda a testar Aplicações Javascript.

Nele você vai aprender tudo sobre o ecossistema de testes do Javascript.

Não deixe de conferir também nosso post sobre a Pirâmide de testes.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *