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:

brew install wiremock-standalone

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

--port: Defina o número da porta HTTP, por exemplo --port 9999. Use --port 0para 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.

--

--

Eriton da Silva Paiva Vasconcelos Gonçalves
Accenture Digital Product Dev

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