Cansado de depender dos outros para fazer testes de APIs? A virtualização de serviços chegou para salvá-lo.

Com o final do período de festas, chegam os dias de resolver as coisas. Uma das resoluções que os profissionais de desenvolvimento e de teste deveriam fazer para 2017 é gastar menos tempo e dinheiro acessando APIs de terceiros.

Do varejo a serviços financeiros, passando pelo setor de saúde, empresas de diferentes setores dependem cada vez mais de APIs públicas, parceiros ou provedores externos. Essas dependências são a fundação dos avanços atuais em APIs e a economia dos aplicativos, possibilitada por práticas ágeis de desenvolvimento e testes contínuos.

Em um relatório recente da voke Research, Market Snapshot Report on Service Virtualization, mais de 500 empresas confirmaram que as restrições são um grande obstáculo para a inovação no ciclo de vida de desenvolvimento de software. O relatório menciona que:

  • 80% das equipes tiveram atrasos no desenvolvimento devido a restrições ao longo do SDLC
  • 56% das dependências críticas não estavam disponíveis quando as equipes de desenvolvimento e de teste precisavam
  • 70% das equipes enfrentaram restrições proibitivas (atrasos, horários, tarifas) quando precisaram acessar sistemas de terceiros

Acredito que, se essa pesquisa fosse refeita hoje, um número ainda maior de clientes citariam o acesso a APIs e a sistemas de terceiros como um obstáculo importante à agilização dos testes e ao lançamento de aplicativos de qualidade em produção.

Além do fato de que um número crescente de empresas estão contando cada vez mais com APIs de terceiros, elas também estão se tornando fornecedoras de APIs para seus clientes e parceiros. Normalmente, o teste é uma consideração tardia para quem está fornecendo a API. O foco principal de qualquer API de terceiros é contribuir com a produção real e gerar receita. A capacidade prioritária é atribuída à atividade de produção, geradora de receita, e a capacidade extra (se houver) é usada nos testes. Também podem ser cobradas taxas adicionais como uma forma de gerar receita—o que, dependendo do lado do muro em que você estiver, pode ou não ser algo bom.

Por exemplo, considere um cliente de entrega/logística que forneça acesso a seus clientes e parceiros através de APIs públicas em um modelo “gratuito” de SaaS. O custo da empresa de logística para manter sistemas para seus clientes e parceiros é significativo. Apesar de o acesso às APIs de produção ser gratuito, a empresa de logística continua recebendo queixas de que seu serviço não é tão bom quanto outros porque eles não oferecem uma maneira fácil de acessar as APIs para testes. O aumento da capacidade para permitir os testes reduziria margens já estreitas, e cobrar os clientes pelos testes seria considerado uma desvantagem competitiva. Então o que fazer?

Entra em cena a virtualização de serviços… O que ela é e como funciona

O CA Service Virtualization resolve os problemas de acesso a APIs e sistemas de terceiros ao capturá-los e modelá-los como serviços virtuais que operam da mesma forma que os serviços reais. As versões virtualizadas são alternativas de baixo custo, que estão sempre disponíveis e podem ser usadas para testes funcionais e de desempenho.

Quando os desenvolvedores e testadores fazem uso da virtualização de serviços, estes se comportam de forma semelhante a seus equivalentes reais, mas sem a complexidade subjacente de hardware e software de um sistema físico. O desenvolvimento e os testes continuam como sempre ocorreram, mas com menos restrições e sem disputa entre equipes por ambientes, laboratórios, dados de teste e assim por diante.

O acesso a uma API virtualizada pode inclusive ser melhor do que à real, pelo simples motivo de que você pode testar todos os tipos de cenários—diferentes níveis de funcionalidade, desempenho e manutenção—com um serviço virtualizado que nunca seria possível com uma API. Você pode fazer com que a API virtualizada se comporte da maneira que quiser. E o melhor de tudo: podem ser criadas simultaneamente várias cópias da mesma API para que várias pessoas possam usá-la para testes ao mesmo tempo.

Não parece mágica? Bem, na verdade, não é. É assim que a virtualização de serviços funciona:

Etapa 1: Capturar a conversa

Quando os componentes de software se comunicam, eles usam um formato estruturado, também conhecido como protocolo. Dentro dessa conversa estruturada, podem ser feitas observações sobre elementos estáticos versus dinâmicos, o conteúdo da conversa e dados (a carga principal), além de outros aspectos da relação entre os componentes para criar uma compreensão da interação do software.

Etapa 2: Processar a conversa capturada

Aqui, a ferramenta de virtualização de serviços avalia os requisitos das especificações de engenharia fornecidas ou analisa as conversas capturadas entre os componentes. Esse processamento e essa abordagem inteligente em relação aos dados capturados é que são os diferenciais de uma ferramenta como o CA Service Virtualization em comparação com stubs e mocks.

Etapa 3: Criar um modelo utilizável

O CA Service Virtualization converte essas conversas capturadas e pares processados de solicitação/resposta do protocolo em um modelo sofisticado e dinâmico que se comporta de forma muito semelhante ao sistema real e proporciona a cobertura de cenários e os recursos para as atividades de desenvolvimento e teste de software. A ferramenta de virtualização de serviços é capaz de lidar com tarefas difíceis, como a identificação de dados dinâmicos, conversas que contêm estado e exigem IDs de sessão e outras técnicas relacionadas a estado, e observar a variabilidade do mundo real e o comportamento dinâmico das conversas. Após o processamento, o CA Service Virtualization compila uma conversa em um modelo com estados (ou sem estados, se desejado). Com esse modelo, agora temos a capacidade de superar desafios como o estado, o processamento automático de dados dinâmicos, e até mesmo preencher respostas com dados de teste “falsos” adequados, resolvendo automaticamente um enorme desafio relacionado ao gerenciamento de dados de teste comum para os clientes. É esta etapa de compilação que proporciona ao modelo a funcionalidade dinâmica e avançada necessária à virtualização realista, além de garantir sua robustez para uso em novos casos e cenários por desenvolvedores.

Se você quiser obter detalhes mais específicos sobre como criar serviços virtuais a partir de gravações, pares de solicitação/resposta, WSDLs e outros meios, além de ver vídeos de tudo isso em ação, acesse o site com a documentação mais recente do CA Service Virtualization aqui.

Com a virtualização de serviços, as equipes de teste obtêm acesso aos sistemas e serviços dependentes que precisam testar sem a necessidade de esperar pelas equipes de desenvolvimento ou operações. Digamos que você precisa testar um determinado serviço, que deve ser implantado ou fornecido por um terceiro, e que somente depois disso será possível testar sua parte do código. Bem, com a virtualização de serviços, graças ao uso de exemplos de pares de solicitação/resposta, um testador pode criar, implantar e usar o serviço virtual. Assim ele não mais dependerá de terceiros, e poderá economizar tempo e dinheiro.

Por exemplo, o CA Service Virtualization detecta automaticamente o comportamento dinâmico de datas e pode modelá-las para que sejam precisas, independentemente da data real da transação ou da resposta virtualizada. Com isso é possível criar modelos que funcionarão bem no futuro, ao contrário da natureza estática de mocks e stubs, que são ou frágeis ou caros demais para criar e manter.

Em uma pesquisa recente da TechValidate, a CA Technologies confirmou que 86% dos departamentos de TI entrevistados concordam que um dos recursos mais importantes da virtualização de serviços é virtualizar sistemas indisponíveis ou de terceiros. (TVID: 631-0C3-7D6)

Uma grande oportunidade para os usuários de virtualização de serviços sempre foi a engenharia de desempenho. A criação de um laboratório capaz de trabalhar com cargas equivalentes às de produção e realizar testes com elas é incrivelmente, ou mesmo proibitivamente, cara, e o acesso a sistemas de produção como mainframes e servidores de transações pode ser impossível. Isso faz com que os testes de desempenho sejam caros e não confiáveis, especialmente se você precisar pagar um terceiro para fornecer um número extremo de acessos de interação.

