Os testes de desempenho avaliam o desempenho do sistema ou da aplicação com cargas de diversos tamanhos.
Os principais critérios são velocidade (quão rápido funciona), estabilidade (se funciona sem travar), escalabilidade (quão suavemente as cargas crescentes são tratadas) e capacidade de resposta (quão rápido responde às prompts do usuário).
O conceito de desempenho do software está subjacente a todo o uso de computadores e o baixo desempenho pode destruir os melhores esforços de uma organização para proporcionar uma experiência de usuário de qualidade . Se os desenvolvedores não supervisionarem corretamente os testes de desempenho ou não executarem testes de desempenho com frequência suficiente, poderão introduzir gargalos de desempenho. Essa situação pode prejudicar a capacidade de um sistema de lidar até mesmo com as cargas de tráfego típicas durante períodos esperados. Torna-se ainda mais problemático quando momentos inesperados de pico de uso criam demanda adicional.
Esse desafio pode comprometer todas as operações de uma empresa voltadas para o público. Reputações de qualidade duradoura geralmente levam longos períodos para se desenvolverem. No entanto, podem ser danificados rapidamente e definitivamente quando o público começa a questionar se um sistema ou aplicação pode operar com funcionalidade confiável. A paciência do usuário final é cada vez mais um bem limitado. Portanto, como a reputação da empresa está frequentemente em jogo, há muita coisa em jogo quando as questões de desempenho são o assunto da conversa.
Boletim informativo do setor
Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.
Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.
Vamos primeiro definir a metodologia usada na maioria dos cenários de teste de desempenho. Seis etapas em várias partes definem o processo típico de teste de desempenho.
A primeira etapa do processo de teste de desempenho envolve a definição de parâmetros úteis, como a descrição das metas de desempenho da aplicação.
Em seguida, estabeleça o que constitui um critério de desempenho aceitável (como tempos de resposta , rendimento , utilização de recursos e taxas de erro ).
Esta etapa envolve também quando o pessoal identifica os principais indicadores de desempenho (KPI) para dar suporte adequado aos requisitos de desempenho e às prioridades do negócio.
Nem todos os testes devem ser usados em todas as situações. Os desenvolvedores ou outros testadores devem definir o que o teste deve analisar.
Começam identificando os principais cenários de uso e projetando casos de teste que reflitam as interações dos usuários no mundo real. O próximo passo é especificar os dados de teste e as cargas de trabalho que serão usados durante o processo de teste.
Depois de bloquear essas variáveis, os testadores selecionam ferramentas de teste de desempenho, os scripts de teste e as técnicas de teste a serem usadas. Essa etapa inclui a configuração do gating, o processo pelo qual portas de qualidade baseadas em código permitem ou negam o acesso a etapas de produção posteriores.
O teste de desempenho também examina a largura de banda para confirmar se as taxas de transmissão de dados conseguem lidar suficientemente com o tráfego de carga de trabalho.
Um último passo deve ser dado antes que o processo de teste de desempenho possa começar oficialmente. Os testadores criam um ambiente de teste que imita com precisão o ambiente de produção real do sistema e, em seguida, confirmam se as aplicações de software em teste (AUTs) foram implementadas no ambiente de testes.
A preparação final envolve a integração de ferramentas de monitoramento para capturar métricas de desempenho geradas pelo sistema durante o teste.
Com os parâmetros de teste agora claramente definidos, é hora de executar o teste de desempenho. Os testadores ou a automação de testes executam os cenários de teste escolhidos e esses testes são usados junto com as ferramentas de teste de desempenho.
Os testadores normalmente monitoram o desempenho do sistema em tempo real para poderem verificar a taxa de transferência, os tempos de resposta e o uso de recursos. Durante os cenários de teste, os testadores monitoram o sistema em busca de gargalos de desempenho ou outras estranhezas relacionadas ao desempenho refletidas nas métricas de teste.
Em seguida, os testadores avaliam os dados de desempenho que foram coletados durante o processo de teste. Eles analisam os dados coletados e buscam áreas de desempenho que precisam ser aprimoradas.
Em seguida, os testadores comparam esses resultados com benchmarks de desempenho estabelecidos como parte da primeira etapa do processo de teste. Por meio dessa comparação, os testadores podem ver onde os resultados do teste se desviam do desempenho esperado e onde podem ter ocorrido gargalos.
Depois de identificarem problemas de desempenho por meio da análise de dados de teste, os desenvolvedores trabalham com o código para atualizá-lo com o sistema. Utilizam otimizações de código, atualizações de recursos ou alterações de configuração para mitigar os problemas de desempenho citados.
Depois de implementar as alterações, os desenvolvedores repetem a sequência de teste de software para confirmar que aplicaram as alterações com sucesso. Os desenvolvedores repetem os procedimentos até que os resultados de desempenho se adéquem aos benchmarks definidos.
O teste de desempenho aprofunda nos detalhes técnicos para verificar a produção do sistema ou da aplicação, então faz sentido que as equipes de desenvolvimento de aplicações sejam os usuários mais comuns dos métodos de teste de desempenho. Esse primeiro grupo de usuários envolve os profissionais ativamente envolvidos no processo de desenvolvimento: desenvolvedores, engenheiros de garantia de qualidade (QA) e equipes de DevOps. Cada um obtém algo único do teste de desempenho:
O próximo grupo de usuários não são desenvolvedores, mas eles ainda trabalham no nível fundamental com o gerenciamento de desempenho do sistema como um componente importante de seus trabalhos:
Mas não é somente a gerência da empresa que realiza testes de desempenho. Muitas organizações e empresas também fazem uso frequente de testes de desempenho para diversos fins em empresas de todos os portes:
Os desenvolvedores realizam diversos tipos de testes de desempenho para obter tipos específicos de dados de resultados e apoiar uma determinada estratégia de teste. Veja a seguir os tipos de testes mais importantes.
O teste de carga indica o desempenho do sistema operando com cargas esperadas. O objetivo do teste de carga é mostrar o comportamento do sistema quando encontra cargas de trabalho com tamanho rotineiro sob condições normais de trabalho com números médios de usuários simultâneos.
Exemplo: Para um site de comércio eletrônico, um testador simula ser um usuário do site e passar pelas etapas de compra de itens, colocar produtos em carrinhos e pagar por essas compras.
O teste de carga mostra se o sistema pode suportar condições de carga regulares. A escalabilidade coloca esse sistema sob tensão, aumentando o volume de dados ou as cargas dos usuários que estão sendo tratadas. Ele mostra se um sistema pode atender a um ritmo mais acelerado e ainda assim cumprir o prometido.
Exemplo: na escala vertical, um desenvolvedor pode criar a CPU e a memória de um servidor de banco de dados para acomodar um volume maior de consultas de dados.
O teste de estresse é análogo a um teste de mergulho conduzido pela tripulação de um submarino. Aqui o sistema é levado ao seu limite operacional conhecido, e até mais longe, para determinar exatamente quanto o sistema pode suportar antes de atingir o ponto de ruptura.
Exemplo: o teste de failover é uma forma extrema de teste de estresse que começa com a simulação de falhas de componentes. O objetivo é ver quanto tempo leva para o sistema se recuperar e retomar a operação.
Aqui estamos testando um tipo diferente de estresse, quando o tráfego de usuários ou a transferência de volume de dados de repente experimenta um pico acentuado e drástico na atividade. O sistema deve absorver várias alterações enquanto continua as operações normais.
Exemplo: As empresas que administram sites precisam se preparar não apenas para interrupções, mas também para o aumento de usuários que tentam acessar o site simultaneamente quando está online novamente. Eles também devem avaliar se o sistema consegue lidar com esse aumento repentino na demanda. O teste de pico pode calcular a probabilidade de ocorrer sem problemas.
Às vezes com desempenho estamos discutindo o tráfego de usuários. Os testes de volume, por outro lado, preocupam-se com a forma como um sistema gerencia grandes quantidades de dados. O sistema pode processar os dados totalmente e oferecer armazenamento de dados sem degradação de dados?
Exemplo: uma clínica médica mantém grandes volumes de informações de pacientes e é legalmente obrigada a ter acesso a esses registros de pacientes e dados médicos relacionados. Esse fluxo constante de dados pode sobrecarregar um sistema. Os testes de volume permitem que os usuários saibam se o sistema está à altura do desafio de aceitar constantemente mais dados.
Pense nisso como um teste de desempenho de longo prazo. Os verdadeiros culpados procurados pelos testes de resistência (também conhecidos como testes de imersão) são a degradação dos dados e os problemas com vazamentos de memória, que geralmente ocorrem durante longos períodos.
Exemplo: as plataformas de redes sociais operam 24 horas por dia e o uso contínuo pode apresentar problemas na estabilidade da plataforma, no armazenamento de dados e nas contas de usuário. Os testes de resistência apresentam uma visão da operação atual e indicadores de desempenho futuro.
Desenvolvedores e testadores podem escolher entre inúmeras ferramentas projetadas para testes de desempenho. Veja alguns dos mais populares:
Assim como acontece com quase todos os assuntos relacionados a computadores, a inteligência artificial (IA) agora está elevando os testes de software a níveis totalmente novos de eficiência. Está tornando o processo geral de testes de desempenho mais rápido, mais preciso e mais fácil de automatizar.
Especificamente, a IA pode empregar ciclos de testes mais curtos, fazendo levar menos tempo para executar os testes. E por meio da grande precisão da IA, é capaz de perceber mudanças mais sutis no desempenho que poderiam passar despercebidas pelos testadores humanos. Além disso, por meio da análise preditiva de dados, a IA pode avaliar tendências operacionais e dados históricos e prever onde e quando gargalos podem ocorrer em seguida. Pode também aproveitar esse comportamento do sistema preditivo e até ajustar parâmetros de teste baseados nele.
Mas, de longe, o que a IA fez de mais significativo para testes de desempenho (até agora) é ajudar seus esforços em grande escala, permitindo a automação. Essa automação é notável por ser totalmente capaz de executar o processo de teste de desempenho — tudo isso.
A IA não apenas automatiza a forma como os testes são realizados, mas também pode escrever os scripts de teste destinados à execução. Além disso, pode interpretar os resultados do teste no back-end e oferecer orientação para corrigir situações problemáticas.
Um dos impactos mais interessantes e promissores da IA nos testes de desempenho é o uso cada vez maior da colaboração entre humanos e IA. Esse arranjo percebe que o instinto e o conhecimento humanos ainda têm um papel vital a desempenhar. Na verdade, em algumas situações, seguir os impulsos humanos ainda é a principal diretriz.
Alguns especialistas estão convencidos de que os testes de desempenho do futuro dependem dessa abordagem híbrida. Combina a mentalidade computacional e a capacidade de processamento com um senso humano de contexto e nuances.
Automatize a entrega de software para qualquer aplicação no local, na nuvem ou no mainframe.
Utilize softwares e ferramentas de DevOps para desenvolver, implementar e gerenciar aplicativos nativos da nuvem em diversos dispositivos e ambientes.
Libere novos recursos e aumente a agilidade dos negócios com os serviços de consultoria em nuvem da IBM. Descubra como cocriar soluções, acelerar a transformação digital e otimizar o desempenho por meio de estratégias de nuvem híbrida e parcerias especializadas.