Teste de carga aplicações AJAX

Crie scripts de cenário de usuário para seus aplicativos AJAX para examinar o comportamento do usuário
sob carga, identificar problemas e validar o desempenho.

Visão geral do conteúdo

 


 

O que é AJAX?

 

Aqueles de vocês que tiveram que lidar com testes de carga de aplicações web AJAX (Asnchronous JavaScript e XML) aprenderam que isso pode muitas vezes ser um desafio difícil de desenvolvimento e automação. Este artigo fornecerá alguns antecedentes adicionais sobre a técnica de desenvolvimento AJAX, as vantagens e desvantagens do AJAX e uma abordagem recomendada de teste de desempenho AJAX.

Décadas atrás, páginas da Web e aplicativos eram chatos, mas extremamente leves, fáceis de manter, e sua testabilidade era fantástica em comparação com as estruturas de aplicativos da Web usadas hoje. Os usuários muitas vezes passavam mais tempo esperando em frente a uma tela branca do que interagindo com esses primeiros aplicativos da Web. Devido a essa usabilidade limitada, as empresas evitaram gastar dinheiro em novos serviços baseados na Web.

A partir de 2005, uma nova tecnologia chamada AJAX permitiu que os desenvolvedores construíssem sites modernos, o que minimizava o tempo que os usuários passavam em frente a uma tela em branco esperando uma página carregar. AJAX é uma abreviação para e é mais do que uma tecnologia porque consiste em HTML, CSS, JavaScript, XMLHttpRequest e uma linguagem de scripting do lado do servidor, como PHP.

No início da era da Internet, a popularidade das páginas web ricas e interativas de conteúdo era ruim porque não havia opção de atualizar uma página da Web sem recarregar toda a página. À medida que novas tecnologias e técnicas evoluíram, o AJAX ajudou a fechar essa lacuna e introduziu o conceito assíncrono de carga de dados, permitindo que um usuário final interaja com a página enquanto os dados são carregados em segundo plano. Hoje, esse conceito é amplamente utilizado porque permite a implementação de aplicativos web interativos e dinâmicos, o que ajuda a melhorar a experiência geral do usuário.

 

Uma solicitação típica do AJAX consiste no seguinte processo:

  1. O usuário clica na página da Web ou aplicativo web.
  2. O manipulador desta página web cria um objeto XMLHttpRequest.
  3. O objeto XMLHttpRequest solicita um documento do servidor.
  4. O Servidor recupera dados apropriados e os envia de volta.
  5. XMLHttpRequest dispara um evento para notificar a página da Web ou aplicativo que os dados chegaram.
  6. O manipulador processa e exibe os dados.

 


 

Quais desafios vêm com aplicações AJAX?

 

Existem algumas armadilhas comuns envolvidas em aplicativos web dinâmicos baseados em AJAX, que já são bem conhecidos na comunidade de desenvolvedores. Vamos cobrir algumas das áreas mais problemáticas do AJAX abaixo.

Primeiro, como discutimos acima, um dos componentes que compõem o AJAX é o JavaScript. Se você desativar o JavaScript no seu navegador, ele tornará seu aplicativo ou site inútil. Vários anos atrás, era comum que as organizações trancaram navegadores para seus funcionários e desativaram o JavaScript para fins de segurança. Esses dias se foram, mas ainda é bom ter isso em mente, pois mesmo mudanças como essas podem ter consequências não intencionais.

Em segundo lugar, os dados carregados e exibidos dinamicamente não fazem parte da página, especialmente para páginas criadas como um SPA (Aplicativo de página única) Se um mecanismo de pesquisa indexou sua página web baseada no AJAX, o resultado, do ponto de vista do SEO, pode ser insatisfatório porque uma grande extensão do conteúdo não é visível para esses motores de indexação.

Em terceiro lugar, as atualizações dinâmicas de página em andamento podem perturbar os usuários com um baixo tempo de atenção. Quanto mais elementos dinâmicos aparecerem nessas páginas, maior é a chance de que seu usuário seja interrompido e não possa terminar seu trabalho dentro do tempo aceitável.

Finalmente, devido à comunicação cliente-servidor baseada em callback, a latência pode ser várias vezes maior em comparação com outras tecnologias, como o WebSockets, por exemplo. Os clientes da Web puxam para atualizações de dados, o que também é um desafio para testes automatizados.

 


 

Teste de carga AJAX: Técnicas de simulação do usuário

 

