Conheça a WireMock

Uma solução para simular uma API da qual dependemos que não existe ou não está completa

Imagem: findpath.com

Você já passou por uma situação em que precisa usar uma API que ainda não foi desenvolvida ou que ainda não tem acesso para realizar testes de serviços, UI, testar cenários de falhas, timeout, ou mesmo iniciar o desenvolvimento? Não se preocupe porque existe solução! Algumas ferramentas permitem criar um servidor simulado, e o WireMock é uma delas. Neste post, vamos contar um pouco sobre como ela funciona e quais são os benefícios.

Imagine que uma equipe de desenvolvimento está trabalhando no desenvolvimento de uma API (interface de programação de aplicativos) para integrar um serviço externo em determinada aplicação.

A equipe quer testar esta API, mas o recurso externo não está disponível. Então, o que fazemos? A solução estudada para realizar os testes foi utilizar uma ferramenta que permite simular este serviço externo. Desta forma, o time pode testar a aplicação antes de estar tudo integrado e garantir a qualidade desde o início do desenvolvimento. Para facilitar o entendimento, vamos a um exemplo mais concreto:

A empresa X deseja utilizar um serviço externo para validar se um CPF estaá ativo ou inativo, e para isso a equipe de desenvolvimento precisa criar um serviço que se comunique com uma API externa. Só que por motivos burocráticos a integração só será possível no fim do desenvolvimento.

É claro que, como qualquer equipe ágil, o time não quer esperar ate o final do desenvolvimento para validar a API de integração. Então, decidem simular este serviço de verificação de CPF para garantir que a API integradora esteja desenvolvida corretamente.

Projeto em desenvolvimento

Mão na massa! Vamos simular a criação de uma API que receba um CPF e, por meio de uma API externa, devolva a situação do CPF: “ativo” ou “inativo”.

Entretanto, este serviço de verifica CPF API ainda não foi integrado ao nosso ambiente por motivos burocráticos ou técnicos. Então, para poder testar o Integrador API vamos simular o verifica CPF API utilizando o WireMock.

Como criar um servidor simulado com Wiremock

Passo 1: realizar o download the standalone JAR no site:

Uma segunda opção de instalação é por linha de comando:

Install command:

Passo 2: analisar e entender a documentação da API externa.

Neste exemplo, em verifica CPF API, a API Verifica CPF API espera receber:

“método: “GET”

“url”: “/CPF/json”

E devolver:

“statusCode”: “200”

“cpf”: “”,

“situacao”: “”,

“uf”: “”

Formato de Arquivo:

“Content-Type”: “application/json”

Passo 3: criar os stub com base na documentação descrita acima, colocando em um arquivo com extensão .json no diretório mappings:

Cenário para CPF Ativo:

{

“request”: {

“method”: “GET”,

“url”: “/cpf/json”

},

response”: {

“status”: 200,

“jsonBody”: {“cpf”: “cpf”,

“situacao”: “Ativo”,

“uf”: “SP”

},

“headers”: {

“Content-Type”: “application/json”

}

}

}

Cenário para CPF Inativo:

{

“request”: {

“method”: “GET”,

“url”: “/cpf/json”

},

“response”: {

“status”: 200,

“jsonBody”: {“cpf”: “cpf”,

“situacao”: “Inativo”

“uf”: “SP”

},

“headers”: {

“Content-Type”: “application/json”

}

}

A estrutura de pasta deve ficar assim:

Passo 4: alterar o Integrador API para apontar para o servidor WireMock:

EndPoint do WireMock: http://localhost:9090/

(A porta 9090 foi definida para não entrar em conflito com o Serviço Integrador API, que é iniciado na porta 8080.)

Passo 5: inicializar a Aplicação Integrador API

Passo 6: inicializar o WireMock

$ java -jar wiremock-standalone-2.27.2.jar --port 9090

: Defina o número da porta HTTP, por exemplo . Use para determinar dinamicamente uma porta.

Para uma descrição detalhada de como executar um servidor Wiremock , clique aqui para consultar a documentação.

Passo 7: vamos utilizar o Postman para validar o Integrador API:

Cenário: Validar CPF com situação Ativa

Dado CPF com situação Ativa

Quando realizar consulta

Então devo visualizar situação Ativa

Cenário: Validar CPF com situação Inativa

Dado CPF com situação Inativa

Quando realizar consulta

Então devo visualizar situação Inativa

Conclusão

O WireMock é uma ferramenta que possibilita a simulação de serviços de API baseadas em HTTP. Esta virtualização é útil quando temos a necessidade de realizar testes de aceite e nem todos os serviços estão integrados ou disponíveis ou quando precisamos simular situações complexas que seriam custosas na API real.

Quanto mais cedo são identificados erros na aplicação, menos custosa será a correção destes erros, e por isso conseguir testar a aplicação desde o início do desenvolvimento é uma peça-chave para garantir a entrega de valor para o cliente.

O WireMock não substitui o teste de integração, mas ele garante que a aplicação desenvolvida faz o que deveria fazer desde que o Wiremock respeite a documentação da API real. Se você quiser saber mais, dá uma olhada neste artigo da própria documentação da Wiremock ou ainda este livro do Alan Richardson: Automating and Testing a REST API.

Ficou alguma dúvida ou tem algo para complementar? Aproveite o campo de comentários. Se você quer fazer parte de um time que tem como princípio básico a automação de testes, dá uma olhada aqui e se candidate a algumas de nossas vagas. Vamos aprender juntos! Até a próxima.

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade…

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Eriton da Silva Paiva Vasconcelos Gonçalves

Written by

Garantia da Qualidade (QA) em Concrete (parte da Accenture), Bacharel em Engenharia de Computação e Tecnologia em Análise e Desenvolvimento de Sistema.

Concrete

Nós desenvolvemos produtos digitais com inovação, agilidade e excelentes práticas, para que o mercado brasileiro e latino-americano acompanhe a velocidade do mercado digital mundial.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

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