“Imagine a seguinte situação: você está em casa assistindo à televisão e vê um anúncio de uma loja online dizendo que há uma liquidação com descontos de até 80%. Imagine também que aquele produto que você tanto queria comprar também foi anunciado na promoção.
Você pega seu celular o mais rápido possível, digita a URL da loja (ou dá um Google), tenta acessá-la e então… o site não carrega! Você atualiza a página pensando que o problema é com a sua conexão, mas você continua vendo apenas o ícone de loading rodando e nada mais. Até que você se cansa de ficar esperando e desiste da compra.
A situação acima é mais comum do que você imagina e é um clássico exemplo de problemas de performance que afetam diversas aplicações web no mundo todo.
Uma das maneiras mais eficazes para a identificação e prevenção desses problemas é a realização de testes de performance. A seguir, vamos apresentar os principais conceitos relacionados a esse tipo de teste e como ele pode ajudar seu site.
Existe uma confusão de conceitos em relação aos testes de performance no mercado, onde muitas vezes os termos “performance”, “desempenho”, “carga” e “stress” são empregados de forma diferente. De maneira geral, todos esses termos fazem referência a testes que irão medir a performance de uma aplicação, porém cada um deles utiliza métodos diferentes para alcançar esse objetivo.
O termo “performance“ vem do francês antigo parformance (fazer, concluir) e foi incorporado à língua inglesa como “to perform” (realizar, completar). No âmbito da qualidade de software, quando uma medição de performance é realizada, o objetivo é entender como o software performa durante a realização de determinada tarefa, geralmente em termos de escalabilidade, recuperação de falhas e estabilidade. No Brasil, também é comum utilizarmos o termo desempenho.
Nesse artigo, vamos usar as classificações sugeridas pelo International Software Testing Qualifications Board (ISTQB), que utiliza como base a norma ISO 25000, o guia “Performance Testing Guidance for Web Applications” da Microsoft e o livro “The Art of Application Performance Testing: From Strategy to Tools”, do especialista em performance Ian Molyneaux.
Teste de performance (ou teste de desempenho) é um termo genérico para qualquer tipo de teste que tenha como foco a análise de performance de um sistema. Consiste em simular, num ambiente controlado e monitorado, um volume de transações ou usuários simultâneos, a fim de verificar como as aplicações, serviços, servidores, gateways e demais componentes da infraestrutura irão se comportar e se atenderão aos requisitos de desempenho definidos.
Os testes de performance são divididos em tipos, de acordo com seu objetivo. Os tipos mais comuns são:
Tipo de teste de performance que tem como objetivo verificar o desempenho de um sistema quando este é submetido a cargas variáveis de usuários ou transações. Por exemplo, podemos executar um teste de carga em uma aplicação web simples, partindo de 100 usuários simultâneos e adicionar novos usuários a cada 5 minutos, totalizando 1000 usuários ao final do teste. Dessa maneira, é possível analisar como todo o ecossistema da aplicação se comporta nesse período, se houve lentidão em algum momento do teste, se o uso CPU e memória dos servidores ficou dentro do limite estabelecido, dentre outros indicadores de desempenho.
Parecido com o teste de carga, esse tipo de teste tem como objetivo identificar os limites da aplicação, ou seja, quantos usuários simultâneos ou chamadas por segundo a aplicação é capaz de suportar dentro dos parâmetros de qualidade definidos.
Tem como objetivo verificar a performance de um sistema quando este é submetido a cargas que estão no limite ou acima do limite especificado inicialmente. Ou seja, se é especificado que a aplicação deve suportar 1000 usuários simultâneos, o teste de stress aplica cargas a partir deste valor. Dessa maneira, é possível coletar informações de como a aplicação se comporta em condições extremas, muitas vezes com poucos recursos computacionais disponíveis, identificar se há indisponibilidades no servidor ou se ocorre lentidão que pode prejudicar a experiência do usuário final.
O ISTQB também classifica os testes de performance em testes de escalabilidade (foco na capacidade do sistema de escalar, sem perder performance), testes de resistência (foco em verificar a performance em longos períodos de tempo) e testes de concorrência (foco em jornadas com concorrência por recursos).
Segundo estudo da Akamai em 2017, um delay de 100 milissegundos no carregamento das páginas de um e-commerce acarreta em uma queda de até 2,4% na taxa de conversão em plataformas desktop e 7,1% em plataformas mobile.
Fonte: The State of Online Retail Performance – Akamai and Soasta (2017). Adaptado.
Saber como sua aplicação está hoje ajuda a criar uma baseline de tempos de resposta. Dessa maneira, fica fácil saber quando houve uma nova implementação que passou a degradar a performance.
Além disso, muitos problemas de performance só ficam visíveis quando o sistema está sob estresse. Com os resultados coletados durante o teste, os responsáveis pela aplicação podem identificar os gargalos que impactam na performance de todo o ecossistema, seja de software, hardware ou configuração.
Se sua empresa está preparando uma grande promoção ou vai participar da Black Friday, é importante estar preparado para um grande volume de acessos.
Certificar que a aplicação atende a requisitos mínimos de desempenho
Existem aplicações em que o tempo de resposta é um elemento crucial. Em aplicações financeiras que possuem comunicação com a bolsa de valores, por exemplo, os investidores desejam que suas transações de compra e venda sejam processadas o mais rápido possível, sob pena de perderem grandes oportunidades.
Além disso, muitas empresas e o próprio governo exigem que o software atenda a requisitos mínimos de desempenho antes de realizarem uma aquisição, e essa validação pode ser realizada através de testes de performance.
Testes de performance podem oferecer insumos para a tomada de decisão sobre diversos elementos da aplicação e do negócio. Por exemplo:
identificar se o balanceamento de carga está ocorrendo de maneira correta ou se há problemas na configuração;
Os testes de performance coletam diversas métricas que, ao serem cuidadosamente analisadas, geram indicadores de desempenho para a aplicação. As métricas são coletadas, principalmente, através das seguintes ferramentas:
Para gerar indicadores válidos, o especialista em testes de performance realiza um cruzamento das métricas coletadas, a fim de identificar os gargalos e pontos de melhoria. É importante observar que os indicadores devem ser analisados em conjunto, a fim de que sejam evitados falsos-positivos (que geram custos de infraestrutura desnecessários) ou falsos-negativos (onde os problemas de performance não são identificados).
Uma métrica comum coletada nos testes de performance é o tempo de resposta das requisições. Se o tempo de resposta de uma requisição está alto, pode significar que essa requisição possui um problema de desempenho. Porém, essa métrica deve ser analisada em conjunto com outras métricas coletadas, como o uso de recursos dos servidores (uso de CPU, memória, rede), pois recursos insuficientes costumam impactar diretamente o tempo das requisições.
Após a análise de performance, os seguintes indicadores podem ser fornecidos:
Manter a performance de uma aplicação em baixas e altas demandas depende de um processo de qualidade contínuo. As medições regulares de performance oferecem insumos para a tomada de decisão dos gestores, além de aumentar a confiança da equipe de desenvolvimento em relação às suas entregas.”
Para se aprofundar no assunto e aprender sobre as técnicas de teste é importante que o profissional se certifique para que desempenhe seu trabalho com eficiência e siga os padrões internacionais estabelecidos para a realização de teste de software.
Por: André Iguera
Fonte: https://blog.onedaytesting.com.br/testes-de-performance/
Comentários