Você se lembra de suas primeiras experiências conversando com seus amigos em aplicativos de redes sociais como o Orkut (sim, lembra-se dessa?) e se sentindo todo obcecado em poder enviar e receber mensagens em tempo real. Avançamos até agora, onde usamos aplicativos como Gmail, Slack, WhatsApp, Shazam, Instagram e inúmeros outros, sem rebater nenhum olho. Nós realmente testemunhamos o surgimento da web em tempo real em apenas uma questão de anos. Uma das maiores razões para isso ter sido possível deveu-se principalmente à introdução do protocolo WebSocket. Vamos tentar explicar e entender o que são websockets, seus recursos, benefícios e como estressar aplicativos de teste e sites que utilizam WebSockets para entender o desempenho geral sob estresse, bem como como isso impacta a experiência do usuário.

 

O que são WebSockets?

Por definição, um WebSocket é um protocolo de comunicação de computador bidirecional sobre um único TCP. O WebSockets ajuda imensamente a lidar com transferências de dados de alta escala entre o cliente e o servidor. Os WebSockets são diferentes porque funcionam mantendo a conexão entre cliente e servidor abertos o tempo todo. Usando esse método, o servidor tem o poder de enviar informações a qualquer momento, mesmo quando não foi iniciado pelo cliente. Os clientes ainda podem fazer solicitações HTTP usuais para o servidor, enquanto os WebSockets abrem um meio entre cliente e servidor para se comunicar. Servidores da Web, como Nginx, Apache e Windows Server, todos suportam o protocolo WebSockets, assim como todos os navegadores populares, como Chrome, Edge, Internet Explorer, Firefox e Safari.

 

Onde são usados websockets?

WebSockets são bons para situações em que você precisa de comunicações em tempo real, como os seguintes cenários e aplicativos:

  • Jogos multiplayer online
  • Aplicativos de bate-papo
  • Internet das coisas
  • Aplicações em tempo real
  • Pontuações/tickers esportivos

 

Vantagens e Benefícios do WebSockets

  • Conexão Contínua entre cliente e servidor. Torna viável enviar informações ao cliente a qualquer momento, mesmo sem o cliente solicitá-la.
  • Comunicação duplex completa. A comunicação pode ser iniciada de qualquer maneira a qualquer momento, tanto o cliente quanto o servidor estão conectados.
  • Baixa Latência. Como há uma sobrecarga muito limitada de cabeçalhos HTTP, cookies, etc., torna a velocidade com que as transferências de dados são perfeitas e rápidas.
  • HTTP Pesquisa. Isso pode ajudar os clientes a continuar pesquisando no servidor para obter informações mais recentes. A pesquisa é usada por um grande número de aplicativos hoje em dia e na maioria das vezes é usada para práticas RESTful.

 

Desvantagens dos WebSockets

  • WebSockets são mais complexos de usar do que HTTP. Podemos estabelecer uma conexão HTTP com um Telnet, mas não podemos fazer o mesmo com websockets.
  • O balanceamento de carga e a configuração de proxy com WebSockets não são possíveis.
  • Se entre as quedas de conexão, o manuseio de re-conexão não está presente no WebSockets.

 

Aplicativos de teste de desempenho que usam websockets

Como vimos, os WebSockets podem ser utilizados para suportar um aplicativo de bate-papo ou um feed de notícias que fornece conteúdo em tempo real em um site, por exemplo, mas pode ter problemas de desempenho que podem afetar a experiência geral do usuário se implementados corretamente. Para proteger isso, seria prudente executar testes de carga e estresse em nosso site ou aplicativo para encontrar quaisquer problemas de desempenho, gargalos ou problemas de degradação. Quando colocamos aplicativos contra um alto número de usuários simultâneos, podemos ter uma ideia melhor do que o usuário experimentará.

 

Teste de desempenho com LoadView usando o gravador web EveryStep