Especialistas em testes de carga e engenheiros de desempenho são responsáveis por escolher uma abordagem adequada de simulação de usuário, que é adequada para sua aplicação em teste e não gera muito esforço de sua parte. Se você escolher o método de simulação errado, a chance é muito alta de que você não pode enfrentar hotspots de desempenho em sua aplicação.

Existem dois métodos de simulação de usuário que discutiremos abaixo.

Simulação de solicitações e respostas baseadas em protocolos

A maioria das ferramentas de teste de código aberto, bem como ferramentas de teste de carga comercial suportam esse procedimento. Você grava interações cliente-servidor e a ferramenta de teste captura todas as solicitações e respostas em um script de teste. Após a parametrização de dados dinâmicos, como IDs de sessão ou dados de entrada de teste, os scripts podem ser usados para simular a carga necessária em seu sistema back-end. Esteja ciente de que o processamento ou as interações do lado do cliente não fazem parte das medições de tempo de resposta do nível de protocolo.

Simulação completa baseada em navegador de interações reais do usuário

Apenas algumas das soluções de teste de carga mais abrangentes do mercado hoje fornecem e suportam simulação completa de teste de carga baseada em navegador. A razão para isso é que os requisitos de recursos do sistema são mais elevados e implementar um replay confiável pode ser um pouco difícil. Quando chega a hora de criar scripts de teste para simulações completas de usuários baseadas em navegador, a criação é como a abordagem baseada em protocolo, no entanto, desta vez todas as interações do lado do cliente são gravadas e salvas.

O testador ou engenheiro navega pela página da Web ou aplicativo da Web enquanto um gravador de script captura todas as interações no navegador da Web. Durante a execução do teste, um navegador web sem cabeça executa as interações gravadas e responde a retornos de chamadas do servidor como um usuário real. Este tipo de simulação de usuário é muito preciso e fornece métricas realistas de desempenho front-end.

O primeiro método de simulação que descrevemos é perfeito para aplicações estáticas da Web, tem uma baixa sobrecarga de simulação em sua máquina de injeção de carga e muitas vezes é fácil de implementar. A técnica posterior fornece tempos de resposta de ponta a ponta precisos, mas sua sobrecarga no servidor de teste de carga é muito maior. Então, como você escolheria o melhor método de simulação de usuário para testar aplicativos ou páginas da Web baseados em AJAX?

 


 

Teste de carga AJAX em ação

 

Qual é a melhor abordagem de teste de carga do AJAX e como você pode validar sua decisão? Obviamente, é uma boa ideia começar um pequeno experimento se você não tiver certeza de que abordagem forneceria resultados precisos.

Para este cenário, cobriremos duas implementações de teste de carga para um aplicativo de amostra AJAX usando ajaxsearchpro.com. Este aplicativo de demonstração é um simples mecanismo de busca. Para este exemplo, vamos supor que um usuário digite um termo de pesquisa no campo de pesquisa e o conteúdo correspondente seja exibido. Depois que a tecla enter for acionada ou o botão de pesquisa for clicado, a pesquisa final será executada e os resultados de pesquisa correspondentes serão exibidos na tela. Abaixo está o gráfico de cachoeira capturado usando o navegador Chrome DevTools. O tempo de resposta da solicitação de pesquisa do “carro” foi de 2,2 segundos.

 

navegador chrome gráfico de cachoeira

 

Usamos as ferramentas de desenvolvedor dentro do navegador Chrome, o que nos ajudou a descobrir que ele executa essa solicitação ao executar a ação de pesquisa: ajaxsearchpro.com/?s=car

Criamos um script de teste de carga baseado em protocolo e baseado em navegador, executamos ambos e comparamos as métricas de desempenho resultantes. O que você acha? Qual simulação de usuário é a melhor para um aplicativo baseado em AJAX?

 

Script de teste de carga AJAX baseado em protocolo

 

Passos roteirizado: https://ajaxsearchpro.com/?s=car tempo de resposta: 594 ms
Abordagem de simulação: Nível de protocolo, Chrome Número de solicitações: 1

 

Gráfico de Cachoeira
gráfico de cachoeira ajax baseado protocolo

 

Resumo da execução do script baseado em protocolo
execução de script ajax baseado em protocolo

 

Script de teste de carga AJAX baseado em navegador

 

Passos roteirizado: https://ajaxsearchpro.com/?s=car tempo de resposta: 2,18 seg
Abordagem de simulação: Nível de protocolo, Chrome Número de solicitações: 32

 

Gráfico de Cachoeira
gráfico de cachoeira ajax baseado navegador

 

Resumo da execução do script baseado em protocolo
execução de script ajax baseado em navegador

 

