Como verificar a cobertura de testes da API Rest

Image for post
Image for post

Algumas vezes, no projeto em que estamos inseridos na empresa, precisamos passar para o time uma clareza sobre o que está sendo implementado nos testes automatizados de API REST ou quanto da API está coberta pelos testes.

Existe uma forma de calcular a cobertura de testes, que se baseia nos critérios de cobertura de entrada (Input Coverage) e cobertura de saída (Output Coverage).

Em seguida, explicarei alguns desses critérios, assim você poderá calcular a cobertura de seus testes, caso ache necessário.

  • Path Covarage (input):

Analisar a cobertura da suíte de testes da URI.

Verificand a quantidade de URI que a api possui (se for a mesma URI para métodos diferentes, considera-se apenas um).

O ideal é realizar ao menos uma requisição para verificar cada endpoint.

Se verificar a imagem do swagger abaixo, podemos notar 13 endpoints diferentes:

Image for post
Image for post

Suponha que a automação desta API tenha apenas 6 desses endpoints implementados, mas a API possui 13 endpoints.

Para calcular a cobertura: quantidade de testes automatizados / quantidade de endpoints na API REST.

Então 6/13 = 0,46 = 46%

Então 46% dos testes de path estão cobertos pela automação.

  • Operator Coverage (input):

Conferir a cobertura da suite de testes de todos os métodos que existem dentro da API REST (GET, POST, PUT, DELETE…).

O swagger abaixo tem um total de 19 operações:

Image for post
Image for post

Deve ser verificado quais dos métodos da API foram implementados na suite de teste. Então vamos dizer que 16 métodos estão automatizados.

Para calcular a cobertura: quantidade de operações da API estão automatizados/ quantidade total de operações da API REST.

Então 16/19 = 0,84 = 84%

Então temos 84% dos testes de operações cobertos.

  • Parameter Covarage (input):

Verificar a cobertura de uma suite de testes conforme os parâmetros existentes em cada método da api.

Para calcular a cobertura:

Quantidade total de parâmetros cobertos na suítes de testes / quantidade total de parâmetros nos métodos da api.

Para atingir 100% de cobertura de testes é necessário testar todos os parâmetros de entrada de cada operação pelo menos uma vez, realizar a combinação de todos os parâmetros é desejável, mas não estritamente necessário para chegar a 100% de cobertura.

  • Parameter Value Covarege (input):

Confere a cobertura da suíte de testes de parâmetros booleano e enum nas operações (se existirem).

Para calcular a cobertura:

Quantidade total de valores diferentes enviados / quantidade total de valores que podem assumir.

Para atingir 100% de cobertura cada parâmetro booleano e enum deve assumir todos os valores possíveis.

  • Content-Type Covarege (input e output):

Verificar a cobertura de testes automatizados onde o content-type está sendo exibido em cada endpoint, ou seja, se for demonstrado nas opções do content-type de envio application/json e um application/xml, então duas opções do parâmetros de envio deveriam ser cobertas.

Image for post
Image for post
Image for post
Image for post

Também devem ser verificadas as opções do content-type da resposta:

Image for post
Image for post

Para calcular a cobertura:

Quantidade total de content-type em cada operação cobertos pela suíte de testes / Quantidade total de content-type em todas as operações da API.

  • Operation Flow (input):

Este critério mede os fluxos de operações da API REST que estão cobertos pela suíte de testes.

Por exemplo:

Criação — Post, Consulta — Get(id), Alteração — Put, Consulta — Get(query), Exclusão — Delete.

Se todos os fluxos estiverem implementados no teste automatizado, então a API Rest está 100% coberta pela automação.

Porém se é possível criar 4 tipos de fluxos, mas sua automação possui apenas um, por exemplo, criação (Post) e Consulta (Get id), então terás apenas 25% de cobertura.

  • Response Properties Body Coverage (Output):

Este critério mede os parâmetros no corpo da resposta, então deve ser verificado se todas as propriedades da resposta estão cobertas pelo teste.

Para calcular a cobertura deve-se dividir o número total de todas as propriedades de todos os objetos que pode ser obtido na resposta da API, pelo número de propriedades da resposta que os testes estão cobrindo.

  • Status Code Coverage (Output):

Este critério verifica quais status codes existentes em cada endpoint estão cobertos pelos testes.

Portanto, para atingir 100% da cobertura de testes, todos os status codes de cada operação deve estar implementado nos testes.

Analise os critérios de cobertura de entrada e saída dos seus testes de API Rest e verifique o quanto eles estão cobertos. Veja se consegue cobrir o máximo de cenários possíveis e garantir ainda mais a qualidade do produto que você está testando.

Fonte: https://personal.us.es/amarlop/wp-content/uploads/2019/09/Test_Coverage_Criteria_for_RESTful_Web_APIs.pdf

Originally published at https://nayara-crema.medium.com on December 17, 2020.

Impulsionar pessoas para inovar o mundo

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store