Como verificar a cobertura de testes da API Rest
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:
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:
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.
Também devem ser verificadas as opções do content-type da resposta:
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.
Originally published at https://nayara-crema.medium.com on December 17, 2020.