O EveryStep Web Recorder oferece uma opção de gravador de tela enquanto você está navegando e ajuda você a simular as interações do lado do cliente com sites e aplicativos. Ele suporta mais de 40 navegadores desktop e móveis, além de frameworks e tecnologias que são usadas para criar aplicativos web dinâmicos, como HTML5, Java, Ruby, React, Vue, Angular e Knockout, apenas para citar alguns. Essencialmente, se ele renderiza em um navegador, o EveryStep Web Recorder pode ser usado para criar um script. Podemos gravar cada etapa de nossa transação web simplesmente navegando através do nosso aplicativo como um usuário faria e, em seguida, reproduzir esses scripts em navegadores reais. Finalmente, podemos pegar esse script e testar os passos e cenários que acabamos de gravar sob carga para ter uma melhor ideia de desempenho sob várias cargas de trabalho.

Vejamos as etapas e os processos usados para gravar scripts usando o EveryStep Web Recorder e, em seguida, executando um teste de carga usando o LoadView.

Abra a página inicial de teste do LoadView. Você verá vários tipos de opções de teste de carga que estão disponíveis como mostrado na imagem abaixo. Para o nosso caso de uso, vamos selecionar a opção Aplicativo Web para começar a registrar a jornada do usuário.

criar novo aplicativo web de teste de carga

 

Teríamos uma opção para gravar novo script. Insira o URL do site, o tipo de navegador e o tipo de dispositivo do usuário para o aplicativo que queremos que nosso teste de estresse seja executado e registre nosso caso de teste. Clique no botão Gravar agora após adicionar detalhes.

 

Websocket EveryStep

 

Clicar no botão Gravar Agora permitirá que você interaja com o site em teste e regissão etapas que queremos simular. Teríamos a opção de interromper a gravação assim que o fluxo do usuário for concluído.

 

Navegador de registro de websocket

 

Depois de gravar com sucesso nosso script, podemos rever nosso cenário de teste usando. Selecione o botão Jogar Agora ou podemos avançar para testar clicando no botão Continuar.

 

Cada gravação de passo parou

 

Clicar em Continuar nos redirecionaria para a janela Criar teste com o script de ações simuladas pronto. Podemos nomear nosso teste neste vídeo e depois precisaríamos clicar no botão Criar dispositivo.

 

Janela de cenário de teste do Websocket

 

Uma vez criado com sucesso um dispositivo, veríamos a tela do Cenário de Teste, onde podemos definir o tipo de curva de carga,que pode diferir com base nos objetivos do teste de carga. A imagem abaixo mostra as curvas de teste de carga que o LoadView disponibiliza para desenvolvedores e testadores de desempenho.

Cenário de teste de websocket

 

Depois de selecionar a curva de carga, você pode iniciar a execução do teste com o número de usuários simultâneos e a duração do teste. Você também pode escolher entre mais de 20 geolocalizações para executar testes, garantindo que você esteja medindo e testando o desempenho de onde seus usuários estão localizados.

Uma vez que o teste esteja concluído, você pode visualizar os resultados do teste, juntamente com métricas associadas. Um exemplo disso é mostrado nas imagens abaixo.

Websockets tempo médio de resposta

 

Número médio de usuários tempo médio de resposta

Número médio paralelo de usuários com gráfico de tempo médio de resposta.

 

Número de websockets de usuários virtuais

Resumo: Teste de carga aplicativos baseados no WebSocket

Como vimos neste artigo com tecnologias inovadoras, como WebSockets, e os novos desafios que ele aborda, há muitos problemas operacionais que os desenvolvedores podem enfrentar ao usar WebSockets como sua solução em tempo real. Os testes de carga nesses aplicativos são imperdíveis e nos ajudam a estimar o comportamento da nossa aplicação em tempo real sob carga. Também passamos, passo a passo, sobre como testar um aplicativo baseado no WebSocket usando o LoadView, juntamente com o EveryStep Web Recorder, que pode ser extremamente útil para descobrir grandes problemas inerentes à arquitetura WebSocket.

Experimente o EveryStep Web Recorder agora e veja como é fácil começar a roteirizar cenários complexos de usuários. Inscreva-se para a avaliação gratuita do LoadView e comece a executar testes de carga para seus aplicativos baseados no WebSocket. Você receberá até 5 testes de carga livre. Ou agende sua própria demonstração com um de nossos engenheiros de desempenho.