Neste artigo, iremos examinar o que são os testes de desempenho a par dos muitos tipos e ferramentas disponíveis, os desafios e benefícios envolvidos nos testes de desempenho e muito mais. Este guia abrangente incluirá também uma análise de testes de desempenho automatizados, que se está a tornar mais comum à medida que a tecnologia avança ainda mais.
O que são testes de desempenho?
O teste de desempenho, por vezes abreviado para ‘perf testing’, é um processo realizado para identificar se um determinado produto irá executar bem os seus processos esperados sob diferentes cargas de trabalho. Isto pode tomar a forma de testes de desempenho do website ou testes de desempenho em testes de software, dependendo do produto envolvido.
Os testes de desempenho são principalmente concebidos para detectar parâmetros do produto que podem ser alterados no início do ciclo de vida do produto para evitar problemas maiores no futuro. Isto é muitas vezes referido como estrangulamentos de localização, o que se refere a um único componente que retém o desempenho global do software.
Os testes de desempenho podem ser realizados num laboratório ou num ambiente de produção e normalmente avaliam a velocidade, velocidade, escalabilidade, estabilidade, capacidade de resposta e fiabilidade do produto.
Os testes de desempenho são diferentes dos testes funcionais?
Os testes de desempenho são diferentes dos testes funcionais, que testam se certas funções de uma aplicação funcionam, tais como o botão “adicionar ao cesto” numa loja online.
Os testes de desempenho analisam o funcionamento de uma função sob muita pressão, por exemplo, será que o botão ainda funcionaria se muitas pessoas estivessem a adicionar ao cesto ao mesmo tempo?
Ambos estes tipos de testes estão sob o guarda-chuva de testes de desempenho API, o que significa que o seu objectivo é determinar o desempenho global da interface de um sistema em determinadas circunstâncias, a partir do backend do software. Há muitos tipos de ferramentas de teste de desempenho API que este artigo irá considerar, tais como testes de desempenho de modelos de carga de trabalho.
Porque é que precisamos de testes de desempenho?
Os testes de desempenho da Web são essenciais para que os criadores possam fornecer aos interessados informações fiáveis sobre o desempenho da aplicação e prever a forma como esta irá responder aos diferentes níveis de tráfego.
Os testes de desempenho também revelam o que precisa de ser melhorado antes de o produto chegar às prateleiras ou depois de ser colocado em funcionamento, evitando um desempenho lento, inconsistências e fraca usabilidade. Testa contra o número de utilizadores esperado para que se possa confiar no seu funcionamento conforme o esperado.
Vantagens dos testes de desempenho
Já mencionámos brevemente os benefícios dos testes de desempenho apenas através da identificação do que é, mas iremos analisar a seguir uma lista dos benefícios específicos dos testes de desempenho.
1. Informação realista
Como foi brevemente mencionado acima, os testes de desempenho são utilizados para fornecer aos interessados informações fiáveis e realistas sobre o modo como a aplicação irá funcionar. Sem isto, existe o risco de prejudicar a reputação da empresa envolvida.
Testes de desempenho precisos significam que podem ser fornecidos números fiáveis que, através do processo de teste, podem ser melhorados, o que significa que o produto pode ter uma vantagem sobre os diferentes produtos no mercado e apoiá-los com um desempenho fiável, resultando no aumento das vendas.
2. Permite a preparação
Os testes de desempenho podem ser utilizados para identificar onde podem ocorrer falhas de software quando há um elevado número de utilizadores, o que significa que a aplicação pode então ser optimizada para que estes problemas sejam resolvidos e possam resistir a uma utilização mais elevada. Isto é ideal para sites de comércio electrónico, por exemplo, que podem precisar de se preparar para eventos previsivelmente importantes como a Sexta-feira Negra.
A realização de testes de desempenho evita colisões enquanto o local se encontra em momentos críticos. Uma loja online que não consegue lidar com o número de utilizadores na Sexta-feira Negra, demorando demasiado tempo a carregar ou com falhas, é susceptível de perder grandes lucros.
3. Melhoria da experiência do utilizador
Os testes de desempenho devem ser realizados regularmente para que o website ou software de maior desempenho possa continuar a sua função esperada. Os testes de desempenho contínuo significam que quaisquer problemas que possam surgir em tempo real são resolvidos o mais rapidamente possível. A importância disto está enraizada na experiência do utilizador, mesmo fora dos grandes eventos que descrevemos acima.
Se o website for consistentemente de fácil utilização, com melhorias para garantir que nunca fica para trás, os clientes visitarão frequentemente.
4. Comparando
Os testes de desempenho também podem ser usados para comparar um produto com outro. Isto pode ser útil para um promotor que se dirige para uma indústria muito competitiva e quer assegurar-se de que está à altura ou pode superar o seu principal concorrente no mercado.
Isto pode ser utilizado como um ponto de venda para obter uma vantagem ou simplesmente como uma referência durante o processo de teste para garantir que a aplicação funciona suficientemente bem.
Desafios e limitações dos testes de desempenho
Embora haja claramente uma série de benefícios significativos, devido à sua natureza complexa existem alguns desafios e limitações dos testes de desempenho que iremos delinear a seguir.
1. Hora
Para colher todos estes benefícios, as organizações têm de estar dispostas a reservar o tempo para os testes de desempenho. Isto poderia incluir a instalação de hardware e infra-estruturas que não estavam à espera ou a dedicação de empregados a testes de desempenho.
Para que os testes de desempenho sejam minuciosos, não deve ser apressado, e algumas empresas podem ter dificuldade em pôr esse tempo de lado em vez de o lançar na fase seguinte do projecto, uma vez que pode levar a longos atrasos.
2. Dinheiro
Há investimentos dispendiosos que têm de ser feitos em testes de desempenho. O preço da ferramenta de teste de desempenho depende da escala do website ou do software, e se a organização opta por ferramentas de teste de desempenho manuais ou automatizadas.
Existem instrumentos de teste de desempenho gratuitos, mas têm uma funcionalidade limitada e não funcionam tão bem como os pagos.
Além disso, os testes de desempenho podem revelar problemas inesperados que requerem actualizações dispendiosas ou capacidade adicional do sistema que não foram inicialmente tidos em conta no orçamento.
Para as pequenas empresas, as ferramentas de teste de desempenho podem ser despesas que não estão dispostas a pagar, apesar do facto de poder afectar enormemente o seu desempenho a longo prazo.
3. Limitações das ferramentas
Pode haver limitações dependendo da ferramenta de teste de desempenho que um revelador opte por utilizar.
Como já mencionámos, optar por uma ferramenta gratuita de teste de desempenho poupa o orçamento, mas pode falhar em aspectos cruciais. Algumas ferramentas, mesmo as pagas, podem ter compatibilidade limitada, por exemplo, algumas podem apenas ser capazes de suportar testes de desempenho de websites ou um teste de desempenho de browser, e não ser capazes de testar o desempenho do software.
E, algumas ferramentas de teste de desempenho podem ter dificuldade em testar aplicações complexas ou muito grandes e exigir um acompanhamento atento por parte dos empregados.
Tipos de testes de desempenho
Existem múltiplos tipos de testes de desempenho que se referem aos métodos utilizados para testar o sistema. O método utilizado é escolhido com base na escala e no tipo de sistema a ser testado, bem como nos objectivos pretendidos pelos programadores.
Aqui, identificaremos os principais tipos de testes de desempenho utilizados e a forma como funcionam.
1. Testes de carga
As ferramentas de teste de desempenho de carga permitem aos programadores compreender como o sistema se comportaria sob um valor de carga pré-determinado e específico.
Este processo envolve a simulação do número esperado de utilizadores simultâneos ao longo de um período de tempo. Isto verifica os tempos de resposta esperados da aplicação e identifica potenciais estrangulamentos antes de o website ou o software entrar em funcionamento. Isto pode ser feito para testar se o sistema pode lidar com a utilização esperada em geral, ou para testar como uma funcionalidade específica poderia lidar, como o exemplo “adicionar ao cesto” que mencionámos acima. Isto é por vezes chamado “teste unitário”.
2. Testes de stress
O teste de esforço é outra forma de teste de desempenho do modelo de carga de trabalho e pode muitas vezes ser feito utilizando as mesmas ferramentas, mas empurra o local para aumentar a capacidade de teste até se quebrar em vez de ter um valor de carga limitado e determinado.
Isto utiliza um tráfego superior ao esperado para que os programadores possam descobrir qual é o seu ponto de falha e ver como lida com níveis elevados de processamento de dados. Isto ajuda os programadores a compreender a escalabilidade do software e mostra quanto tempo levam os indicadores-chave de desempenho (KPIs) a regressar aos níveis operacionais normais após um grande evento de dados.
Os testes de esforço podem ocorrer antes ou depois de um sistema entrar em funcionamento.
3. Testes com espigões
Este é um subconjunto de testes de stress, mas mais especificamente analisa o desempenho do sistema sob um aumento súbito e significativo de utilizadores finais. Estes testes de desempenho ajudam a determinar se o sistema poderia lidar com uma mudança abrupta nos utilizadores durante um curto período de tempo, repetidamente.
4. Testes de imersão
Este tipo de teste de desempenho é também conhecido como teste de resistência, e foi concebido para testar o desempenho a longo prazo de um sistema e a forma como este pode lidar com o tempo. Analisam o rendimento e os tempos de resposta após utilização a longo prazo para verificar se as métricas de desempenho são consistentes ao longo do tempo e se existem falhas.
O que devemos testar através de testes de desempenho?
O objectivo dos testes de desempenho é ser capaz de detectar problemas, mas saber o que os está a causar é o principal objectivo.
Ver abaixo uma lista das coisas que são testadas principalmente através de testes de desempenho.
1. Engarrafamentos
Os testes de desempenho devem estar sempre atentos aos estrangulamentos que estão a afectar o desempenho global do sistema. Isto pode estar relacionado com qualquer uma das métricas de teste de desempenho que listaremos na secção seguinte.
2. Tempos de carga
Isto significa a atribuição necessária para iniciar o pedido. O atraso deve ser o mais curto possível para oferecer a melhor experiência ao utilizador – qualquer coisa mais do que alguns segundos de tempo de carregamento pode mandar os utilizadores embora.
3. Tempos de resposta
Um mau tempo de resposta é quando o tempo que decorre entre um utilizador que introduz a informação e a resposta à acção é demasiado longo. Tal como tempos de carga excessivos, isto irá frustrar um utilizador e encorajá-lo a abandonar o site ou aplicação.
4. Escalabilidade
A escalabilidade de um sistema deve ser testada, o que significa a sua adaptabilidade a diferentes exigências de utilização de dados. A escalabilidade limitada seria identificada se o sistema pudesse funcionar bem com alguns utilizadores simultâneos mas, durante os testes de carga ou de stress, deteriora-se quando o número de utilizadores aumenta.
Métricas de teste de desempenho
Uma coisa é poder testar estas coisas e ver quando estão a correr mal, mas como é que são medidas exactamente?
Há inúmeras quantidades de métricas que os criadores utilizam para testes de desempenho, por isso seleccionámos as principais e demos uma breve descrição para elas abaixo.
1. Taxa de transferência
Isto indica quantas unidades de informação o sistema é capaz de processar ao longo de um tempo especificado.
2. Utilização da memória
Memória em termos de desenvolvimento de um website ou software significa o espaço de armazenamento de trabalho que está disponível para o processador ou carga de trabalho.
3. Largura de banda
Isto significa o volume de dados por segundo que pode mover-se entre cargas de trabalho, muitas vezes através de uma rede. A má largura de banda resulta em tempos de carregamento reduzidos.
4. Interrupções de CPU por segundo
Isto mede o impacto que o hardware tem no processo, medindo o número de interrupções de hardware que recebe por segundo.
Características de um teste de desempenho eficaz
Um bom teste de desempenho permitirá aos criadores agir sobre os erros, mas as características específicas de um teste de desempenho eficaz são mais específicas e difíceis de alcançar do que isto.
1. Testes realistas
Os melhores testes de desempenho são aqueles que antecipam cenários reais que o sistema pode encontrar.
Isto significa que pode ser optimizado para trabalhar em condições para as quais foi concebido, de modo a poder cumprir os seus objectivos de desempenho e não se deparar com problemas em momentos críticos.
2. Análise rápida
Os testes de desempenho óptimo permitem que sejam feitas alterações de acordo com os resultados o mais rapidamente possível.
Embora precise de ser exaustivo, os dados devem ser fáceis de analisar e ser realizados o mais rapidamente possível para que possam ser tomadas medidas. Isto é especialmente importante se os testes tiverem tido lugar após a aplicação ou local estar em directo.
3. Resultados de confiança
Embora a rapidez seja importante para optimizar o processo de teste de desempenho, os dados produzidos têm de ser fiáveis e precisos para que se possa tomar uma decisão correcta.
Para produzir análises fiáveis e rápidas, muitos estão a recorrer a testes de desempenho automatizados, que mais tarde entraremos em mais detalhes.
Processo de teste de desempenho
O processo de teste de desempenho será diferente para cada organização, dependendo dos factores já identificados.
No entanto, há seis passos principais que esboçam o que a maioria dos processos de teste de desempenho seguirá e que permitirão um resultado eficaz.
1. Estratégias de ensaio de desempenho
O primeiro passo para iniciar um processo de teste de desempenho é conhecer o ambiente de teste. Saber que ferramentas de teste tem disponíveis, incluindo uma decisão sobre se será realizada manualmente ou automatizada, e identificar potenciais estratégias de teste de desempenho.
Certifique-se de que compreende os detalhes de qualquer hardware e software envolvido, assim como de qualquer configuração de rede que será utilizada.
2. Critérios de desempenho
A seguir, é essencial identificar os objectivos do teste e os critérios de sucesso para os quais está a trabalhar, que serão diferentes para cada teste. Por exemplo, identificar restrições de produção, e tempos de resposta esperados e atribuir recursos.
Neste momento, pode ser benéfico identificar um sistema semelhante para comparar, a fim de estabelecer objectivos de desempenho.
3. Plano de teste de desempenho
Uma vez identificados os critérios, pode-se iniciar o planeamento e concepção do teste de desempenho.
Determinar que utilização a aplicação é susceptível de obter e cenários chave que pode simular para assegurar que o sistema responde adequadamente. Planeie os dados do teste de desempenho que pretende obter, como o irá obter e que métricas serão utilizadas.
4. Concepção do teste de desempenho
Uma vez terminado todo o planeamento, é possível começar a conceber e configurar fisicamente o ambiente de teste e organizar as ferramentas e recursos necessários.
Em seguida, criar os testes de desempenho de acordo com o desenho, prontos para que comecem a funcionar.
5. Teste
Este é o ponto onde o teste de desempenho será executado. É importante que acompanhe o processo à medida que este avança e crie registos que documentem os KPIs ao longo de todo o processo.
6. Análise e reensaio
Consolidar os resultados e iniciar o processo de análise.
Como se comparou com as suas expectativas, que métricas foram medidas e como é que o sistema reagiu? Em seguida, modificar o teste de desempenho e testar novamente para identificar melhorias ou diminuições no desempenho. As melhorias devem diminuir a cada novo teste.
Registar todos os resultados em curso.
Exemplos de testes de desempenho
Existem muitos cenários potenciais de testes de desempenho, dependendo do sistema a ser testado, da sua finalidade, das ferramentas utilizadas e do tipo de testes de desempenho.
Vamos revisitar o nosso exemplo do site de comércio electrónico.
Sítio de comércio electrónico
Os programadores podem desejar utilizar testes de desempenho de modelos de carga de trabalho para verificar que o tempo de resposta não é superior a três segundos quando 2000 utilizadores acedem ao sítio web ao mesmo tempo, utilizando um teste de carga.
O passo seguinte poderia ser verificar se o tempo de resposta ainda está dentro de um intervalo aceitável de cinco segundos quando a conectividade da rede é lenta.
Em preparação para a Sexta-feira Negra, os programadores podem utilizar um teste de stress para identificar o número máximo de utilizadores que o site pode acomodar antes de sofrer falhas como crashes ou tempos de resposta muito lentos. Durante isto, verificarão a memória e a utilização da CPU do website e como o servidor da base de dados está a reagir em condições de pico de carga.
Em seguida, irão voltar a testar todos estes parâmetros sob uma série de condições, talvez utilizando testes de pico ou testes de imersão para identificar a forma como irá responder ao longo de diferentes períodos de tempo.
Os desenvolvedores também utilizarão testes unitários da função “adicionar ao cesto”, por exemplo, testando como o sistema responderia a 100 utilizadores completando uma transacção de uma só vez.
Deve automatizar os testes de desempenho?
O teste de desempenho automatizado é o processo de permitir que ferramentas, software e código pré-fabricados executem o processo de automatização em vez de o realizarem manualmente.
A automação de testes de desempenho está a tornar-se indispensável nos tempos modernos, com algumas organizações a fazer uso da Robotic Process Automation e algumas até a avançar para a hiperautomação.
O software de automatização de testes de desempenho tem uma série de benefícios e desvantagens que iremos delinear a seguir.
Vantagens dos testes de desempenho automatizados
Os testes de desempenho removem muito do tempo e dinheiro que pode ser gasto a criar código de teste e a repeti-lo manualmente, aumentando a eficiência do ciclo de teste.
Também significa frequentemente que os programadores podem iniciar o teste de desempenho e passar a fazer outra coisa, em vez de o monitorizar constantemente, tornando possível o trabalho remoto e significando que os testes podem até ser executados durante a noite.
Além disso, como já mencionámos, devido à natureza da automatização, o processo de teste de desempenho não se torna apenas mais rápido, mas mais preciso e fiável, capaz de completar processos abrangentes sem o risco de erro humano.
Todos estes factores poupam naturalmente às empresas tempo e dinheiro valiosos, muitas vezes com um maior retorno do investimento.
Limitações dos testes de desempenho automatizados
Os testes de desempenho automatizados podem ter limitações sobre o que eles podem realisticamente alcançar. O input de um humano será frequentemente necessário para testes muito sofisticados, e para corrigir os erros que possam ocorrer com um processo automatizado.
A observação humana pode ser essencial para detectar falhas e ajudar a melhorar a experiência do cliente, o que não pode ser garantido com testes de automatização.
Os testes manuais são muitas vezes mais adequados para testes exploratórios, de usabilidade e ad hoc.
Conclusão: testes de desempenho manuais vs. automatizados
Para escolher entre testes de desempenho manuais e automatizados, é necessário avaliar de perto os seus critérios de desempenho e orçamento. Os testes de desempenho automatizados são muitas vezes mais fáceis de orçamentar e mais rápidos, especialmente para grandes necessidades de testes, mas os testes manuais podem encontrar problemas que um sistema automatizado não consegue.
Ferramentas de teste de desempenho
Existem muitos tipos de instrumentos de teste de desempenho, mas podem ser principalmente separados em duas categorias: Ferramentas de teste de desempenho API e ferramentas de teste de desempenho UI.
As ferramentas de teste de desempenho API analisam se os processos correctos estão a ser cumpridos no backend da aplicação. As ferramentas de teste de desempenho REST API são um tipo específico que realiza um teste de desempenho da web enviando vários pedidos HTTP/S.
Por outro lado, as ferramentas de teste de desempenho da IU testam o lado do cliente, o que significa que a experiência do utilizador é avaliada.
As melhores ferramentas para testes de desempenho são as que fazem ambas porque oferecem uma visão totalmente abrangente de se o sistema funciona. Para além disto, existem ferramentas gratuitas e software de automatização de testes de desempenho a nível empresarial, pago, portanto como decide?
Ferramentas de teste de desempenho gratuitas: benefícios e limitações
Há uma série de serviços gratuitos de testes de desempenho no mercado.
O benefício óbvio para estes é que abrem os testes de desempenho a empresas de menor dimensão ou a empresas em fase de arranque que podem não ter orçamento para pagar um instrumento de teste empresarial. Isto significa que podem aceder às capacidades básicas de teste de desempenho e editar o seu sistema em conformidade.
No entanto, as limitações do software gratuito de automatização de testes de desempenho são que muitas vezes não têm um desempenho tão bom como os pagos. As suas funcionalidades serão provavelmente limitadas, e será mais difícil desenvolver e manter os guiões.
As ferramentas de teste de desempenho gratuito podem não ser compatíveis com todas as plataformas ou tipos de teste ou podem não ter uma função de relatório. Algumas características podem estar bloqueadas atrás de um paywall, tais como o acesso a testes API.
Ferramentas de teste de desempenho de empresas: benefícios e limitações
As ferramentas de teste de desempenho de empresas são softwares concebidos para operar em toda uma empresa. Muitas vezes valem o seu preço na medida em que são compatíveis com muitos tipos de testes, línguas e plataformas para uma maior flexibilidade e escalabilidade.
A ferramenta de testes de desempenho empresarial é poderosa, pelo que pode realizar testes maiores num período de tempo inferior e vir com futuras actualizações de manutenção para melhorar o desempenho que as versões gratuitas não podem.
Contudo, as empresas podem não ter orçamento a reservar para estes serviços de teste de desempenho, especialmente para software que tem muitas características que não irão utilizar ou se o seu negócio for relativamente pequeno.
As ferramentas de teste de desempenho de empresas também podem ser mais difíceis de aceder e mais lentas de implementar do que as versões simples e gratuitas.
Contudo, as principais ferramentas de teste de software como o ZAPTEST mitigam esta limitação oferecendo um modelo de ferramenta + serviço. Desta forma, um perito ZAP trabalha de perto e à distância com a organização cliente (como parte da sua equipa), apoiando-os na implementação do plano de testes de desempenho, ferramenta ZAPTEST, e na optimização do processo de testes.
Quando deve utilizar ferramentas de teste de desempenho empresarial versus ferramentas de teste de desempenho gratuito?
Avalie as suas opções com base nas circunstâncias da sua organização. Por vezes pode ser mais rentável optar por uma versão gratuita que apresente as principais funcionalidades de que necessita, por exemplo, para um teste único de um website.
Se fizer parte de uma grande organização que possa beneficiar de um sistema de teste complexo e denso de dados que utilizará muitas vezes para diferentes sistemas, uma ferramenta de teste de desempenho empresarial será provavelmente a que mais o ajudará.
Lista de verificação de testes de desempenho
1. Orçamento
Para determinar a melhor ferramenta para testes de desempenho, é necessário ter um orçamento detalhado para poder identificar se pode pagar uma versão de nível empresarial ou outra versão paga.
Faça a sua investigação sobre as diferentes ferramentas disponíveis e tome a sua decisão com base nos seus critérios de desempenho e ambiente de teste.
2. Plano
Uma vez o seu orçamento em vigor, pode planear o processo de teste de desempenho, tal como escolher a melhor estratégia, decidir que critérios está a testar e decidir quais as métricas a utilizar.
O processo de planeamento deve ser minucioso quer se opte por testes de desempenho manuais ou automatizados.
3. Análise
Efectuar o teste de desempenho com análise atenta ao longo do teste e posteriormente.
Para que um teste de desempenho seja eficaz, é necessário ser capaz de agir da melhor forma possível, por isso, olhar atentamente para os dados e continuar a testar e analisar a vida do sistema.
Conclusão
Percorremos alguns dos tipos e ferramentas de testes de desempenho, bem como os principais benefícios e limitações dos testes de desempenho.
Os testes de desempenho continuam a ser especialmente importantes porque a utilização de sistemas e aplicações em linha não está a abrandar e está de facto a ganhar velocidade e ter um sistema que pode lidar com grandes quantidades de pressão é mais importante do que nunca face à enorme concorrência.
Para se manterem na vanguarda da inovação, as grandes empresas devem considerar os benefícios do software de automatização de testes de desempenho a nível empresarial e como o investimento no mesmo poderia beneficiá-las a longo prazo.