Comparação de ambos os métodos de simulação

 

Devido ao seu assincronous padrão de comunicação, AJAXaplicações baseadasnão podem serautomatizadas no nível de protocolo. Apenas real browsersimulação baseada fornece resultados precisos e gera uma carga realista em seu sistema back-end.

Considere um teste de carga do nosso aplicativo de demonstração ajaxsearchpro.com com 100 usuários simultâneos e 10,

Mil buscas por hora. Se você decidir usar a simulação baseada em protocolo, você vontade perder 10000 x 31 = 310.000 solicitações. Obviamente, isso levaria a resultados de testes de carga totalmente imprecisos.

 


 

Como a solução LoadView aborda testes de carga com o AJAX

 

LoadView, nossa plataforma de testes de carga baseada em nuvem, foi projetada para testar todos os aplicativos modernos da Web 2.0, como AJAX, Flash, Angular, Knockout, HTML5, jQuery e muito mais. Sua facilidade de uso é excelente. Você pode gravar cenários completos baseados em navegador e simular mais de 40 dispositivos móveis ou baseados em navegador, como Internet Explorer, Chrome, iPhone, Samsung, Blackberry e muito mais.

Como mencionamos anteriormente, muitas soluções de teste de carga fornecem apenas uma abordagem de simulação de usuário baseada em protocolo, o que não é suficiente. Você pode enfatizar seu back-end com testes de nível de protocolo, mas uma parte significativa das solicitações do servidor cliente e do processamento do lado do cliente é deixada de fora. A plataforma LoadView oferece tudo o que você precisa quando se trata de simulação precisa do usuário.

 

Cinco passos para executar seus testes de carga baseados em AJAX com o LoadView

 

1. Regisso aplicativo AJAX
Você pode usar o EveryStep Web Recorder para navegar manualmente através de seu aplicativo baseado em AJAX. EveryStep gravará todas as ações e permitirá que você adicione etapas de temporizador ou verificação. Depois de clicar através do aplicativo e criar um script, você pode executar um único teste de usuário ou carregar as ações gravadas em nossa plataforma e criar seu dispositivo de teste de carga.

2. Calibrar
Atribuição de máquinas de injeção de carga é muitas vezes adivinhação. Máquinas de geração de carga insalubres falsificarão seus resultados de teste. O LoadView executa um único teste de usuário do seu dispositivo e calcula o número máximo de usuários por máquina de injeção de carga. Esta etapa evita que uma máquina sobrecarregada impacte negativamente os tempos de resposta do seu aplicativo.

3. Plano de Execução
O volume do usuário muitas vezes varia ao longo de um dia útil típico. Abordamos essa necessidade com nosso recurso de plano de execução. Ele lhe dá total flexibilidade para modelar cenários realistas de teste de carga.

4. Distribuição virtual do usuário
O LoadView permite que você escolha entre uma ampla gama de máquinas de injeção de carga em todo o mundo. Selecione esses, que representam a localização usual de seus clientes.

5. Execute o teste e visualize seus resultados
Nesta última etapa você pode iniciar a execução do teste de carga. Uma exibição on-line lhe dará informações em tempo real sobre como seu aplicativo AJAX funciona sob carga. Uma vez concluída a execução do teste, você receberá um relatório detalhado com os indicadores de desempenho mais importantes.

 

Considerando tudo, o LoadView preenche todos os requisitos de uma moderna plataforma de testes de carga simplificando desafios de automação de testes e ajudando você a simular a produção real, como cenários em seus aplicativos de negócios complexos. Para obter mais informações sobre o LoadView, visite o site do LoadView. Para obter informações técnicas e vídeos mais aprofundados, visite nossa Base de Conhecimento.

Interessado em uma demonstração ao vivo? Agende uma demonstração com um de nossos engenheiros de desempenho. Nossos engenheiros de desempenho o acompanharão por toda a solução LoadView, desde o script e a configuração de um teste de carga, até a execução e análise pós-teste. Responda todas as suas perguntas de teste de carga!

 


 

Ferramentas usadas

 

LoadView: Plataforma de teste de carga baseada em nuvem do Dotcom-Monitor

EveryStep Web Recorder: Ferramenta de scripting baseada na Web e clique em script.

Ferramentas de desenvolvedores do Chrome: Ferramentas de desenvolvedor incorporadas ao navegador Chrome.

Para saber mais sobre a plataforma Dotcom-Monitor e as soluções de monitoramento oferecidas, visite www.dotcom-monitor.com