time de desenvolvimento entrando em acordo e finalizando um contrato

Testando seu “contrato” com o restassured

Lucas Fraga
assert(QA)
Published in
3 min readJun 29, 2020

--

Após longos meses sem publicar algo, eis que resolvo escrever por dois grandes motivos:

1. alguns amigos me incentivaram bastante;
2. vi muita coisa complexa por aí.

Então, bora lá…

Mesmo sabendo que, o caminho mais fácil nem sempre será o melhor, entendo que muitas vezes precisamos apenas “sair do outro lado” para que depois consigamos avançar em nossas ideias e skills.

Logo, com a ciência sobre a ordem natural das coisas e sem atropelar nada, existem momentos em que não queremos ler 300 livros para escrever apenas um: “Hello World!”.

Pensando nesse contexto, nos deparamos com diversas formas e frameworks para se testar um contrato, então, sem entrar no mérito de explicar o step by step, ou o que seria um contrato (clica ai!), deixo claro que as aspas duplas no título do post significa que, na real, iremos testar apenas o schema-json, ok? (e isso é bem comum por aí haha…)

exemplo de um schema.json

Após todos estarem de acordo com isso, é a hora de corrermos atrás do tal do contrato através de algum desenvolvedor, task, doc/swagger ou na raça mesmo (leia-se, sozinhos!) haha...lá, teremos todos os atributos, o tipo do valor e se o mesmo será obrigatório ou não.

Bora para o Famoso: “MÃO NA MASSA”!

molezinha!

Vamos baixar a dependência via pom.xml: essa aqui!
(além de todas as outras necessárias para o seu projeto rodar, claro).

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>3.0.0</version>
</dependency>

Agora, dentro da pasta src/test/resources/{qualquer_coisa_que_quiser}, criaremos um arquivo .json: exemplo-schema.json

Ah, uma nota importantíssima:
Esse arquivo exemplo-schema.json precisa ficar dentro da pasta “resources” (atente-se ao caminho: src/test/resources/) fora da pasta src/test/java/ hein!

Dentro desse arquivo, teremos que colocar nosso schema e a regra de validação que foram acordadas anteriormente através do contrato. Existem vários sites que nos auxíliam nesse formato, vamos utilizar esse: site json-schema

Abaixo eu tenho um exemplo de um JSON de um endpoint que peguei para testar:

exemplo JSON — /usuarios (servrest)

E aqui, um exemplo de como ficou meu schema para testa-lô:

src/test/resources/exemplo-schema.json

Como podem ver, eu estou avisando que em meu schema tenho vários atributos do tipo string e que são required! Isso faz com que, caso alguma coisa mude para integer, boolean ou sei lá…o meu “contrato” se quebre.

Mas pera lá, para vermos funcionando e/ou quebrando, temos que ter um arquivo para testa-lo, né? Simbora!

óóóóóóóbvio!

Agora vamos criar um arquivo .java dentro pasta src/test/java/{qualquer_coisa_que_quiser} chamado: “ExemploContrato.java

src/test/java/ExemploContrato.java

Vamos testar essa joça!

Após rodar o teste, se tudo estiver correto, veremos o “certinho verde” que tanto amamos (ou não!).

teste positivo!

E, abaixo, para fins de exemplo, mudei o “type” do atributo “administrador” para um boolean e eis o resultado:

teste negativo!

Simples, fácil e rápido!

Enfim, agora com qualquer alteração no schema (“contrato” haha) conseguiremos pegar antecipadamente através de um pipeline, por exemplo.

hater.com/eu

Obrigado pela atenção!
Ah, os feedbacks, dúvidas, xingamentos e etc…serão sempre bem vindos hein.

Até a próxima.

Pontos a serem considerados:

1. conversas e ajudas sobre esse tipo de abordagem com: Bruno Batista
2. muita porrada e debate com o hater/gênio do: Ramses Sacol
3. o excelente serverest que testei com facilidade do: Paulinho
4. a falta de posts em pt-br (sendo ele, simples!)
5. agradecer ao Vitor Cardoso que deu um super feedback e editei esse post
6. se quiserem brincar mais, tem um repositório de estudos aqui: https://github.com/uLucasFraga/restassured_for_studies

--

--