Há também a desvantagem do tempo e do custo de espera até que toda uma arquitetura de aplicativo seja montada antes de testar o desempenho. Os clientes que fazem uso da virtualização de serviços são capazes de testar cada componente específico, identificando muitos problemas de desempenho no início do ciclo de vida e reduzindo, ou mesmo eliminando, a quantidade de testes finais de desempenho necessários em um laboratório com um ambiente como o de produção. Com isso, a dependência do acesso a sistemas de terceiros pelas equipes de teste é praticamente eliminada por completo.

Na CA World 2016 [link do vídeo], Beth Johnson, SVP de lançamento e testes do SunTrust Bank, foi ao palco e apresentou [min 28:30] a maneira como o banco virtualiza os serviços de terceiros para preparar o ambiente de teste e a virtualização de dados. Entre os resultados observados pelo SunTrust Bank estão:

  • 53% dos requisitos com atraso agora são testados no tempo certo.
  • Ganhos de qualidade: 18.505 defeitos encontrados antes da produção, com uma taxa inferior a 1%. A meta era uma taxa de defeitos inferior a 4%.
  • 22% de economia de custos com serviços gerenciados em comparação com 2014. Isso envolveu US$ 1,97 milhão de economia graças à automação e US$ 900 mil de economia direta.
  • 73.302 horas economizadas graças a ferramentas e à automação.

No mesmo evento, a Oi Telecom do Brasil destacou o uso da virtualização de serviços e de testes de APIs, com os quais economizou US$ 300 mil graças à automação de seus testes de integração e regressão. Veja o caso da Oi Telecom em um blog aqui.

Em última análise, esses números e os diversos outros casos de sucesso de clientes consolidam o fato de que a virtualização de serviços é uma maneira de produzir aplicativos com melhor qualidade e mais rapidez, além de reduzir o custo de desenvolvimento e de teste de APIs, sistemas ou serviços de terceiros.

Com a virtualização de serviços, os desenvolvedores contam com seus próprios ambientes privados para o desenvolvimento de código. Eles não compartilham ambientes nem precisam esperar que outros sistemas de terceiros estejam disponíveis, e podem testar o desempenho sem incorrer em custos mais altos de parceiros externos.

Além disso, com a virtualização de serviços, pode acontecer o “shift left” de muitos dos testes em nível de componente, ou seja, eles podem ser antecipados no SDLC. Como cada componente pode ser testado individualmente em vez de esperar o conjunto completo, os testes de unidade e regressão podem ocorrer mais cedo e ser mais completos, para que os defeitos sejam identificados muito antes da integração ou do teste de aceitação do usuário. Quanto mais cedo forem encontrados erros, mais cedo os problemas serão corrigidos, evitando que se passe para outros projetos antes que os defeitos sejam identificados e os custos de correção sejam substancialmente maiores.

Fale com a CA

Chat
Sobre o quê você gostaria de conversar?
Suporte
Contato
Fale conosco 0800 771 6350
Fale conosco

Chat with CA

Just give us some brief information and we'll connect you to the right CA ExpertCA sales representative.

Our hours of availability are 8AM - 5PM CST.

All Fields Required

connecting

We're matching your request.

Unfortunately, we can't connect you to an agent. If you are not automatically redirected please click here.

  • {{message.agentProfile.name}} will be helping you today.

    View Profile


  • Transfered to {{message.agentProfile.name}}

    {{message.agentProfile.name}} joined the conversation

    {{message.agentProfile.name}} left the conversation

  • Your chat with {{$storage.chatSession.messages[$index - 1].agentProfile.name}} has ended.
    Thank you for your interest in CA.


    Rate Your Chat Experience.

    {{chat.statusMsg}}

agent is typing