Virtualização de Serviços

No desenvolvimento de um software, muitas vezes nos deparamos com a dependência da entrada de dados oriundos de outros sistemas ou de funcionalidades ainda não desenvolvidas. Nesse caso é comum acreditar que não é possível testar estas funcionalidades antes de concluir a construção.

Hoje, com metodologias cada vez mais voltadas a entregas menores que gerem valor, conseguir testar partes menores do software sem todas as dependências é algo importante. Existem algumas formas bem eficazes de ter uma avaliação do produto nas etapas iniciais e até mesmo evitar erros futuros sem que o software esteja completamente construído.

Algumas abordagens usam stubs ou mocks para fazer esse trabalho, são alternativas que funcionam bem, mas não são alternativas muito realistas. De forma bem simplificada é como desenvolver um código temporário para substituir partes  do sistema que não estão disponíveis, ou simular de forma controlada comportamento de classes e objetos, isso possibilita realizar testes ou ter a execução do sistema sem que aquela parte indisponível inviabilize a execução, sendo mais utilizada pelos desenvolvedores.

Uma alternativa que pode se mostrar mais completa nesse processo é a virtualização de serviço, que permite realizar a simulação de banco de dados, APIs, sistemas de terceiros e microsserviços. Esta abordagem tenta simular componentes de forma mais real, onde o software os consome da mesma forma que consumiria o componente final.

 

Mas quais são as vantagens de fazer a virtualização dos serviços?

  • Testes iniciando mais cedo: As atividades de testes do sistema podem iniciar bem antes no ciclo de vida do software, já que não temos dependência de todo software estar funcional para realizar os testes.
  • Simulação mais próxima da realidade: Os testes realizados conseguem simular algo muito mais parecido com a que teremos no produto final, por exemplo:
    O sistema consome uma api, já tenho a parte do frontend construída, mas ainda não tenho a api, como o front consome a api não consigo fazer o sistema funcionar sem essa ligação, mas isso não é um problema com a virtualização, criamos uma api que retorne o que o sistema espera, e o front consome essa api como se fosse uma api real.
  • Ganho de tempo: Imagine que com as especificações entregues ao desenvolvedor do frontend ele conseguiu desenvolver muita coisa e gostaria de validar o que já está pronto, mas ainda não tem a api ou banco de dados disponíveis. Neste cenário para que ele valide essas interações, podem ser criados serviços virtuais para simular a api com o retorno esperado, assim como serviços virtuais JDBC que simulam operações de banco de dados.
  • Ganho de custo: Temos ganho de custo por conseguir detectar possíveis problemas no início do processo.
  • Reduzimos dependências de terceiros: com frequência nos deparamos com situações de impedimento para executar determinado teste porque o ambiente de homologação do terceiro não estava disponível, ou mesmo nunca conseguiu terminar todo um fluxo de teste porque o terceiro não disponibiliza um ambiente de testes. Com a virtualização de serviços podemos simular estes ambientes e ter menor dependência. Isso também minimiza atrasos causados por entrega de terceiros.
  • Permite que equipes trabalhem em paralelo, promovendo interação e reaproveitamento de trabalho.

 

Desvantagens da virtualização de serviços.

  • Custo das ferramentas: As ferramentas mais fáceis de trabalhar e com maiores funcionalidades não são open source, temos o custo para utilização desse serviço.
  • Limitações: Podemos ter algum componente candidato a virtualização que não é compatível com o processo, por isso precisamos fazer antes testes para validar a aderência.

 

Estão disponíveis algumas ferramentas que nos ajudam na tarefa de criar as virtualizações, algumas mais abrangentes que disponibilizam virtualização de vários componentes, outras apenas de apis e microsserviços. É recomendado que seja feita uma avaliação das ferramentas junto aos cenários da organização para entender qual será mais efetiva e atenderá melhor às necessidades do processo.

 

Abaixo estão listadas algumas das ferramentas disponíveis:

 

ServiceV Pro é uma ferramenta de virtualização da SmartBear que permite virtualizar serviços HTTP, REST, SOAP, JMS e JDBC.

Parasoft Virtualize é um produto de virtualização de serviço que pode criar, implantar e gerenciar ambientes de teste, replica o comportamento de recursos dependentes, como bancos de dados, apis, sistemas de informações de terceiros que esteja fora do alcance direto.

 

Citrus é uma ferramenta de código aberto de virtualização de serviço. Oferece ferramentas para testes de integração complexos com imensos recursos de validação para XML, JSON e texto sem formatação. É capaz de se comportar como um cliente e/ou servidor emulando as mensagens de solicitação/resposta.

 

 

Hoverfly da SpectoLabs é uma ferramenta de virtualização/simulação de API de serviço de código aberto. É adequado para o desenvolvimento de microsserviços.

 

Traffic Parrot auxilia na virtualização fornecendo simuladores e simulações de APIs.

 

WireMock é uma ferramenta de simulador para API baseada em HTTP, permite realizar testes de API mesmo que a mesma ainda não exista.

 

Mountebank é uma ferramenta de código aberto que pode executar testes multiprotocolo. A base de código é Node JS.

 

O software de simulação de dados MicroFocus permite virtualização do comportamento do microsserviço.

 

CA Service Virtualization simula sistemas indisponíveis como mainframes e provedores de serviços externos.

 

 

 

IBM Rational Test Virtualization ajuda a reduzir dependências simulando parte ou um aplicativo inteiro.

 

Tricentis service virtualization permite simular o comportamento de componentes necessários para executar testes.

 

Será que a virtualização de serviços pode ajudar no seu dia a dia? Busque entender qual ferramenta terá maior retorno, teste, analise, proponha. A equipe pode e deve definir juntos quais as melhores alternativas para o processo.

 

Para saber mais sobre o assunto, abaixo estão os links de referência.

https://dzone.com/articles/dont-just-be-a-player-be-a-playmaker

https://smartbear.com/resources/ebooks/introduction-to-service-virtualization/

https://smartbear.com/blog/test-and-monitor/advantages-of-using-service-virtualization-over-mo/

https://www.infostretch.com/service-virtualization/

https://www.infoworld.com/article/3268228/why-you-need-service-virtualization-in-your-development-and-qa-environments.html

https://www.guru99.com/service-virtualization-tools.html

 

Autora:Tatiane Moreira Santos

Arquiteta de Testes

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *