Tecnologias de teste de carga

Os seguintes protocolos são apoiados nativamente pela plataforma de testes LoadView.

Escolha uma das tecnologias listadas abaixo para saber mais.

Teste de carga AJAX

Há mais de 20 anos, não havia como atualizar uma página da Web sem exibir uma tela branca chata enquanto recarregava toda a página. Felizmente, o AJAX fechou essa lacuna e introduziu o conceito assíncrono de carga de dados, que permite ao usuário interagir com a página enquanto os dados são carregados em segundo plano. Hoje em dia, esse conceito é a base de nossos aplicativos web ricos e interativos de conteúdo.

AJAX é uma abreviação para JavaScript e XML assíncronas e é mais do que uma tecnologia porque consiste em HTML, CSS, JavaScript, XMLHttpRequest e uma linguagem de scripting do lado do servidor, como PHP. Uma solicitação AJAX consiste nas seguintes 6 etapas:

  1. Uma página da Web dispara um evento de mudança de conteúdo
  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. O XMLHttpRequest dispara um evento para notificar a página da Web que os dados chegaram
  6. O manipulador processa os dados e os exibe

O outro lado da perspectiva de um engenheiro de desempenho é que a automação de uma comunicação comosíncrona é complicada. Considere testar a carga de um aplicativo web que tem que servir 100 usuários simultâneos e 10000 pesquisas por hora. Você tem a tarefa de validar se o tempo médio de resposta deste aplicativo estiver dentro dos limites de 3 segundos.

Basicamente, você tem as duas opções a seguir para um cenário de teste de carga:

 

  1. Simulação baseada em protocolo
  2. Simulação baseada em navegador

Vamos comparar o nível de protocolo com a simulação de carga de nível do navegador. A tabela abaixo reflete os resultados deste experimento:

descrição

Captura de tela

Simulação de nível de protocolo

1 Solicitação cliente-servidor

0,52 tempo de carga de 0,52 seg

Simulação de protocolo AJAX

Simulação de nível do navegador

32 Solicitações de cliente-servidor

2,18 segundos de carga

Simulação do navegador AJAX
Se você decidir usar a simulação baseada em protocolo, você perderia 10000 x 31 = 310.000 solicitações e reportaria tempos de resposta incorretos porque uma enorme proporção de seus tempos de resposta são perdidos no lado do cliente. Obviamente, isso levaria a resultados de testes de carga totalmente imprecisos.

Teste de carga angularJS

Os desenvolvedores front-end adoram o AngularJS porque ajuda a simplificar códigos complexos. Esta estrutura simples e poderosa resolve os problemas de manipulação do DOM propensos a erros com sua descrição declarativa do fluxo de interface do usuário. AngularJS é um JavaScript Framework de código aberto e pode ser adicionado a uma página com uma tag de script simples, como:

<script src=”https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js”>
</script>

Ele suporta a separação da preocupação e traz elementos dinâmicos para HTML estático. Como qualquer outro aplicativo, também os sistemas baseados em AngularJS podem ser rapidamente impactados por problemas de desempenho. Aqui estão alguns passos que você pode dar para acelerar as coisas no seu próximo projeto de teste de carga NG:

  • Reduza o número de operações do DOM ao mínimo
  • Reduza os elementos totais da sua árvore DOM
  • Use o perfil do Chrome para verificar a pegada de memória
  • Reduza as atividades em seu observador

LoadView oferece tudo o que você precisa quando se trata de testes precisos de carga AngularJS.

O exemplo abaixo usa uma entrada de mensagem baseada no AngularJS. A captura de tela abaixo contém seu código-fonte no lado esquerdo e o aplicativo no lado direito.

Entrada de mensagem AngularJS

descrição

Captura de tela

Script de teste de registro para aplicação angularJS

Grave o script AngularJS com o EveryStep Web Recorder

Script de teste de registro do AngularJS

Teste de carga de design para aplicação angularJS

Configure o Plano de Execução de Teste

Teste de carga de design angularJS

Teste de carga flash

Flash é um software de autoria e é usado para criar animações baseadas em gráficos vetoriais. É uma tecnologia independente de plataforma e é executado em qualquer máquina onde um Flash player é instalado. Devido a preocupações com a segurança, muitas vezes as empresas proíbem o Flash de sua infraestrutura. No entanto, você pode construir aplicações agradáveis com flash, já que a sobrecarga é baixa. No entanto, a pequena desvantagem do Flash é que ele não será executado sem um plugin de flash player ativado.

LoadView oferece tudo o que você precisa quando se trata de testes precisos de carga FLASH. Usei uma calculadora simples baseada em Flash: https://www.dotcom-tools.com/samples/Calculator.html. Meu cenário de teste de carga executa um cálculo simples 1 + 2 = 3.

descrição

Captura de tela

Grave um script de teste para um aplicativo flash

Grave o roteiro com o EveryStep Web Recorder

Adicionar verificação

Executar e carregar o script

Flash Grave um script de teste

Projete um teste de carga para uma aplicação flash

Configure o Plano de Execução de Teste

Distribua seu usuário virtual em injetores de carga localizados em todo o mundo

Design flash um teste de carga

Execute o teste de carga para a aplicação flash

Veja como o LoadView aumenta a carga e tome nota dos tempos de resposta do aplicativo Flash durante o teste de carga.

Flash Execute um teste de carga

Análise de resultados para o aplicativo Flash

Uma vez terminado o teste, o LoadView fornecerá um relatório detalhado, vídeos e informações valiosas, como gráficos de cachoeira ou vídeos.

Compartilhe essas sua equipe de dev para identificar a causa raiz dos hotspots.

Análise de resultados flash

Questão conhecida

O script de um aplicativo baseado em Flash funciona apenas com o Internet Explorer. Você receberá o seguinte erro se usar o Chrome ou qualquer outro navegador para sua gravação.

Problema flash

Teste de carga HTML5

HTML5 é a quinta versão do HTML, padrão, que ainda é a espinha dorsal de nossas aplicações web. Os ingredientes do HTLM5 são:

  • HTML que fornece a estrutura
  • CSS que cuida da apresentação
  • JavaScript que faz as coisas acontecerem

HTML5 oferece tudo o que é necessário para implementar aplicativos bonitos em execução em seu navegador sem a necessidade de quaisquer plugins. Esses aplicativos são conhecidos como aplicativos baseados em plataformas cruzadas. Eles são executados em qualquer dispositivo se o seu navegador suportar HTML5. A seguir, um exemplo de teste de carga HTML5 com o LoadView.

descrição

Captura de tela

Grave um script de teste para um aplicativo HTML5

Grave o roteiro com o EveryStep Web Recorder

Adicionar verificação

Executar e carregar o script

HTML5 Registo um Script de Teste

Projete um teste de carga para um aplicativo HTML5

Configure o plano de execução do teste

Distribua seu usuário virtual em injetores de carga localizados em todo o mundo

DESIGN HTML5 um teste de carga

Execute um teste de carga para um aplicativo HTML5

À medida que o LoadView aumenta a carga, visualize os tempos de resposta do aplicativo HTML5 e o comportamento durante a execução do teste de carga.

HTML5 execute um teste de carga

Análise de resultados para um aplicativo HTML5

Uma vez terminado o teste, o LoadView fornecerá um relatório detalhado, vídeos e informações valiosas, como gráficos de cachoeira ou vídeos.

Compartilhe esses resultados com sua equipe de dev para identificar a causa raiz dos hotspots.

Análise de resultados HTML5

Teste de carga JavaScript

JavaScript é a principal linguagem de programação da web. Ele é usado para trazer recursos interativos para a web e constrói a base para muitas estruturas, como AngularJS ou AJAX. Os hackers recentemente usaram o JavaScript para executar comandos críticos na máquina das vítimas. Você pode desativar a execução do JavaScript no seu navegador, mas isso bloqueará muitos sites no seu computador.

Existem algumas limitações de desempenho conhecidas quando se trata de JavaScript. É uma boa ideia investigar aqueles no seu próximo teste de carga baseado em JavaScript. Aqui estão algumas coisas que você pode fazer para facilitar o processo de scripting:

 

  • Reduzir a atividade em loops
    • Não faça cálculos dentro de seus loops porque isso é executado muitas vezes e impacta os tempos de resposta.
  • Reduza o acesso ao DOM
    • O acesso ao DOM é lento. Crie uma variável local, atribua o valor necessário e use-o para suas operações.
  • Reduzir o tamanho do DOM
    • Manter o tamanho do DOM pequeno acelerará os tempos de carga da página e o acesso do DOM via JavaScript.
  • Atrasar o carregamento do JavaScript
    • Carregue o script no final da página porque ele bloqueará a renderização da página até que o download tenha terminado. Alternativamente, você também pode usar a tag “defer=true” carrega o script após a renderização da sua página.

LoadView oferece tudo o que você precisa quando se trata de testes precisos de carga JavaScript. O exemplo abaixo ilustra como o teste de carga JavaScript é fácil com o LoadView.

descrição

Captura de tela

Grave script de teste para sua aplicação

Grave o roteiro com o EveryStep Web Recorder

Executar e carregar o script

Script de teste de registro javascript

Teste de carga de design para sua aplicação

Configure o Plano de Execução de Teste

Distribua seu usuário virtual em injetores de carga localizados em todo o mundo.

Teste de carga de design javascript

Execute o teste de carga para sua aplicação

À medida que o LoadView aumenta a carga, visualize os tempos de resposta do aplicativo JavaScript e o comportamento durante a execução do teste de carga.

Teste de carga de execução do JavaScript

Análise de resultados para sua aplicação

Uma vez que a execução do teste tenha terminado, o LoadView fornecerá um relatório detalhado, vídeos e informações valiosas, como gráficos de cachoeira ou vídeos

Compartilhe esses resultados com sua equipe de dev para identificar a causa raiz dos hotspots.

Resultados javascript
Análise de resultados javascript

Teste de carga JSON

JSON é uma abreviação para JavaScript Object Notation e é bastante semelhante ao XML. É um formato de dados muito comum e usado para todo tipo de comunicação navegador-servidor. Simplicidade, amplo suporte à linguagem de programação e baixa sobrecarga são a razão de sua popularidade.

Alguns hotspots de desempenho específicos JSON incluem o seguinte:

  • Download de arquivos grandes leva muito tempo
  • A utilização da memória é muito alta

Em comparação com o SOAP XML, a pegada do JSON é mais baixa e é mais fácil de ler. O exemplo abaixo ilustra os testes de carga JSON com o LoadView.

Usamos json na funcionalidade de pesquisa em nosso site. Este é o código-fonte JSON correspondente:

Código Fonte JSON

Esta é a funcionalidade de pesquisa que usaremos na vitrine de testes de carga JSON:

Funcionalidade JSON

Usamos ferramentas de desenvolvedor do Chrome para identificar a URL de solicitação usada neste formulário de pesquisa.

Ferramenta JSON Chrome Dev
Você pode facilmente configurar uma tarefa baseada em HTTP que executa essa solicitação de pesquisa usando a URL https://www.dotcom-monitor.com/?s=load+test,mas isso não enfatizará o recurso de dica de pesquisa JSON. Portanto, decidi configurar um teste real baseado em navegador usando nosso EveryStep Web Recorder para gravar a pesquisa e usá-la no meu teste de carga.

descrição

Captura de tela

Script de teste de gravação para aplicação JSON

O teste de carga começa com a gravação de um script, usando o EveryStep Web Recorder.

JSON Record Test Script

Teste de carga de design para aplicação JSON

Nesta etapa, você pode configurar seu plano de teste e locais.

Teste de carga de design JSON

Execute o teste de carga para aplicação JSON

À medida que o LoadView aumenta a carga, visualize os tempos de resposta do aplicativo JSON e o comportamento durante a execução do teste de carga.

Teste de carga json run

Análise de resultados para aplicação JSON

O LoadView produz um gráfico de cachoeiras e um relatório que pode ser compartilhado com os desenvolvedores para identificar problemas e implementar mudanças.

Análise de Resultados JSON

Teste de carga de aplicativo de uma página

Os SPAs (Single-Page Applications, aplicativos de página única) se comportam mais como um aplicativo de desktop porque reescrevem dinamicamente a página atual em vez de carregar novas páginas inteiras de um servidor. A experiência do usuário em tais SPAs é muitas vezes melhor, uma vez que há menos interrupções. Os tempos iniciais de carga de SPAs são tipicamente mais longos porque as estruturas devem ser baixadas. SOAP, JSON ou AJAX são frequentemente usados para comunicação entre cliente e servidor spa.

Algumas das questões de desempenho mais ardentes dos SPAs incluem:

  • O tempo inicial de carga da página é longo
    • Reduza o tamanho de suas estruturas
  • Vazamentos de memória
    • Revise a pegada de memória do seu SPA regularmente
  • Apresentação de dados
    • Retardar o carregamento de um objeto ou dados (carregamento preguiçoso de dados)

O LoadView oferece tudo o que você precisa quando se trata de testes precisos de carga SPA. Usamos o seguinte aplicativo para esta exibição de teste de carga: https://www.welcometofillory.com/map

descrição

Captura de tela

Gravar script de teste para aplicação de uma única página
Script de teste de registro de SPA

Teste de carga de design para aplicação de uma única página

Teste de carga de design SPA
Execute o teste de carga para aplicação de uma única página

À medida que o LoadView aumenta a carga, visualize os tempos de resposta do aplicativo e o comportamento durante a execução do teste de carga.

Teste de carga de execução do SPA

Análise de resultados para seu aplicativo de página única

Análise de resultados do SPA

Como mencionado anteriormente, o tempo inicial de carregamento de página para SPAs é muitas vezes bastante longo. Em nossa vitrine, o download desta página inicial levou mais de 35 segundos e o tamanho da página é de mais de 95 MB. Obviamente, este aplicativo precisa de alguns ajustes.

Teste de carga de SABÃO

O Protocolo simples de acesso a objetos (SOAP) é muito mais do que uma linguagem de programação. Ao contrário do JavaScript, que é uma linguagem de desenvolvimento, o SOAP permite a comunicação em qualquer dispositivo e sistema operacional. O bloco básico de construção do SOAP é XML. A SOAP introduziu um formato para envio e recebimento de mensagens.

Alguns dos hotspots de desempenho mais populares relacionados ao SOAP são os seguintes:

  • Aplicativo tagarela
  • Estratégia errada ou sem cache
  • Serialização causa sobrecarga alta
  • Nenhuma validação de entrada no processamento do método web do lado do consumidor ou ineficiente

Os serviços web baseados em SABÃO fornecem uma descrição de seus serviços no WSDL. Esta linguagem de descrição do serviço web pode ser usada para manualizar nossos testes automatizados. Em nossa vitrine abaixo, vou demonstrar como configurar testes de carga de um aplicativo baseado em SOAP.

Este simples CurrencyConverter será usado em nossa configuração de teste de carga de amostra:

https://www.webservicex.net/CurrencyConvertor.asmx?WSDL

Conversor de moeda soap

As etapas a seguir descrevem como realizar testes de carga de SABÃO com o LoadView.

descrição

Captura de tela

Crie o script de teste para sua aplicação

Crie uma tarefa HTTP e adicione os detalhes da solicitação POST.

Soap Criar script
Script de teste de SABÃO

Projete o teste de carga para sua aplicação

Teste de carga de projeto de sabão

Execute o teste de carga para sua aplicação

À medida que o LoadView aumenta a carga, visualize os tempos de resposta do aplicativo SOAP e o comportamento durante a execução do teste de carga.

Teste de carga de execução de sabão

Análise de Resultados para sua Aplicação

Resultados do SABÃO
Análise de Resultados de SABÃO

Teste de carga REST da API da Web

REST é um padrão de comunicação amplamente utilizado que significa Transferência de Estado Representacional. Ele estrutura dados em formato legível por máquina e faz uso de XML ou JSON. Ao contrário do SOAP, que é altamente orientado para funções, REST muito orientado para dados. Os serviços RESTful API e RESTful são dois termos frequentemente usados nesta disciplina, mas não significam nada mais do que serviços REST.

O teste de desempenho dos serviços REST é sobre enviar dados para serviços ou verificar a resposta dele. Alguns hotspots de desempenho rest mais comuns incluem o seguinte:

  • Serviços de chatty
  • Muito ou não dados necessários transmitidos
  • Sem reutilização de conexões TCP

As comunidades de desenvolvedores não costumam concordar se implementam serviços web em SOAP ou REST. Do ponto de vista de desempenho, os serviços baseados em REST são projetados para velocidade. A sobrecarga do protocolo é menor e não é necessária uma análise XML. O estudo de caso abaixo ilustra como os testes de REST da Web API podem ser feitos com o LoadView.

descrição

Captura de tela

Crie o script de teste para o seu serviço de descanso

Crie uma tarefa HTTP

Adicione os detalhes da solicitação GET

Adicione a validação da palavra-chave

REST Criar script de teste

Projete o teste de carga para sua aplicação

Configure o plano de teste e execução.

Teste de carga de design REST

Execute o teste de carga para sua aplicação

Observe a curva de carga enquanto o teste é iniciado.

Teste de carga de execução de descanso

Análise de Resultados para sua Aplicação

Analise os resultados e compartilhe com sua equipe de Dev.

Análise de resultados de DESCANSO

Testes de carga do WebSockets

O WebSockets foi projetado para permitir a comunicação bidirecional entre cliente e servidor, o que significa que ambas as partes se comunicam e trocam dados ao mesmo tempo. A verdadeira concurrency e otimização de desempenho são os dois pontos-chave do WebSockets.

As vantagens de usar websockets incluem o seguinte:

  • bidirecional
    • Nenhum padrão de mensagem predefinido, cliente ou servidor pode enviar uma mensagem para a outra parte
  • Duplex Completo
    • Comunicação independente entre cliente e servidor
  • Conexão TCP única
    • Atualize a conexão HTTP, o cliente e o servidor se comuniquem pela mesma conexão TCP

Se compararmos webSockets com padrões de comunicação baseados em REST ou SOAP, os tempos de resposta do primeiro são muito melhores porque os WebSockets permitem o reaproveitamento da mesma conexão TCP. Pesquisas mostraram que os serviços baseados no WebSocket são até 10 vezes mais rápidos.

Para este teste, usaremos um ChatBot que responde a algumas perguntas básicas.

descrição

Captura de tela

Grave o script de teste para o seu aplicativo baseado no WebSocket

WebSockets registram script de teste

Projete o teste de carga para o aplicativo baseado no WebSocket

Crie o plano de teste e distribua a carga entre vários locais de teste.

Teste de carga de design do WebSockets

Execute o teste de carga para aplicação baseada no WebSocket

WebSockets executam teste de carga

Análise de resultados para aplicação baseada em WebSocket

Análise de resultados do WebSockets

Teste de carga com o plugin LoadView para Jenkins

O LoadView Plugin for Jenkins permite que as equipes de teste de desempenho incorporem facilmente testes reais de carga baseados em navegador em suas compilações de teste Jenkins. Isso garante que os aplicativos sejam continuamente testados e avaliados por períodos mais longos de tempo, permitindo que as equipes identifiquem e abdoram erros e gargalos antes que o código e os aplicativos sejam empurrados para a produção.

Descubra problemas de desempenho anteriormente e libere aplicativos mais confiáveis à produção integrando testes de desempenho do LoadView em seu processo de desenvolvimento de CI. Gere relatórios de teste abrangentes e obtenha insights sobre o desempenho do código.

Teste de carga de Jenkins
Leve seu teste de carga para o
Próximo Nível

Experimente recursos incomparáveis com escalabilidade ilimitada. Sem cartão de crédito, sem contrato.