Elimine o stress testando SLAs de desempenho no nível de componente durante o desenvolvimento

Os aplicativos compostos dos dias de hoje podem ter centenas de pontos de falha: vazamentos de memória, exceções de soquetes, conexões abertas. E esses problemas são potencializados quando colocamos em cena também serviços de terceiros e APIs. Isso sem falar no aumento da complexidade quando a solicitação tem que atravessar o emaranhado de um ESB complexo para chegar a um sistema ou banco de dados legado no backend, que nunca está disponível para testes.

Também não basta apenas fazer mais testes de unidade. Claro, eles podem ajudar os desenvolvedores a encontrar mais erros no código, mas não vão mostrar se os requisitos foram bem compreendidos ou se o aplicativo resistirá a condições que não foram previstas. É necessário fazer o teste de carga de cada componente e otimizá-lo antes que possa ser integrado ao sistema maior. Os sistemas se comportam de forma diferente quando são colocados sob uma grande carga e conectados ao restante da infraestrutura. Por exemplo, você pode constatar que um caso de teste que sempre funcionou com um usuário falhará com 100 usuários concorrentes reais se dois deles obtiverem as informações da conta do outro na camada intermediária.

A inclusão de orçamentos de desempenho no nível de componente permite que as equipes pratiquem a engenharia de desempenho de forma congruente com a realidade das modernas arquiteturas de aplicativos compostos. Cada serviço e componente deve atingir o objetivo de desempenho agregado de um aplicativo. Os tempos de resposta ou níveis de serviço esperados são “orçados” ou “decompostos” em cada componente. Os níveis de serviço de desempenho são verificados e trabalhados no nível de componente. Mas COMO?

É aí que uma estrutura de teste moderna, como o CA DevTest, entra em jogo. Ferramentas como o CA DevTest combinam a virtualização de serviços e um sistema de testes multiprotocolo baseado em Java em uma única solução. Os mesmos casos de teste que sua equipe criar para testes de unidade, funcionais e de regressão poderão ser usados ​​para testes de carga e stress que podem ser executados continuamente. As dependências poderão ser virtualizadas usando uma carga de condições reais com uma eficiência incrível e sem a necessidade de comprar mais hardware para testes.

Conforme mostrado no exemplo abaixo, de um grande cliente do setor de telecomunicações, testar o desempenho de uma solução quase concluída não é suficiente. Na primeira linha, vemos a solução concluída (composta pelas etapas de pedido, pesquisa e preços) retornando com um tempo de resposta fraco, de 4 segundos, muito superior ao SLA de 2,1 segundos. O que acontece depois? As equipes geralmente tentam resolver o problema com mais hardware, talvez instalando mais servidores, aumentando a memória ou o armazenamento etc., no laboratório de teste, mas na maioria das vezes elas não conseguem resolver o problema raiz.

Na linha do tempo inferior está o exemplo “depois”, mostrando como a equipe decompôs o SLA, dando a cada parte da solução seu próprio “orçamento de desempenho” a ser ajustado no nível de componente. O CA DevTest permite que as equipes isolem cada um desses componentes virtualizando os ambientes de laboratório circundantes (e os tempos de resposta esperados ou observados) de outros componentes do sistema. Usando esse método, você poderá descobrir, por exemplo, se o aplicativo de preços está ultrapassando o tempo em relação à solução geral. Com isso, como você definiu um orçamento do tempo de resposta, poderá tomar as medidas corretivas para ajustar cada componente de forma isolada, com mais rapidez e um custo de infraestrutura muito menor.

A virtualização de serviços captura e cria versões realistas, altamente escaláveis ​​e responsivas de serviços virtuais para qualquer sistema dependente ao qual o laboratório de desempenho precisa se conectar, utilizando qualquer ferramenta atualmente usada para testes de carga, sem a necessidade de programação ou da reconfiguração de novo hardware para representar esses sistemas no laboratório.

Uma vez que um ambiente de serviço virtual (ou VSE, de virtual service environment) tenha sido criado, qualquer pessoa do departamento de desenvolvimento ou de testes poderá ter acesso ao serviço virtual para usar sempre que precisar. Não é necessário nenhum hardware novo, nenhum pedido extra de acesso, nenhuma espera para iniciar o teste ou para que essas diversas equipes tenham uma maneira atualizada e realista de simular o restante do aplicativo de forma que os testes de desempenho e carga possam ser realizados no nível de componente—como se esse componente estivesse conectado ao restante da solução.

No CA Service Virtualization, podem ser configurados “companions” relacionados à Think Scale, Batch Response, e Recurring Think Time Scale do serviço virtual para variar seu desempenho ao longo de um período. O Think Time Spec especifica a latência da resposta. Isso pode ser dimensionado usando Think Time Scale durante a implantação ou usando “companions”. Valores altos de Think Time Spec ou Think Time Scale podem simular lentidão na rede.

A execução de milhares de testes de desempenho exige muitos dados de teste. Você precisa não apenas de muitos dados, mas também que esses dados contenham informações como números de cartões de crédito, números de identidade e outros dados pessoais. O uso de dados de produção para testes é caro devido à necessidade de mascaramento, e sua criação pode ser ineficiente. Você também corre o risco de expor dados sigilosos, e normalmente esses dados fornecem uma cobertura baixa (de 10% a 20%).

A geração de dados de teste sintéticos reduz em 50% o tempo perdido na busca ou na criação de dados de teste manualmente. Ela também permite que você aprimore os conjuntos de dados de teste existentes ou crie dados ausentes. Além disso, os dados sintéticos, orientados por requisitos, permitem que você faça o “shift left”, identificando defeitos com mais antecedência e melhorando a qualidade dos testes.

Os dados de teste sintéticos podem ser injetados diretamente em um serviço virtual. Isso também elimina a necessidade de criação ou manutenção manual de dados para um serviço virtual. A integridade referencial dos dados é mantida por meio da criação diretamente a partir de uma especificação da API (por exemplo, WSDL), o que contribui para ambientes mais estáveis ​​e livres de dependências entre sistemas. Além disso, podem ser criados ambientes de teste sob demanda sem risco de violar a conformidade, porque nenhum dado de produção é exposto.

Em resumo, o desempenho é tão importante quanto a funcionalidade no mundo atual, que nunca desliga. Os testes de desempenho no nível de componente, feitos antes da integração à produção, proporcionam maior confiança durante a integração e os testes de aceitação do usuário. Não há outra maneira de garantir que o aplicativo realmente execute um fluxo de trabalho complexo e atenda a seus requisitos comerciais. Os serviços virtualizados, os sistemas de teste multiprotocolo e os dados sintéticos fornecem às equipes de DevTest as ferramentas de que precisam para executar e dimensionar testes de desempenho no nível de componente. A CA Technologies oferece diversas das ferramentas necessárias para automatizar e dimensionar o teste de desempenho como parte de um trabalho de teste contínuo. Sua capacidade foi reforçada com a aquisição da BlazeMeter.

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