Testes de API — A importância dos testes de contrato e da atenção em sua execução.

Delon Borges
Revista eQAlizando (antiga Revista TSPI)
4 min readMay 10, 2020
A man writing on paper
Foto de Scott Graham

Muitas vezes, temos o costume de efetuar as tarefas sem muito interesse no “porquê”, e mantemos o foco somente em “o quê”. É como andar! O quê é necessário ser feito? Andar! Mas, por que é necessário? Para que se atinja o objetivo de chegar ao local de um evento, por exemplo.

Se formos eficazes, o foco em “o que” fazer, bastaria, mas, somos humanos e, somos passíveis de erros. Já, quando nós nos interessamos no “porquê” das coisas, não é uma garantia, porém, dificilmente faremos algo mal feito.

API’s e seus contratos

API: Uma API (Application Programming Interface, ou, em português, Interface de Programação de Aplicações), é um conjunto de definições e protocolos que são usados no desenvolvimento e na integração de aplicações, visando a simplificação e desacoplamento no desenvolvimento.

As APIs contam com documentações que representam um acordo entre as partes interessadas. Se uma dessas partes enviar uma solicitação remota estruturada, de uma forma específica, isso determinará como o software da outra parte responderá. Para essa documentação, damos o nome de contrato, que define quais serão os tipos de respostas, sua estrutura e quais serão os tipos de dados utilizados.

Quando lidamos com os contratos de API, a comparação é equivalente. Nós olhamos a documentação, e pronto: “É essa a resposta que precisamos receber para validar esse contrato!”.

Atenção ao Swagger

Swagger: É um conjunto de ferramentas de código aberto, criadas para nos auxiliar a projetar, criar, documentar e consumir API’s.

Ao efetuarmos um teste, verificamos que, de acordo com o Swagger, no cadastro de um produto com componentes, por exemplo, os produtos devem ter seus números identificadores (ID’s) contidos no corpo da resposta, algo como:

Resposta padrão da API

O processo não pode parar

Fluxo de continuidade: Talvez você ainda não tenha ouvido falar neste termo, mas entenda-o como o ato de navegar entre páginas ou telas, em um caminho composto por alguns passos. A cada passo que você progride, mais informações são criadas, buscadas ou atualizadas. Além disso, o passo posterior depende do anterior.

Resposta esperada

Em um dos exercícios de testes de API, do curso TSPI (ministrados pelo Júlio de Lima), após sua execução e análise da resposta, foi constatado que o componenteId não estava presente. Esse, é um erro que afetaria um fluxo de continuidade, pois, após o registro do produto “Video Game XYZ” e do seu componente de exemplo, o “Controle — Sem Fio”, é gerado um identificador único, tanto para o produto, quanto para o componente. Para efetuar a manutenção de um componente, é necessário seu número de identificação e, quando esses identificadores não são encontrados em meio ao fluxo, torna-se impossível sua manutenção, uma vez que seu identificador é utilizado para relacioná-lo, à sua página de detalhes, por exemplo.

Resposta obtida

Esse é um caso mais raro de deixarmos passar, mesmo quando nos preocupamos somente com “o quê”. Pois, a comparação visual entre a resposta esperada e recebida, é bastante perceptível, mas, seria mais difícil uma inconsistência dessa não ser percebida se estivermos preocupados com o “porquê”, pois teríamos, além da percepção visual, a análise adequada da necessidade referente à existência do campo de identificação.

Conhecimento das regras de negócio

Já, em um outro caso, a resposta de um campo em específico deve retornar números mas, com valores “alfanuméricos”, por exemplo. Vamos supor que no corpo da resposta em questão, ao invés de um valor do tipo alfanumérico, o retorno é do tipo “numérico”.

Nada justifica a desatenção, claro, porém, quando estamos lidando somente com “o quê”, pode ser que estejamos somente com nossa atenção para os números, independente do tipo de dado retornado. Mas, se estivermos preocupados com o “porquê”, iremos analisar os motivos de tal campo ser alfanumérico, ao invés de numérico.

Um exemplo clássico, é o CPF. Há vários cadastros de CPF’s que começam com o número 0 (zero) e, por esse motivo, campos de CPF’s são definidos como alfanuméricos, para que os 0’s no início de uma sequência de números não sejam tratados como nulos.

Conclusão

Somos melhores profissionais quando procuramos fazer nosso trabalho da melhor forma possível, não nos limitando somente ao básico e ao mínimo necessário. Mas, quanto maiores nossas responsabilidades, maior deve ser nosso compromisso com a qualidade. Problemas com contratos de API podem afetar uma infinidade de negócios e serviços que a consomem e, nos atingir diretamente, como clientes finais.

--

--

Delon Borges
Revista eQAlizando (antiga Revista TSPI)

I’m a tester who’s always looking to improve my knowledge in the area of ​​quality assurance.