API REST: entenda o passo a passo para realizar testes
Hoje estamos na onda dos microsserviços e com o surgimento dessa nova arquitetura, os serviços monolíticos estão sendo abandonados. Porém com tantos serviços desse tipo, surge uma questão preocupante: os testes. Como realizar testes unitários de um recurso presente em uma API REST? Como realizar testes de integração dos microsserviços? Essas são algumas dúvidas que surgem no dia a dia e tornam a construção dos testes algo desafiador para o desenvolvedor. Então, com o objetivo de ajudá-los, vou compartilhar alguns frameworks, ferramentas e dicas de como realizar tais testes.
Que testes devo realizar em um REST API?
Quando estamos criando nosso cenário de teste para API, devemos conhecer plenamente o contrato dela, uma API documentada com Swagger ajuda muito nessas horas, pois através dele saberemos os recursos, corpo de mensagem, etc.
Dados de uma requisição
- Method
- URI
- Headers
- Query Parameters
- Body
Dados para uma resposta
- Headers
- Body
- Status code
Comportamento de solicitação
- Validação dos dados de retorno.
- Validar os headers da resposta
- Validar se a resposta está de acordo.
- Validar se o content-type alterado, o comportamento continua o mesmo.
- Validar se a estrutura do JSON ou XML está correta.
- Validar se quando der erro o status está de acordo com os códigos de erro.
- Validar se uma requisição com informações incompleta, qual será o comportamento da requisição.
Após a coleta desses dados, já temos um cenário e saberemos quais comportamentos são esperados em nossa API.
Ferramentas de teste REST API
Após o levantamento dos principais pontos a serem testados em uma API, é necessário escolher a ferramenta para realização dos testes. Atualmente o mercado disponibiliza uma variedade de ferramentas, mas deve-se escolher a que melhor atenda o cenário do seu projeto.
Como exemplo, podemos citar:
Neste artigo vamos usar Postman para criar os testes e Newman para executar os testes automaticamente, de modo que será possível criar um cenário muito interessante para testar.
Postman/Newman
Postman é um REST Client muito popular entre os desenvolvedores que precisam fazer um pedido HTTP, o que ajuda a validar os testes realizados. Temos também o Newman que executa coleções do Postman por linha de comando, o que facilita o uso de softwares de integração contínua auxiliando a validação de uma API após a geração de um build.
Cenário de Teste de API Rest
Para mostrar como é fácil a utilização do Postman iremos construir um passo a passo para testar uma API. Essa API é muito simples ela é um CRUD de Tarefas, onde teremos os seguintes recursos.
Nosso plano será o seguinte.
Rule Expected result
POST /tasks with missing values return invalid request status HTTP Status 400
POST /tasks when running return creation status and with location in the header HTTP Status 201, Location no header
GET /tasks when running return ok status HTTP Status 200
GET /tasks/{taskid} with valid taskid return task object and ok status Task Object and HTTP status 200
GET /tasks{taskid} with invalid id return status of not found HTTP Status 404
DELETE /tasks/{taskid} with valid id return status of no content HTTP Status 204
Postman
Após o término da construção do cenário de teste, podemos começar a usar Postman para criar os cenários de teste. Para começar, temos duas opções: importar Swagger ou criar uma nova coleção.
Importação Swagger
Criar uma nova coleção
Para gerar coleções de requisições de teste no Postman podemos importar um documento Swagger ou então, gerar uma nova coleção através da própria ferramenta. A importação trará todas as requisições descritas no Swagger, enquanto a criação de uma coleção gerará requisições vazias, sendo necessário que o desenvolvedor descreverá os itens da coleção.
Coleção criada com as solicitações que testaremos
Com Postman temos a possibilidade de trabalhar com vários ambientes, tais como Produção ou Sandbox. Em cada um deles, podemos colocar variáveis para ajudar nos testes. Um bom exemplo é a inserção do endpoint da API.
Configuração do Environment.
Para criar os testes, selecione o método HTTP (POST, GET, PUT, DELETE, etc) e digite a URL de solicitação, observe que a URL {{{{uri_task_api}}} é uma variável de ambiente, para que possamos testar vários ambientes.
Adicione os Headers necessários, nesse caso temos que passar o Header “Content-Type” para especificar que vamos passar um JSON, mas poderíamos passar um Header diferente para testar se API está tratando corretamente o erro “media type”.
Quando estamos realizando uma operação de inclusão ou edição de dados, devemos preencher o body, esse é um exemplo de um body utilizando JSON. Além de JSON, podemos usar XML, texto, form-data, x-www-form-urlencoded ou arquivos binários.
Na aba “Pre-request Script” é possível executar scripts antes de realizar um requisição, nessa imagem estamos criando uma variável “createdAt” com a data atual, e adicionando ela em um ambiente, assim podemos utilizar esse valor em qualquer lugar na requisição.
Na aba “Tests” é onde devemos criar os scripts para validar o cenário de teste, como validar se um status code está de acordo com previsto, se o Header “location” está presente, entre outras possibilidades. Além disso podemos recuperar valores para ser utilizados futuramente, ou seja conseguimos realizar vários scripts, vai depender da sua necessidade.
Executando os testes
Após a criação de todos os cenários, temos a possibilidade de executar o teste individualmente ou para toda a coleção. No teste de unidade, basta clicar no botão a seguir:
Este botão ativará seu pedido e validará seus testes, e o informará quais testes foram aprovados ou reprovados.
Para executar a coleção vá no menu “Runner” Elá vai abrir um Janela, onde você deve selecionar a coleção e o “Environment”. Após isso basta clicar no botão
Ele vai disparar todas requisições programadas na sua coleção, e vai informar quais foram os testes que passou ou falhou.
Newman
Como mencionado acima, temos o Newman que executa suas coleções do Postman, porém por linha de comando, isso é muito útil quando você quer deixar os seus testes como um passo da sua build. Para usá-lo basta exportar do Postman a coleção e o ambiente desejado.
Exportar coleção.
Exportar Ambiente.
Para executar na linha de comando basta digitar a seguinte expressão:
newman run tasks-api.postman_collection.json--environment task-environments.postman_environment.json
Depois de executar ele vai exibir os resultados, com os testes executados e mostrar qual teste passou e qual falhou.
Bom essa é umas das formas que você pode utilizar para testar sua API, claro que existem várias ferramentas e métodos, basta você entender qual será a melhor para o seu contexto, e nunca deixar suas APIs sem testes.
GITHUB: https://github.com/renanpetronilho/task-api
Nossa Plataforma de API Management é um hub completo. Com a Sensedia, grandes empresas escalam suas operações com APIs, com ambientes de testes, adaptive governance, api security e muito mais
Publicado originalmente em julho de 2017, com pequenas atualizações em 2019.
Inicie sua jornada conosco
Estamos prontos para guiar o seu negócio rumo ao futuro, com a solução certa para você se beneficiar do potencial das APIs e integrações modernas.
Conteúdos relacionados
Confira os conteúdos produzidos pela nossa equipe
Sua história de sucesso começa aqui
Conte com nosso apoio para levar as melhores integrações para o seu negócio, com soluções e equipes profissionais que são referência no mercado.