Testes de Carga em Aplicações AJAX
Crie scripts de cenários de usuário para suas aplicações AJAX para examinar o comportamento do usuário
sob carga, identificar problemas e validar o desempenho.
Visão Geral do Conteúdo
Aqueles que já tiveram que lidar com testes de carga de aplicações web AJAX (Asynchronous JavaScript and XML – JavaScript Assíncrono e XML) aprenderam que isso pode ser frequentemente um desafio difícil de desenvolvimento e automação. Este artigo irá fornecer um contexto adicional sobre a técnica de desenvolvimento AJAX, as vantagens e desvantagens do AJAX, e uma abordagem recomendada para testes de desempenho AJAX.
Décadas atrás, páginas web e aplicações eram entediantes, mas extremamente leves, fáceis de manter, e sua testabilidade era fantástica comparada com os frameworks de aplicações web usados hoje. Os usuários frequentemente passavam mais tempo esperando em frente a uma tela em branco do que interagindo com essas aplicações web iniciais. Devido a essa usabilidade limitada, as empresas evitavam 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, que minimizaram o tempo que os usuários passam em frente a uma tela em branco esperando por uma página carregar. AJAX é uma abreviação e é mais que uma tecnologia porque consiste em HTML, CSS, JavaScript, XMLHttpRequest e uma linguagem de script do lado do servidor como PHP.
No início da era da internet, a popularidade de páginas web ricas em conteúdo e interativas era prejudicada porque não havia opção para atualizar uma página web sem recarregar a página inteira. À medida que novas tecnologias e técnicas evoluíram, o AJAX ajudou a fechar essa lacuna e introduziu o conceito de carregamento assíncrono de dados, permitindo que um usuário final interagisse com a página enquanto os dados eram carregados em segundo plano. Hoje, esse conceito é amplamente usado porque permite a implementação de aplicações web interativas e dinâmicas, o que ajuda a melhorar a experiência geral do usuário.
Uma típica requisição AJAX consiste no seguinte processo:
- O usuário navega pela página web ou aplicação web.
- O manipulador dessa página cria um objeto XMLHttpRequest.
- O objeto XMLHttpRequest solicita um documento do servidor.
- O servidor recupera os dados apropriados e os envia de volta.
- O XMLHttpRequest dispara um evento para notificar a página web ou aplicação que os dados chegaram.
- O manipulador processa e exibe os dados.
Atualização 2026: O comportamento assíncrono estilo AJAX ainda é amplamente utilizado em aplicações web modernas, especialmente junto com APIs e frameworks front-end dinâmicos. O teste de carga deve simular interações reais do navegador para capturar com precisão como requisições em segundo plano e ações do usuário se comportam sob carga.
Quais Desafios Acompanham Aplicações AJAX?
Existem algumas armadilhas comuns envolvidas em aplicações web dinâmicas baseadas em AJAX, que já são bem conhecidas na comunidade de desenvolvedores. Vamos abordar algumas das áreas mais problemáticas do AJAX abaixo.
Primeiro, como discutido acima, um dos componentes que compõem o AJAX é o JavaScript. Se você desativar o JavaScript no seu navegador, sua aplicação ou site ficará inutilizável. Há alguns anos, era comum que organizações bloqueassem navegadores para seus funcionários e desativassem o JavaScript por motivos de segurança. Esses dias já passaram, mas ainda é bom manter isso em mente, pois mudanças como essa podem ter consequências inesperadas.
Em segundo lugar, os dados carregados e exibidos dinamicamente não fazem parte da página, especialmente para páginas criadas como SPA (Single-page Application, ou Aplicação de Página Única). Se um mecanismo de busca indexou sua página web baseada em AJAX, o resultado, do ponto de vista de SEO, pode ser insatisfatório, pois grande parte do conteúdo não é visível para esses motores de busca.
Em terceiro lugar, as atualizações dinâmicas contínuas da página podem distrair usuários com baixa capacidade de atenção. Quanto mais elementos dinâmicos surgem nessas páginas, maior a chance de que seu usuário seja interrompido e não consiga terminar seu trabalho em tempo aceitável.
Finalmente, devido à comunicação cliente-servidor baseada em callbacks, a latência pode ser várias vezes maior comparada com outras tecnologias, como WebSockets, por exemplo. Os clientes web puxam atualizações de dados, o que também é um desafio para testes automatizados.
Teste de Carga AJAX: Técnicas de Simulação de Usuário
Especialistas em testes de carga e engenheiros de desempenho são responsáveis por escolher uma abordagem de simulação de usuário apropriada, que seja adequada para a aplicação sob teste e não gere esforço excessivo para você. Se escolher o método errado de simulação, a chance de não conseguir identificar pontos críticos de desempenho na sua aplicação é muito alta.
Existem dois métodos de simulação de usuário que discutiremos abaixo.
Simulação baseada em Protocolo de Requisições e Respostas
A maioria das ferramentas de teste open-source, bem como ferramentas comerciais de teste de carga, suportam esse procedimento. Você grava as interações cliente-servidor, e a ferramenta de teste captura todas as requisiçõ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 requerida no seu sistema back-end. Esteja ciente de que processamento ou interações do lado do cliente não fazem parte das suas medições de tempo de resposta ao 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 completas do mercado oferecem e suportam simulação de teste de carga baseada em navegador completo. O motivo é que os requisitos de recursos do sistema são maiores e implementar uma reprodução confiável pode ser um pouco difícil. Quando chega o momento de criar scripts de teste para simulações de usuários baseadas em navegador completo, a criação é parecida com a abordagem baseada em protocolo, porém, desta vez todas as interações do lado do cliente são gravadas e salvas.
O testador ou engenheiro navega pela página web ou aplicação web enquanto um gravador de scripts captura todas as interações no navegador. Durante a execução do teste, um navegador web headless executa as interações gravadas e responde aos callbacks do servidor como um usuário real. Este tipo de simulação é muito preciso e fornece métricas realistas de desempenho do front end.
O primeiro método de simulação que descrevemos é perfeito para aplicações web estáticas, tem uma baixa sobrecarga de simulação na sua máquina de injeção de carga e é frequentemente 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 a carga de aplicações ou páginas web baseadas em AJAX?
Teste de Carga AJAX em Ação
Qual é a melhor abordagem de teste de carga AJAX e como você pode validar sua decisão? Obviamente, é uma boa ideia começar com um pequeno experimento se você não tem certeza de qual abordagem fornecerá resultados precisos.
Para este cenário, converteremos duas implementações de teste de carga para uma aplicação de exemplo AJAX usando ajaxsearchpro.com. Esta aplicação demo é um motor de busca simples. Para este exemplo, vamos supor que um usuário digita um termo de busca no campo de busca e o conteúdo correspondente é exibido. Após a tecla enter ser pressionada ou o botão de busca clicado, a busca final será executada e os resultados correspondentes serão exibidos na tela. Abaixo está o gráfico waterfall capturado usando o Chrome DevTools. O tempo de resposta da requisição de busca por “carro” foi de 2,2 segundos.

Usamos as ferramentas de desenvolvedor dentro do navegador Chrome, que nos ajudaram a descobrir que ele executa essa requisição ao realizar a ação de busca: ajaxsearchpro.com/?s=car
Criamos um script de teste de carga baseado em protocolo e outro baseado em navegador, executamos ambos e comparamos as métricas de desempenho resultantes. O que você acha? Qual simulação de usuário é melhor para uma aplicação baseada em AJAX?
Script de Teste de Carga AJAX baseado em Protocolo
| Passos scriptados: | https://ajaxsearchpro.com/?s=car | Tempo de Resposta: | 594 ms |
| Abordagem de simulação: | Nível de protocolo, Chrome | Número de requisições: | 1 |
Gráfico Waterfall
Resumo da Execução do Script baseado em Protocolo
Script de Teste de Carga AJAX baseado em Navegador
| Passos scriptados: | https://ajaxsearchpro.com/?s=car | Tempo de Resposta: | 2,18 seg |
| Abordagem de simulação: | Nível de protocolo, Chrome | Número de requisições: | 32 |
Gráfico Waterfall
Resumo da Execução do Script baseado em Navegador
Comparação de Ambos os Métodos de Simulação
Devido ao seu padrão de comunicação assíncrono, aplicações baseadas em AJAX não podem ser automatizadas no nível de protocolo. Apenas simulações reais baseadas em navegador fornecem resultados precisos e geram uma carga realista em seu sistema back-end.
Considere um teste de carga da nossa aplicação demoajaxsearchpro.com com 100 usuários concorrentes e 10.000 buscas por hora. Se você decidir usar a simulação baseada em protocolo, você perderá 10000 x 31 = 310.000 requisições. Obviamente, isso levaria a resultados de teste de carga totalmente imprecisos.
Como a Solução LoadView Aborda o Teste de Carga com AJAX
LoadView, nossa plataforma de teste de carga baseada em nuvem, foi projetada para testar todas as aplicações modernas web 2.0, como AJAX, Flash, Angular, Knockout, HTML5, jQuery e muitas outras. Sua facilidade de uso é excepcional. 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 muitos outros.
Como mencionamos anteriormente, muitas soluções de teste de carga oferecem apenas uma abordagem de simulação de usuário baseada em protocolo, o que não é suficiente. Você pode estressar seu back-end com testes baseados em protocolo, mas uma parte significativa das requisições cliente-servidor e do processamento do lado do cliente ficam de fora. A plataforma LoadView oferece tudo 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 LoadView
1. Grave sua Aplicação AJAX
Você pode usar o EveryStep Web Recorder para navegar manualmente pela sua aplicação baseada em AJAX. O EveryStep irá gravar todas as ações e permitir que adicione temporizadores ou etapas de verificação. Uma vez que você tenha clicado pela sua aplicação e criado um script, pode realizar uma execução de teste com um único usuário ou fazer upload das ações gravadas para nossa plataforma e criar seu dispositivo de teste de carga.
2. Calibre
A atribuição das máquinas de injeção de carga muitas vezes é feita por tentativa e erro. Máquinas de geração de carga com problemas podem falsificar seus resultados de teste. O LoadView executa uma execução de teste com usuário único 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 da sua aplicação.
3. Plano de Execução
O volume de usuários normalmente varia ao longo de um típico dia útil. Abordamos essa necessidade com nossa funcionalidade de plano de execução. Ela oferece total flexibilidade para modelar cenários realistas de teste de carga.
4. Distribuição de Usuários Virtuais
LoadView permite que você escolha entre uma ampla variedade de máquinas de injeção de carga ao redor do mundo. Selecione aquelas que representam a localização usual dos seus clientes.
5. Execute o Teste e Veja Seus Resultados
Na última etapa, você pode iniciar a execução do teste de carga. Uma visualização online fornecerá insights em tempo real sobre como sua aplicação AJAX se comporta sob carga. Após a conclusão da execução do teste, você receberá um relatório detalhado com os principais indicadores de desempenho.
Considerando tudo, o LoadView atende a todos os requisitos de uma plataforma moderna de teste de carga, simplificando desafios de automação de teste e ajudando você a simular cenários reais de produção em suas aplicações de negócio complexas. Para mais informações sobre o LoadView, visite o site do LoadView. Para informações técnicas mais detalhadas e vídeos, 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 irão guiá-lo por toda a solução LoadView, desde a criação de scripts e configuração de testes, até execução e análise pós-teste. Tire todas as suas dúvidas sobre teste de carga!
Ferramentas Usadas
LoadView: Plataforma de teste de carga baseada em nuvem da Dotcom-Monitor
EveryStep Web Recorder: Ferramenta de scripting ponto-e-clique baseada na web.
Chrome Developer Tools: Ferramentas de desenvolvedor integradas ao navegador Chrome.
Para saber mais sobre a plataforma Dotcom-Monitor e soluções de monitoramento oferecidas, visite www.dotcom-monitor.com